吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9711|回复: 48
收起左侧

[Python 转载] python开发安卓App实战项目:西瓜视频解析工具

  [复制链接]
漁滒 发表于 2020-9-25 13:26
本帖最后由 aiai 于 2020-9-25 13:29 编辑

python要开发app就要用到kivy的模块,关于kivy开发环境的安装网上非常多,就不多说了。
整个开发过程主要涉及布局和事件两个方面,首先是关于布局方面
[Python] 纯文本查看 复制代码
# 初始化部件
urlinput = TextInput(
            text="",
            size_hint=(1, 0.1),
            pos_hint={'x': 0, 'y': 0.9},
            hint_text="请输入链接地址"
        )

cookieinput = TextInput(
            text="",
            size_hint=(1, 0.1),
            pos_hint={'x': 0, 'y': 0.8},
            hint_text="请输入cookie"
        )

rundobutton = Button(
            text="解析",
            size_hint=(0.33, 0.08),
            pos_hint={'x': 0, 'y': 0.72},
            on_release=dorun
        )

doemptyurlbutton = Button(
            text="清空地址",
            size_hint=(0.33, 0.08),
            pos_hint={'x': 0.33, 'y': 0.72},
            on_release=cleanurl
        )

doemptycookiebutton = Button(
            text="清空帐号",
            size_hint=(0.34, 0.08),
            pos_hint={'x': 0.66, 'y': 0.72},
            on_release=cleancookie
        )

nextdobutton = Button(
            text="下一集",
            size_hint=(0.33, 0.08),
            pos_hint={'x': 0, 'y': 0.64},
            on_release=donext
        )

alldobutton = Button(
            text="全集",
            size_hint=(0.33, 0.08),
            pos_hint={'x': 0.33, 'y': 0.64},
            on_release=doall
        )

copybutton = Button(
            text="复制到剪切板",
            size_hint=(0.34, 0.08),
            pos_hint={'x': 0.66, 'y': 0.64},
            on_release=copytext
        )

resultinput = TextInput(
            text="解析结果",
            size_hint=(1, 0.64),
            pos_hint={'x': 0, 'y': 0}
        )

主要是设置每个部件的大小和位置,对于输入框设置文字和默认文字,对于按钮,设置点击事件的回调函数
设置好布局以后,就可以编写每个事件的逻辑了
[Python] 纯文本查看 复制代码
# 设置按钮部件的事件
def cleanurl(arg):
    urlinput.text = ""

def cleancookie(arg):
    cookieinput.text = ""

def dorun(arg):
    # 设置响应的回调方法
    def success(requests, results):
        if results['code'] == '0':
            resultinput.text = '解析结果\n'
            for video in results['video_list']:
                resultinput.text += results['video_title']+' '+str(video['vwidth'])+'X'+str(video['vheight'])+' '+video['definition']+' '+str(int(video['size']/1024/1024))+'MB '+video['codec_type']+'\n'
                resultinput.text += base64.b64decode(video['main_url'].encode()).decode()+'\n'
        else:
            resultinput.text = '解析结果 '+results['message']

    def error(requests, errors):
        resultinput.text = '解析结果 '+str(errors)

    # 请求解析结果
    url = urlinput.text
    headers = {'cookie': cookieinput.text.replace('\n', '').strip()}
    apiurl = 'http://106.55.157.247:80/geturl/?url=' + url
    UrlRequest(url=apiurl, req_headers=headers, on_success=success, on_error=error)

def donext(arg):
    pass

def doall(arg):
    pass

def copytext(arg):
    resultinput.copy(data=resultinput.text)

在解析部分,因为涉及某些问题,所以将部分逻辑放到我自己的服务器上通过kivy提供的UrlRequest类来进行通信
同时需要为这个请求绑定成功和失败的两个回调函数
还有一个问题是因为kivy默认是不能显示中文的,所以还需要导入中文字体
[Python] 纯文本查看 复制代码
# 加载中文字体
resource_add_path(os.path.abspath('.'))
LabelBase.register('Roboto', 'DroidSansFallback.ttf')

最后就是构件一个app实例,将设置的部件添加进去,下面是完整代码
[Python] 纯文本查看 复制代码
import os
import base64

from kivy.app import App
from kivy.network.urlrequest import UrlRequest
from kivy.uix.floatlayout import FloatLayout
from kivy.resources import resource_add_path
from kivy.uix.textinput import TextInput
from kivy.core.text import LabelBase
from kivy.uix.button import Button

# 加载中文字体
resource_add_path(os.path.abspath('.'))
LabelBase.register('Roboto', 'DroidSansFallback.ttf')

# 设置按钮部件的事件
def cleanurl(arg):
    urlinput.text = ""

def cleancookie(arg):
    cookieinput.text = ""

def dorun(arg):
    # 设置响应的回调方法
    def success(requests, results):
        if results['code'] == '0':
            resultinput.text = '解析结果\n'
            for video in results['video_list']:
                resultinput.text += results['video_title']+' '+str(video['vwidth'])+'X'+str(video['vheight'])+' '+video['definition']+' '+str(int(video['size']/1024/1024))+'MB '+video['codec_type']+'\n'
                resultinput.text += base64.b64decode(video['main_url'].encode()).decode()+'\n'
        else:
            resultinput.text = '解析结果 '+results['message']

    def error(requests, errors):
        resultinput.text = '解析结果 '+str(errors)

    # 请求解析结果
    url = urlinput.text
    headers = {'cookie': cookieinput.text.replace('\n', '').strip()}
    apiurl = 'http://106.55.157.247:80/geturl/?url=' + url
    UrlRequest(url=apiurl, req_headers=headers, on_success=success, on_error=error)

def donext(arg):
    pass

def doall(arg):
    pass

def copytext(arg):
    resultinput.copy(data=resultinput.text)

# 初始化部件
urlinput = TextInput(
            text="",
            size_hint=(1, 0.1),
            pos_hint={'x': 0, 'y': 0.9},
            hint_text="请输入链接地址"
        )

cookieinput = TextInput(
            text="",
            size_hint=(1, 0.1),
            pos_hint={'x': 0, 'y': 0.8},
            hint_text="请输入cookie"
        )

rundobutton = Button(
            text="解析",
            size_hint=(0.33, 0.08),
            pos_hint={'x': 0, 'y': 0.72},
            on_release=dorun
        )

doemptyurlbutton = Button(
            text="清空地址",
            size_hint=(0.33, 0.08),
            pos_hint={'x': 0.33, 'y': 0.72},
            on_release=cleanurl
        )

doemptycookiebutton = Button(
            text="清空帐号",
            size_hint=(0.34, 0.08),
            pos_hint={'x': 0.66, 'y': 0.72},
            on_release=cleancookie
        )

nextdobutton = Button(
            text="下一集",
            size_hint=(0.33, 0.08),
            pos_hint={'x': 0, 'y': 0.64},
            on_release=donext
        )

alldobutton = Button(
            text="全集",
            size_hint=(0.33, 0.08),
            pos_hint={'x': 0.33, 'y': 0.64},
            on_release=doall
        )

copybutton = Button(
            text="复制到剪切板",
            size_hint=(0.34, 0.08),
            pos_hint={'x': 0.66, 'y': 0.64},
            on_release=copytext
        )

resultinput = TextInput(
            text="解析结果",
            size_hint=(1, 0.64),
            pos_hint={'x': 0, 'y': 0}
        )

# 使用浮动布局
class IndexPage(FloatLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        # 添加部件
        self.add_widget(urlinput)
        self.add_widget(cookieinput)
        self.add_widget(rundobutton)
        self.add_widget(doemptyurlbutton)
        self.add_widget(doemptycookiebutton)
        self.add_widget(nextdobutton)
        self.add_widget(alldobutton)
        self.add_widget(copybutton)
        self.add_widget(resultinput)

class TestAPP(App):
    # 重写build方法
    def build(self):
        # 返回一个布局实例
        return IndexPage()

if __name__ == '__main__':
    # 启动APP
    TestAPP().run()

软件启动界面
S00925-13233373.png

解析成功界面
S00925-13235643.png


软件下载地址:https://www.lanzoux.com/b00zu3v5a

已知问题
1.下一集和全集按钮事件还没有编写逻辑,点击后暂无反应
2.cookie内容无法保存,退出软件后需要重新输入

免费评分

参与人数 12吾爱币 +14 热心值 +9 收起 理由
扬州八怪 + 1 + 1 谢谢@Thanks!
太上老君 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
eldenring + 1 用心讨论,共获提升!
f250907 + 1 + 1 热心回复!
huazai_xp + 1 热心回复!
pwp + 3 + 1 我很赞同!
wyyynioo + 1 + 1 谢谢@Thanks!
永昌 + 1 谢谢@Thanks!
闻经获益 + 1 + 1 谢谢@Thanks!
Zeaf + 1 + 1 我很赞同!
Menguy + 1 + 1 用心讨论,共获提升!
Hacker_Xi + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

倔强的丫头 发表于 2020-9-25 14:47
aiai 发表于 2020-9-25 14:39
点击复制到剪切板就可以复制全部内容,你输入的链接是什么发我看看

http://v6-default.ixigua.com/cc5772c930c3a442cd37c9b6c9b40053/5f6d9785/video/tos/hxsy/tos-hxsy-ve-26/d457026e002b4f958275f2580ecd3c0c/?a=0&br=4422&bt=1474&cr=1&cs=&cv=1&dr=0&ds=4&er=&l=202009251323530101290490782E060381&lr=&mime-type=video_mp4&qs=0&rc=aGRmaWhpOWYzZ2hoNTY3M0ApO2UzNDU4Zjs1Nzo0ZGVmaGc1MWIzYjJjNmExNF81Li9jczAtMjQwLzQwMWIyMWIzYC46Yw%3D%3D&vl=&vr=
倔强的丫头 发表于 2020-9-25 15:15
aiai 发表于 2020-9-25 14:53
我这里正常,说明你的播放器没有H265的解码,安装一个即可。或者你直接下载H264的

哦哦 明白了  刚试了下  QQ浏览器不支持  360的支持    不知道这个链接是不是永久的?能长期调用吗  会不会验证cookies 判断ua之类的恶心东西
Xw丶小威 发表于 2020-9-25 13:41
sdlyfxjjc 发表于 2020-9-25 13:49
感谢分享,论坛有你更精彩!!!
q130918 发表于 2020-9-25 13:55
看着很厉害的样子,真羡慕啊。
想学爬虫来,一直没静下心来
pjhq1987 发表于 2020-9-25 13:59
解析出来后可以下载视频吗?
 楼主| 漁滒 发表于 2020-9-25 14:13
pjhq1987 发表于 2020-9-25 13:59
解析出来后可以下载视频吗?

解析出来后复制链接到下载软件就可以下载了
倔强的丫头 发表于 2020-9-25 14:32
aiai 发表于 2020-9-25 14:13
解析出来后复制链接到下载软件就可以下载了

使出洪荒之力把截图中的第二集url拼写出来 直接放在浏览器 能播放 但却是 黑屏的   然后下载下来播放 依然是黑屏的 声音正常 就是没有画面
 楼主| 漁滒 发表于 2020-9-25 14:39
倔强的丫头 发表于 2020-9-25 14:32
使出洪荒之力把截图中的第二集url拼写出来 直接放在浏览器 能播放 但却是 黑屏的   然后下载下来播放 依 ...

点击复制到剪切板就可以复制全部内容,你输入的链接是什么发我看看
 楼主| 漁滒 发表于 2020-9-25 14:53
倔强的丫头 发表于 2020-9-25 14:47
http://v6-default.ixigua.com/cc5772c930c3a442cd37c9b6c9b40053/5f6d9785/video/tos/hxsy/tos-hxsy-ve- ...

我这里正常,说明你的播放器没有H265的解码,安装一个即可。或者你直接下载H264的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 07:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表