I've been using the http://www.youtube-mp3.org/ to obtain download links for mp3 songs for a "internet radio" project (download file stream and output it). Lately the http://www.youtube-mp3.org/ seemed to changed it's workflow. Till now I was able to obtain the proper format of the url:
http://www.youtube-mp3.org/get?ab=128&video_id=KMU0tzLwhbE&h=5671e7d33d4eccb5b89ea8f54d9911d4&r=1387110278658.1527580295
Whereas r=timestamp I did the timestamp myself as epoch. This worked well without the .1527580295 suffix. Unfortunetly this seems to be needed as the link without the suffix redirects back to the conversion site.
Up till now the algorithim was as mentioned:
Youtube mp3 org linq acquiring explained
http://www.youtube-mp3.org/api/itemInfo/?video_id=#{video_id}&ac=www&r=#{Time.now.to_i}
Does any one know how to obtain the suffix part?
//Hey, I'm not much of an web programming guy ... but this is something I have surely overlooked. Thanks!
Added this to my small 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;
}
Works great ;)
I don't know what this suffix means but reading the client javascript file from youtube-mp3.org you can learn how to generate it.
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;
}
The generated media URL is :
"http://www.youtube-mp3.org/get?ab=128&video_id="+video_id+"&h="+info.h+"&r="+timeNow+"."+cc(video_id+timeNow)
with
var timeNow = Date.now().toString();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With