Last active
March 19, 2017 21:53
-
-
Save 1d10t/19dd0c7cf6f24930ee86c6bb51a73d9f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// url deobfuscation function '129' from audioplayer.js | |
(function(t, i) { | |
"use strict"; | |
function e(t) { | |
if (~t.indexOf("audio_api_unavailable")) { | |
var i = t.split("?extra=")[1].split("#"), | |
e = o(i[1]); | |
if (i = o(i[0]), !e || !i) return t; | |
e = e.split(String.fromCharCode(9)); | |
for (var a, r, l = e.length; l--;) { | |
if (r = e[l].split(String.fromCharCode(11)), a = r.splice(0, 1, i)[0], !s[a]) return t; | |
i = s[a].apply(null, r) | |
} | |
if (i && "http" === i.substr(0, 4)) return i | |
} | |
return t | |
} | |
function o(t) { | |
if (!t || t.length % 4 == 1) return !1; | |
for (var i, e, o = 0, s = 0, r = ""; e = t.charAt(s++);) e = a.indexOf(e), ~e && (i = o % 4 ? 64 * i + e : e, o++ % 4) && (r += String.fromCharCode(255 & i >> (-2 * o & 6))); | |
return r | |
} | |
Object.defineProperty(i, "__esModule", { | |
value: !0 | |
}), i.audioUnmaskSource = e; | |
var a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN0PQRSTUVWXYZO123456789+/=", | |
s = { | |
v: function(t) { | |
return t.split("").reverse().join("") | |
}, | |
r: function(t, i) { | |
t = t.split(""); | |
for (var e, o = a + a, s = t.length; s--;) e = o.indexOf(t[s]), ~e && (t[s] = o.substr(e - i, 1)); | |
return t.join("") | |
}, | |
x: function(t, i) { | |
var e = []; | |
return i = i.charCodeAt(0), each(t.split(""), function(t, o) { | |
e.push(String.fromCharCode(o.charCodeAt(0) ^ i)) | |
}), e.join("") | |
} | |
} | |
})(0, window); | |
String.prototype.htmldecode = function(){ | |
if(!window.htmldecode_textarea) window.htmldecode_textarea = document.createElement('textarea'); | |
window.htmldecode_textarea.innerHTML = this; | |
return window.htmldecode_textarea.value; | |
} | |
function vk_full_id(element){ | |
if(typeof(element.length) == 'undefined') return element.dataset.fullId; | |
var audio_arr = element; | |
return audio_arr[AudioUtils.AUDIO_ITEM_INDEX_OWNER_ID]+'_'+audio_arr[AudioUtils.AUDIO_ITEM_INDEX_ID]; | |
} | |
function vk_storage_key(audio_arr){ | |
return 'au.'+vk_full_id(audio_arr); | |
} | |
function vk_audio_data(element, onurl, nonetwork){ | |
var audio_arr = typeof(element.length) == 'undefined' ? AudioUtils.getAudioFromEl(element) : element; | |
if(audio_arr[AudioUtils.AUDIO_ITEM_INDEX_URL]){ | |
audio_arr[AudioUtils.AUDIO_ITEM_INDEX_URL] = window.audioUnmaskSource(audio_arr[AudioUtils.AUDIO_ITEM_INDEX_URL]); | |
onurl(element, audio_arr); | |
return audio_arr; | |
} | |
var url = localStorage.getItem(vk_storage_key(audio_arr)); | |
if(url){ | |
audio_arr[AudioUtils.AUDIO_ITEM_INDEX_URL] = url; | |
onurl(element, audio_arr); | |
return audio_arr; | |
} | |
if(nonetwork){ | |
onurl(element, audio_arr); | |
return audio_arr; | |
} | |
ap._ensureHasURL(audio_arr, function(t) { | |
audio_arr[AudioUtils.AUDIO_ITEM_INDEX_URL] = window.audioUnmaskSource(t[AudioUtils.AUDIO_ITEM_INDEX_URL]); | |
if(audio_arr[AudioUtils.AUDIO_ITEM_INDEX_URL]) localStorage.setItem(vk_storage_key(audio_arr), audio_arr[AudioUtils.AUDIO_ITEM_INDEX_URL]); | |
onurl(element, audio_arr); | |
}); | |
return audio_arr; | |
} | |
function vk_audio_list_discover(list, onend, bulk){ | |
if(typeof(bulk) == 'undefined') bulk = true; | |
var list_done = []; | |
var skip = 0; | |
var period = 2000; | |
var error_sleep = 80*1000; | |
var list_chunk_size = 10; | |
var list = [].map.call(list, function(element){ return element; }); // convert nodelist to array | |
var requested = list.length; | |
var busy = false; | |
var ct = setInterval(function(){ | |
if(busy) return; | |
if(skip){ skip--; return; } | |
if(!requested){ | |
clearInterval(ct); | |
onend(list_done); | |
return; | |
} | |
busy = true; | |
//console.log('requested', requested); | |
if(bulk){ | |
var | |
elements = [], | |
add_num = Math.min(list_chunk_size, list.length) | |
; | |
while(elements.length < add_num){ | |
var element = list.shift(); | |
vk_audio_data(element, function(e, audio_arr){ | |
if(audio_arr[AudioUtils.AUDIO_ITEM_INDEX_URL]){ | |
list_done.push(audio_arr); | |
requested--; | |
return; | |
} | |
elements.push(e); | |
}, true); | |
}; | |
var fullIds = elements.map(vk_full_id).join(','); | |
ajax.post("al_audio.php", { | |
act: "reload_audio", | |
al: 1, | |
ids: fullIds | |
}, { | |
onDone: function(sub_list, a) { | |
//console.log(sub_list, a); | |
if(sub_list){ | |
while(sub_list.length){ | |
var audio_arr = sub_list.shift(); | |
if(audio_arr[AudioUtils.AUDIO_ITEM_INDEX_URL]){ | |
vk_audio_data(audio_arr, function(e, audio_arr){ | |
if(audio_arr[AudioUtils.AUDIO_ITEM_INDEX_URL]) localStorage.setItem(vk_storage_key(audio_arr), audio_arr[AudioUtils.AUDIO_ITEM_INDEX_URL]); | |
list_done.push(audio_arr); | |
requested--; | |
}, true); | |
}else{ | |
console.log('no url in', audio_arr); | |
for(var i=0; i<elements.length; i++){ | |
if(vk_full_id(audio_arr) == vk_full_id(elements[i])){ | |
list.push(elements[i]); | |
break; | |
} | |
} | |
} | |
} | |
}else{ | |
while(elements.length) list.push(elements.shift()); | |
skip = Math.round(error_sleep/period); | |
return; | |
} | |
busy = false; | |
} | |
}); | |
}else{ | |
var element = list.shift(); | |
vk_audio_data(element, function(element, audio_arr){ | |
if(audio_arr[AudioUtils.AUDIO_ITEM_INDEX_URL]){ | |
list_done.push(audio_arr); | |
requested--; | |
}else{ | |
list.push(element); | |
skip = Math.round(error_sleep/period); | |
return; | |
} | |
busy = false; | |
}); | |
} | |
}, period); | |
} | |
// example | |
vk_audio_list_discover(document.querySelectorAll('.audio_row'), function(list){ | |
console.log('discovered list', list); | |
}); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment