zoukankan      html  css  js  c++  java
  • pytube

    YouTube视频下载

    import logging
    import os
    import sys
    
    from pytube import YouTube  # python3.6 -m pip install pytube
    
    from spider_setting import REQUESTS_PROXIES
    
    path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
    sys.path.append(path)
    
    # 添加日志
    
    logging.basicConfig(
        level=logging.INFO,  # 定义输出到文件的log级别,大于此级别的都被输出
        format='%(asctime)s  %(filename)s  %(levelname)s : %(message)s',  # 定义输出log的格式
        datefmt='%Y-%m-%d %H:%M:%S',  # 时间
        filename='./oss_file.log',  # log文件名
        filemode='a')  # 写入模式“w”或“a”
    
    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    # 设置格式
    formatter = logging.Formatter('%(asctime)s  %(filename)s  %(levelname)s : %(message)s')
    # 告诉handler使用这个格式
    console.setFormatter(formatter)
    # 为root logger添加handler
    logging.getLogger('').addHandler(console)
    
    
    class video(object):
    
        def __init__(self):
            self.url_list = ["https://www.youtube.com/watch?v=9bZkp7q19f0"]
    
        def download(self):
            for url in self.url_list:
                yt = YouTube('https://www.youtube.com/watch?v=9bZkp7q19f0', proxies=REQUESTS_PROXIES)
                print(yt.title)  # 获取视频标题
                print("1" * 100)
                print(yt.thumbnail_url)  # 获取缩略图网址
                print("2" * 100)
                print(yt.streams.all())  # 查看可用的媒体格式
                print("3" * 100)
                stream = yt.streams.first()  # 获得第一个媒体格式流
                print("4" * 100)
                print(stream.download())  # 下载到当前工作目录
                print("5" * 100)
                print(stream.download('./video'))  # 指定目标路径
                print("6" * 100)
                print(yt.streams.filter(only_audio=True).all())  # 查询仅音频流
                print("7" * 100)
                print(yt.streams.filter(file_extension='mp4').all())  # 查询MPEG-4流
                print("8" * 100)
                print(yt.streams.get_by_itag('22'))  # 通过itag获取流
                print("9" * 100)
    
    
    if __name__ == '__main__':
        video = video()
        video.download()
    

      

  • 相关阅读:
    树形DP,最大直径,并查集——HDU4514
    树形DP——HDU2196
    树上倍增法,LCA——CF-832-D
    LCA,Tarjan——POJ1330
    树的直径,树形DP,DFS——POJ1958
    剑指offer28-最小k个数
    剑指offer27-数组中出现次数超过一半的数字
    剑指offer26-字符串的排列
    剑指offer25-二叉搜索树与双向链表
    剑指offer24-复杂链表的复制
  • 原文地址:https://www.cnblogs.com/yoyo1216/p/14187530.html
Copyright © 2011-2022 走看看