Python YouTube dl从Reddit下载并命名视频

Python YouTube dl从Reddit下载并命名视频,python,python-3.x,youtube-dl,praw,Python,Python 3.x,Youtube Dl,Praw,我已经能够拼凑出我的第一个脚本!它所做的是,它转到一个子reddit,获得最热门的提交,然后使用youtube dl下载视频。 而且它有效 import praw import os user_agent = "mybot" r = praw.Reddit(user_agent=user_agent) submissions = r.get_subreddit('unexpectedjihad').get_top(limit=10) urls = [] def yt() : for

我已经能够拼凑出我的第一个脚本!它所做的是,它转到一个子reddit,获得最热门的提交,然后使用youtube dl下载视频。 而且它有效

import praw
import os

user_agent = "mybot"

r = praw.Reddit(user_agent=user_agent)

submissions = r.get_subreddit('unexpectedjihad').get_top(limit=10)
urls = []
def yt() :
    for x in submissions:
        urls.append(str(x.url))
    return urls

yt_urls = yt()

for item in yt_urls:
    print "downloading..." + " "
    os.system("youtube-dl" + " " + item)
    print "done"
接下来我要做的是让Youtube dl将文件名设置为与reddit提交的标题相同

我在思考如何将视频标题与视频文件匹配时感到非常困惑。我该怎么做? 非常感谢

根据,您希望将-o传递到youtube dl,例如:

for item in submissions:
   os.system('youtube-dl -o {}.%(ext)s {}'.format(item.title, item.url))
但是,考虑到可能由此产生的问题,直接嵌入YDL可能更简单,例如:

import youtube_dl
# ... reddit stuff here ...

for item in submissions:
   # see options at https://github.com/rg3/youtube-dl/blob/master/youtube_dl/YoutubeDL.py#L89
   ydl_opts = {'outtmpl': item.title + '.%(ext)s'}
   with youtube_dl.YoutubeDL(ydl_opts) as ydl:
       ydl.download([item.url, ])

注意:根据文档,您需要在ext后添加s。也就是说,%exts而不是%ext。此外,您应该处理标题中包含空格的事实。我认为你需要通过单独的参数来实现这一点。我个人会直接合并youtube dl,而不是调用系统。。。马上修改答案。非常感谢@MarkR。这真的很有帮助。你的代码也让我学到了一些东西