本帖最后由 话痨司机啊 于 2023-7-15 07:51 编辑
演示视频:https://www.bilibili.com/video/BV1Zu411j7Mz/如遇到问题请仔细阅读说明,有报错请联系楼主
如遇到问题请仔细阅读说明,有报错请联系楼主
如遇到问题请仔细阅读说明,有报错请联系楼主
说明
西瓜视频下载现在有两部分不同源码,电视剧电影纪录片可以使用此下载器,其他短视频未测试,如果报错可以点击此链接使用我写的另一个西瓜下载器 ->"https://www.52pojie.cn/thread-1746516-1-1.html"
支持的URL地址格式:
// urls.txt
# 每行一个url
https://www.ixigua.com/7186085881726370363
https://www.ixigua.com/7186085881726370363?id=7188812014792213029&logTag=3e22e05fa24917c3eb2b
https://www.ixigua.com/7186085881726370363?id=7188812014792213029
声明
软件仅供学习交流使用,禁止商业使用,禁止用来做危害网络安全的事情,因错误使用造成的危害由使用者负责。
源码运行环境
- windows 11/windows 10
- python3.10
- 关于python模块请自行安装
- 需要安装edge浏览器
更新
- 4月7日 更新进度条(原来的进度条是简易的,我手搓了一个新的,比较实用可以显示下载的状态速度等)
- 4月14日 更新GUI界面
- 6月21日 代码重构
优点
- 可选择画质下载
- 根据电脑的CPU核数自动生成线程数
- 多线程下载
缺点
下载地址
点此下载 提取码:myxi
[Python] 纯文本查看 复制代码 # 核心代码(*喜欢研究的可以看这里*)
class XiGua:
"""西瓜下载API"""
def __init__(self, url: str):
self.main_url = url
self.app_url_num = url.rsplit('/', 1)[-1]
self.api_headers = {'referer': url}
self.main_headers = {
'cookie': utils.read_cookies(),
'referer': url,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.62'
}
self.base_url = 'https://www.ixigua.com/api/albumv2/details?albumId='
self.url = self.base_url + self.app_url_num
self.title = ''
self.video_list: list = []
def get_json(self):
response_json = requests.get(self.url, headers=self.api_headers).json()
for i, v in response_json['data']['videoResource']['normal']['video_list'].items():
mv = MateVideo()
# 画质 base64url
mv.videoinfo[v.get('definition', "unfound")] = v.get("backup_url_1", "unfound")
self.video_list.append(mv)
def get_title(self, trynum=3):
try:
response = requests.get(self.main_url, headers=self.main_headers)
response.encoding = 'utf8'
html = etree.HTML(response.text)
title = html.xpath(request_parmas.title_xpath)[0]
if title:
self.title = title
logger.logger.info(f'获取标题:{title}')
else:
raise ValueError('cookies 过期')
except:
logger.logger.warning("cookies已经过期,请刷新页面,重新获取cookies并粘贴,下载时请勿关闭页面")
utils.check_cookie()
if trynum > 0:
self.get_title(trynum - 1)
else:
logger.logger.error("重试次数耗尽,请重新运行此程序")
raise ValueError
效果图:
2023年6月21日测试:
如遇到问题请仔细阅读说明,有报错请联系楼主
如遇到问题请仔细阅读说明,有报错请联系楼主
|