2017-08-09 8 views
1

youtubeinmp3 APIを使用して複数のyoutubeビデオをmp3ファイルとしてダウンロードするための独自のPythonコードを作成しようとしました。ほとんどのファイルでうまくいきましたが、mp3の代わりに46KbのHTMLページがありました。私のコードでこの問題を単独で解決できるようにする方法はありますか?youtubeinmp3のapiダイレクトリンクは、mp3ファイルの代わりにhtmlページを返します

はここでスクリプトを行く:

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() 

スクリプトは、この形式のファイルからユーチ​​ューブアドレスを読み取ります

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ページがコードをどのように壊すかを示しますか? – stovfl

答えて

0

は、方法はありません...私は自分自身がこれをやってみました。いくつかのビデオはブロックされていて、他のものはDBにないので、ダウンロードしないでdownload.htmが自分の場所をとります。これはyoutubeinmp3ページで、単に自分自身にリダイレクトされます。広告主様の広告やマルウェアを広げようとするのはウェブマスターです...しかし、何ができるのでしょうか...

とはありません。実際に最終的なダウンロードリンクのヘッダーを取得しようとしましたが、 "wget - spider URL"でそれを行い、ffinalリダイレクトがmp3かページに解決するかどうかを確認しました。それがmp3に解決されたとしても、私が試してダウンロードすると、そのdownload.htmに戻ってしまうことがあります。

他にもmp3 apisのyoutubeがあります。私はそこにダウンロードリンクを抽出するためにハックしなければならなかったが、実際に進捗インジケータと他のものを持っている別のAPIを使って "method2"を実装している...

http://youtubemp3.today/サイトをチェックして、それがどのように動作し、1(youtubeinmp3)から別のものに切り替えるかを確認してください。

関連する問題