Python下载vip视频

Mr.Song2020年8月11日
大约 2 分钟

Python

python下载腾讯,爱奇艺,优酷,土豆vip视频
......

  • 第一步打开腾讯/爱奇艺/优酷/土豆,点击vip视频播放。

  • 第二步复制网站视频播放的地址。

  • 第三步打开全民vip视频在线解析(其他视频解析也行),粘贴视频地址,点击开始视频解析。

  • 第四步解析成功之后,按下F12,你会看到如下图所示。

  • 这些规律性文件都是由固定字符串+递增数字+.ts后缀组成,而这些文件连接起来就是整个视频。
  • 第五步,上代码,下载这些ts文件。

import requests
from queue import Queue
import threading
import time
start = time.process_time()

# 创建线程 生产者负责获取URL,并且解析URL


class Procuder(threading.Thread):
    headers = {
        'user-agent': 'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)'
                      'Chrome/76.0.3809.132 Safari/537.36'
    }

    def __init__(self, num_queue, ts_queue, *args, **kwargs):
        super(Procuder, self).__init__(*args, **kwargs)
        self.num_queue = num_queue
        self.ts_queue = ts_queue

    def run(self):
        while True:
            if self.num_queue.empty():
                # 如果队列为空就,线程执行完成,跳出死循环,结束run
                break
            url = self.num_queue.get()
            self.download_ts(url)

    def download_ts(self, url):
        r = requests.get(url)
        ret = r.content
        filename = url[-10:]
        self.ts_queue.put((ret, filename))


# 创建线程 消费者 负责下载
class Consumer(threading.Thread):

    def __init__(self, num_queue, ts_queue, *args, **kwargs):
        super(Consumer, self).__init__(*args, **kwargs)
        self.num_queue = num_queue
        self.ts_queue = ts_queue

    def run(self):
        while True:
            if self.ts_queue.empty() and self.num_queue.empty():
                # 如果队列为空就,线程执行完成,跳出死循环,结束run
                break
            ret, filename = self.ts_queue.get()
            # 将ts文件保存到文件夹里
            with open('E:/movies/{}'.format(filename), 'wb') as f:
                f.write(ret)
            print(filename + '  下载完成!')


def main():
    # 定义线程
    num_queue = Queue(2000)
    ts_queue = Queue(5000)
    for i in range(1001,1300):
        # https://douban.donghongzuida.com/20200714/5459_09deb8e9/1000k/hls/d09d5135dfd000001.ts
        url = "https://douban.donghongzuida.com/20200714/5459_09deb8e9/1000k/hls/d09d5135dfd%06d.ts" % i
        # print(url)
        num_queue.put(url)
    # 定义100个生产者
    # return
    for x in range(100):
        t = Procuder(num_queue, ts_queue)
        t.start()
    # 定义100个消费者
    for x in range(100):
        t = Consumer(num_queue, ts_queue)
        t.start()
    t.join()
    end = time.process_time()
    endTime=time.time()
    print('程序耗时: %6.3f' % (end - start))
    print('下载耗时: %6.3f' % (endTime - starTime))

if __name__ == '__main__':
    global starTime
    starTime=time.time()
    main()
  • 最后一步,.ts文件合成高清MP4文件。在目录下开启cmd执行命令,或者创建run.bat文件,写入“copy /b *.ts test.mp4”,保存后点击运行即可。
#test.mp4 是自定义名称。
copy /b *.ts test.mp4

如若有问题,Contact meopen in new window

评论
Powered by Waline v2.6.2