Mình viết code để lấy link download video youtube, tận dụng thư viện youtube-dl.
Đoạn code của mình như sau:
# encoding=utf8
from __future__ import unicode_literals
from flask import Flask
import sys
import youtube_dl
reload(sys)
sys.setdefaultencoding('utf8')
# download_link = 'https://www.youtube.com/watch?v=JjnMae-ODjE'
download_link = 'https://www.youtube.com/playlist?list=PLCaeNiyWNjxMMGsvVJVOF0gtn8AeOC_7y'
ydl_opts = {
'simulate': True, # Do not download
'quiet': True # Do not print messages to stdout
}
output = ""
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
# result = ydl.download([download_link])
result = ydl.extract_info(download_link)
if result['extractor'] == 'youtube:playlist':
for entry in result['entries']:
file_link = entry['url'] + '&name=' + entry['title'] + '.mp4'
file_name = entry['title']
output += "<a href='{0}' download='{1}'>{1}</a><br />".format(
file_link, file_name)
elif result['extractor'] == 'youtube':
file_link = result['url'] + '&name=' + result['title'] + '.mp4'
file_name = result['title']
output = "<a href='{0}' download='{1}'>{1}</a>".format(
file_link, file_name)
app = Flask(__name__)
@app.route('/')
def homepage():
return output
# return "abc"
if __name__ == "__main__":
app.run()
Khi mình chạy trên Windows 7 x64 thì không bị lỗi gì. Tuy nhiên khi mình upload script lên server chạy CentOS 6.5 thì bị báo lỗi:
Traceback (most recent call last):
File "youtube-dl.py", line 25, in <module>
file_link = entry['url'] + '&name=' + entry['title'] + '.mp4'
KeyError: u'url'
Mọi người giúp mình sửa lỗi và giải thích cho mình biết sao lại xuất hiện lỗi trên CentOS được ko? Thanks!