/ / Link per il download di YouTube da http://www.youtube-mp3.org/ - api, youtube, download, mp3

Link per il download di YouTube da http://www.youtube-mp3.org/ - api, youtube, download, mp3

Ho usato il http://www.youtube-mp3.org/ per ottenere i collegamenti di download per le canzoni mp3 per un progetto "internet radio" (scaricare il flusso di file e inviarlo). Ultimamente il http://www.youtube-mp3.org/ sembrava aver cambiato il flusso di lavoro. Fino ad ora sono riuscito a ottenere il formato corretto dell'URL:

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

Considerando che r = timestamp Ho fatto il timestamp me stesso comeepoca. Questo ha funzionato bene senza il suffisso .1527580295. Sfortunatamente questo sembra essere necessario in quanto il collegamento senza il suffisso reindirizza al sito di conversione.

Fino ad ora l'algoritmo era come detto:

Spiegazione dell'acquisizione di Youtube mp3 org linq

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

Qualcuno sa come ottenere la parte del suffisso?

//Hey, Non sono un granché un programmatore del web ... ma questo è qualcosa che ho sicuramente trascurato. Grazie!

Aggiunto questo alla mia piccola API C #.

  <!-- 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;
}

Funziona alla grande ;)

risposte:

5 per risposta № 1

Non so cosa significhi questo suffisso, ma leggendo il file javascript del client da youtube-mp3.org puoi imparare come generarlo.

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;
}

L'URL multimediale generato è:

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

con

var timeNow = Date.now().toString();