2017-08-09 73 views
1

我試圖編寫我自己的Python代碼,使用youtubeinmp3 API將多個youtube視頻下載爲mp3文件。它對大多數文件都很好,但有些是46Kb HTML頁面而不是mp3。有什麼辦法可以讓我的代碼自己解決這個問題嗎?youtubeinmp3的api直接鏈接返回html頁面而不是mp3文件

這裏去腳本:

import urllib, json, re 

#List of Youtube Video IDs to download 
ListofURL = open("list.txt","r") 
Ids = [url.strip().replace('https://www.youtube.com/watch?v=','') for url in ListofURL.readlines()] 

#Base url 
url = "http://www.youtubeinmp3.com/fetch/format=JSON&video=https://www.youtube.com/watch?v=" 

for id in Ids: 

    #Getting the API's download link as json response 
    response = urllib.urlopen(url+id) 
    data = json.loads("{" + re.findall('\{(.*?)\}', response.read())[0] + "}") 

    #Creating a file to download the song to 
    target = open(data["title"]+".mp3", 'wb') 

    #Downloading the mp3 
    mresponse = urllib.urlopen(data["link"]) 
    mdata = mresponse.read() 

    #saving Data to the created file 
    target.write(mdata) 

    #closing the created file 
    target.close() 

腳本在此格式的文件讀取的YouTube地址:

https://www.youtube.com/watch?v=uzpa6ACrZaQ 
https://www.youtube.com/watch?v=_B_3g_9gtFQ 
https://www.youtube.com/watch?v=ex0Hli7kMRs 
+0

[編輯]你的問題,並顯示這些_HTML pages_如何破壞你的代碼? – stovfl

回答

0

沒有辦法......我試着這樣做我自己。一些視頻被阻止,其他一些不在他們的數據庫,所以他們不會下載和download.htm佔據他們的位置,這是youtubeinmp3頁面,只是重定向到自己..我認爲這是專門做的網站管理員嘗試傳播他們的廣告和惡意軟件尋找廣告..不好,但有什麼可以做...

並且沒有辦法檢查。我實際上試圖獲得最終下載鏈接的標題,並使用「wget --spider URL」來完成,以檢查ffinal重定向是否解析爲mp3或頁面。即使它解析爲mp3,但當我嘗試下載它時 - 它仍然有時會還原爲該download.htm。

還有其他的youtube to mp3 apis。我已經實施了「方法2」與一個不同的api,實際上有進展指標和其他東西..雖然我不得不破解提取下載鏈接那裏,因爲它也想推它自己的廣告...

看看網站http://youtubemp3.today/,看看它是如何工作的,並從1(youtubeinmp3)切換到另一個..

相關問題