web-dev-qa-db-ja.com

http://www.youtube-mp3.org/からのYoutubeダウンロードリンク

私は http://www.youtube-mp3.org/ を使用して、「インターネットラジオ」プロジェクトのmp3曲のダウンロードリンクを取得しています(ファイルストリームをダウンロードして出力します)。最近 http://www.youtube-mp3.org/ ワークフローが変わったようです。今まで私はURLの適切なフォーマットを取得することができました:

http://www.youtube-mp3.org/get?ab=128&video_id=KMU0tzLwhbE&h=5671e7d33d4eccb5b89ea8f54d9911d4&r=1387110278658.1527580295

R = timestampであるのに対し、私は自分でタイムスタンプをエポックとして作成しました。これは、.1527580295サフィックスなしでうまく機能しました。残念ながら、サフィックスのないリンクが変換サイトにリダイレクトされるため、これが必要になるようです。

これまで、アルゴリズムは次のとおりでした。

Youtube mp3 org linq取得の説明

http://www.youtube-mp3.org/api/itemInfo/?video_id=#{video_id}&ac=www&r=#{Time.now.to_i}

接尾辞部分の入手方法を知っている人はいますか?

//ねえ、私はあまりWebプログラミングの人ではありません...しかし、これは私が確かに見落としていたものです。ありがとう!

これを私の小さなC#APIに追加しました。

  <!-- language: c# -->
    const int AM = 65521;
    int GetCCSufix(string a)
    {            
        int c = 1, b = 0, d, e;
        var chars = a.ToCharArray();
        for(e =0; e< chars.Length; e ++)
        {
            d = chars[e];
            c = (c + d) % AM;
            b = (b + c) % AM;
        }
        return b << 16 | c;
    }

よく働く ;)

5
okipol

このサフィックスの意味はわかりませんが、youtube-mp3.orgからクライアントのJavaScriptファイルを読むと、その生成方法を学ぶことができます。

var __AM=65521; // the largest prime less than 2^16...
function cc(a){
    var c = 1, b = 0, d, e;
    for(e = 0; e < a.length; e++){
        d = a.charCodeAt(e);
        c = (c+d)%__AM;
        b = (b+c)%__AM;
    }
    return b<<16|c;
}

生成されるメディアURLは次のとおりです。

"http://www.youtube-mp3.org/get?ab=128&video_id="+video_id+"&h="+info.h+"&r="+timeNow+"."+cc(video_id+timeNow)

var timeNow = Date.now().toString();
5
Raphaël