48602


[pytube](https://github.com/nficano/pytube)の使い方を調べていて以下の記事を見つけたのですが、ここで使われているpytubeがドキュメントに載っていない使い方をしているのでどうなっているの教えて欲しいです。

[[Python] YouTubeからビデオをmp4形式でダウンロード](https://qiita.com/prs-
watch/items/577544e19f87e8531e13)

[code]

    from pytube import YouTube
    from enum import Enum
    import ffmpeg
    import os
    import re
    
    class Loader(Enum):
        MP4 = 'mp4'
        WEBM = 'webm'
    
        def load(self, yt, res):
            vd = yt.get(self.value, res)
            vd.download('./videos')
    
    def download(url):
        ext = 'mp4'
        res = ''
        exts = []
        yt = YouTube()
        yt.url = url
        for video in yt.videos:
            exts.append(video.extension)
            if video.extension == 'mp4':
                res = video.resolution
        if 'mp4' not in exts:
            ext = 'webm'
        ext = ext.upper()
        val = getattr(Loader, ext)
        val.load(yt, res)
    
    def rename():
        path = os.path.join(os.getcwd(), 'videos')
        pattern = re.compile('(mp4|webm)$')
        files = os.listdir(path)
        for file in files:
            if pattern.search(file):
                file_path = os.path.join(path, file)
                new_file_path = file_path.replace(' ', '_')
                os.rename(file_path, new_file_path)
    
    def convert():
        path = os.path.join(os.getcwd(), 'videos')
        pattern = re.compile('webm$')
        files = os.listdir(path)
        for file in files:
            if pattern.search(file):
                file_path = os.path.join(path, file)
                stream = ffmpeg.input(file_path)
                stream = ffmpeg.hflip(stream)
                stream = ffmpeg.output(stream, file_path.replace('.webm', '.mp4'))
                ffmpeg.run(stream)
                os.remove(file_path)
    
    if __name__ == '__main__':
        url = input('url >> ')
        download(url)
        rename()
        convert()
    
[/code]

for文の`yt.videos`この部分が自分の環境だとうまく動かないのですが、videosの部分はpytubeによるものなのでしょうか？  
それとも他のライブラリーによるものでしょうか？


CC BY-SA 4.0
2018-09-20T12:55:41.507
48598
2018-09-21T01:05:27.610
2018-09-21T01:05:27.610
3060
22565
question
python python3
pythonのライブラリーpytubeの使い方


> ドキュメントに載っていない使い方

そもそも記事が古く、最新バージョンのpytubeが9.2.2であるのに対して記事の最終更新当時のものは7.0.18であり、すでにドキュメントと異なっているのが原因だと考えられます。

そこで、[公式リポジトリのREADME.rstの変遷](https://github.com/nficano/pytube/commits/master/README.rst)を確認したところ、  
以下のコミットによりドキュメントから`.videos`の記述が消えたため、この前後に破壊的な仕様変更があったものと考えられます。  
<https://github.com/nficano/pytube/commit/deff05682b0567ff005f37adcb9b0af1583ada20#diff-88b99bb28683bd5b7e3a204826ead112>


CC BY-SA 4.0
2018-09-20T18:02:52.670
48602
2018-09-20T18:02:52.670
29826
48598
answer