我正在使用 youtube-dl 和 Flask 应用程序来下载文件并返回文件。当我下载时,文件名与视频标题略有不同。查看源代码,我想我encodeFilename在utils.py. 但是,这仍然不匹配,我无法返回文件。
如何获取文件名,或者更改下载的文件名?
这是我目前的代码:
def preferredencoding():
try:
pref = locale.getpreferredencoding()
'TEST'.encode(pref)
except Exception:
pref = 'UTF-8'
return pref
def get_subprocess_encoding():
if sys.platform == 'win32' and sys.getwindowsversion()[0] >= 5:
encoding = preferredencoding()
else:
encoding = sys.getfilesystemencoding()
if encoding is None:
encoding = 'utf-8'
return encoding
@app.route('/api/v1/videos', methods=['GET'])
def api_id():
if 'link' in request.args:
link = request.args['link']
print("Getting YouTube video")
try:
title = youtube_dl.YoutubeDL().extract_info(link, download=False)["title"]
print(title.encode(get_subprocess_encoding(), 'ignore'))
print(title)
code=link.split('v=')[1]
youtube_dl.YoutubeDL().download([link])
return send_from_directory(r'C:\Users\User123', title+'-'+code+'.mp4')
except:
return "<h1>Error</h1>
Run Code Online (Sandbox Code Playgroud)
class FilenameCollectorPP(youtube_dl.postprocessor.common.PostProcessor):
def __init__(self):
super(FilenameCollectorPP, self).__init__(None)
self.filenames = []
def run(self, information):
self.filenames.append(information['filepath'])
return [], information
filename_collector = FilenameCollectorPP()
my_youtube_dl = youtube_dl.YoutubeDL()
my_youtube_dl.add_post_processor(filename_collector)
# do some downloading, then look inside filename_collector.filenames
Run Code Online (Sandbox Code Playgroud)
灵感来自https://github.com/ytdl-org/youtube-dl/issues/27192#issuecomment-738004623
| 归档时间: |
|
| 查看次数: |
4176 次 |
| 最近记录: |