如何解决Youtube-dl订阅mp3
所以我的目标是编写代码,以便它将其从我所有订阅的Youtube频道中自动下载到mp3文件中。
我在处理EO error
时遇到了困难,这对我来说并不很清楚,因此我从来不必处理它,我已经做过研究,但是没有什么可以帮我的忙,所以代码如下:
import opml
import feedparser
import youtube_dl
from glob import glob
from pprint import pprint
from time import time,mktime,strptime
from datetime import datetime
if len(glob('last.txt')) == 0:
f = open ('last.txt','w')
f.write(str(time()))
print('Initialized last.txt file for timestamp')
f.close()
else:
f = open('last.txt','r')
content = f.read()
f.close()
outline = opml.parse('subs.xml')
ptime = datetime.utcfromtimestamp(float(content))
ftime = time()
urls = []
for i in range(0,len(outline[0])):
urls.append(outline[0][i].xmlUrl)
print(urls)
videos = []
for i in range(0,len(urls)):
print('Parsing through channel '+str(i+1)+' out of '+str(len(urls)),end='\r')
feed = feedparser.parse(urls[i])
for j in range(0,len(feed['items'])):
timef = feed['items'][j]['published_parsed']
dt = datetime.fromtimestamp(mktime(timef))
if dt > ptime:
videos.append(feed['items'][j]['link'])
if len(videos) == 0:
print('Sorry,no new video found')
else:
print(str(len(videos))+' bew vudeis found')
ydl_options = {
'ignoreerrors' : True,'format': 'bestaudio[filesize<30]','keepvideo': False,'outtmpl': 'filename','postprocessors': [{
'key': 'FFmpegExtractAudio','audioquality': '0','preferredquality': '320',}]
}
with youtube_dl.YoutubeDL(ydl_options) as ydl:
ydl.download(videos)
我尝试了新的YoutubeManager subs.xml,尝试了其他具有不同渠道的Youtube帐户,而他们的subs.xml没有帮助。
这是我的错误输出
runfile('C:/Users/sound/Desktop/PythonProjets/youtubesubscriptions.py',wdir='C:/Users/sound/Desktop/PythonProjets')
Traceback (most recent call last):
File "<ipython-input-1-ff8a84b96d09>",line 1,in <module>
runfile('C:/Users/sound/Desktop/PythonProjets/youtubesubscriptions.py',wdir='C:/Users/sound/Desktop/PythonProjets')
File "C:\Users\sound\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py",line 786,in runfile
execfile(filename,namespace)
File "C:\Users\sound\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py",line 110,in execfile
exec(compile(f.read(),filename,'exec'),namespace)
File "C:/Users/sound/Desktop/PythonProjets/youtubesubscriptions.py",line 29,in <module>
outline = opml.parse('subs.xml')
File "C:\Users\sound\Anaconda3\lib\site-packages\opml\__init__.py",line 67,in parse
return Opml(lxml.etree.parse(opml_url))
File "src/lxml/etree.pyx",line 3435,in lxml.etree.parse
File "src/lxml/parser.pxi",line 1840,in lxml.etree._parseDocument
File "src/lxml/parser.pxi",line 1866,in lxml.etree._parseDocumentFromURL
File "src/lxml/parser.pxi",line 1770,in lxml.etree._parseDocFromFile
File "src/lxml/parser.pxi",line 1163,in lxml.etree._BaseParser._parseDocFromFile
File "src/lxml/parser.pxi",line 601,in lxml.etree._ParserContext._handleParseResultDoc
File "src/lxml/parser.pxi",line 711,in lxml.etree._handleParseResult
File "src/lxml/parser.pxi",line 638,in lxml.etree._raiseParseError
OSError: Error reading file 'subs.xml': failed to load external entity "subs.xml"
解决方法
该错误表明您无权访问该文件。
如果我在PC上运行print(opml.parse('subs.xml'))
,则会收到完全相同的错误消息。
路径错误或者您没有对该文件的读取权限。
代码的设置方式意味着python在运行.py文件的路径中查找该文件。subs.xml
与python文件位于同一文件夹中吗?
您可以尝试的一种方法是像这样直接链接路径:outline = opml.parse(r'C:\folder_name\subs.xml')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。