卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章11201本站已运行3223

Python 西瓜视频之电视剧电影纪录片下载V3.0

西瓜视频下载现在有两部分不同源码,电视剧电影纪录片可以使用此下载器,其他短视频未测试
支持的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
注意
第一次下载可能需要手动粘贴cookies,下载过程请勿关闭西瓜下载页面(具体cookies获取方法请百度)

声明
软件仅供学习交流使用,禁止商业使用,禁止用来做危害网络安全的事情,因错误使用造成的危害由使用者负责。

源码运行环境
windows 11/windows 10
python3.10
关于python模块请自行安装
更新
4月7日 更新进度条(原来的进度条是简易的,我手搓了一个新的,比较实用可以显示下载的状态速度等)
优点
自动检查Cookie是否过期
可选择画质下载
根据电脑的CPU核数自动生成线程数
多线程下载
缺点
无UI界面

# 核心代码(*喜欢研究的可以看这里*)
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
下载地址
https://www.123pan.com/s/E3kbVv-TRRBH.html 提取码:myxi
卓越飞翔博客
上一篇: Java Spring boot 接收POST请求以及验证 JSON 数据有效性
下一篇: Python 电脑自动关机
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏