0%

How to download youtube videos

项目

源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

import os

ROOT_DIR = os.getcwd()
OUTPUT_DIR = os.path.join(ROOT_DIR, 'output')
PLYLIST_URL = r'https://www.youtube.com/playlist?list=PLSW2D61TnopSpaPWy_JLcMu4Qjt7iUEwN'
DOWNLOAD_CMD = r'youtube-dl -f {} -o "' + ROOT_DIR +'/%(playlist_index)s - %(title)s.%(ext)s" {}'
EXTRA_OPTIONS = r''
# EXTRA_OPTIONS = r' --reject-title "Alphablocks \| Spelling Adventures! \| Learn to Read"'
# EXTRA_OPTIONS += r' --playlist-items 1-21,23-25'

def download_va():
    cmd = DOWNLOAD_CMD.format("248,140", PLYLIST_URL) + EXTRA_OPTIONS
    print(cmd)
    os.system(cmd)

def combine_audio_video(source_dir, output_dir, a_ext='.m4a', v_ext='.mp4', f_ext='.mp4'):
    for fil in os.listdir(source_dir):
        print(fil)
        if fil.endswith(a_ext):
            clip_name = fil.split('.')[0]
            print(clip_name)
            video_name = clip_name + v_ext
            final_name = clip_name + f_ext
            print(final_name)
            video_path = os.path.join(source_dir, video_name)
            audio_path = os.path.join(source_dir, fil)
            final_path = os.path.join(output_dir, final_name)
            cmd = 'ffmpeg -y -i "%s" -i "%s" -c copy "%s"' % (video_path, audio_path, final_path)
            os.system(cmd)

if __name__ == "__main__":
    if not os.path.exists(OUTPUT_DIR):
        os.mkdir(OUTPUT_DIR)
    download_va()
    combine_audio_video(ROOT_DIR, OUTPUT_DIR, '.m4a''.webm''.mkv')