शुभ दोपहर, प्रिय गबरेज़िटेली। आज मैं आपके साथ अपने निजी कंप्यूटर पर वीके से संगीत और वीडियो डाउनलोड करने की संभावना के लिए जावास्क्रिप्ट कोड आपके साथ साझा करना चाहता हूं। यह कल्पना करना कठिन नहीं है कि मैंने एक शांत क्लिप और संगीत कैसे रिकॉर्ड किया, फिर उन्हें वहां अपलोड किया, लेकिन आपके कंप्यूटर पर यह सब अच्छा हो गया था ... खैर, यह कोई बात नहीं है! हमने वहां जो डाउनलोड किया था, उसे हमने पंप किया। मुख्य बात यह है कि यह हमारे लिए हमारा ब्राउज़र है, लेकिन साइट की अनुमति है, यह हमारे दिमाग को खरोंचने के लिए बनी हुई है।
शुरू करने के लिए, हमें ऑडियो फ़ाइलों को पार्स करने की आवश्यकता है ... तो, चलो
"क्षेत्र clear_fix" वर्ग लें और उस सरणी में
शॉव करें जो
"play_new" वर्ग से संबंधित है। पहले, हम पृष्ठ पर तत्वों की स्थिति को पकड़ने के लिए (बाद में बटन को साइड में प्रदर्शित करने के लिए) सरणी को स्टाइल असाइन करते हैं। फिर हमें
इनपुट से लिंक और
बी टैग से भविष्य की फ़ाइल का नाम मिलता है। फिर आपको नए लिंक असाइन करने होंगे जो हम
डाउनलोड विशेषता बनाएंगे।
function audio(){ var main_div=document.getElementsByClassName("area clear_fix"); for(var i=0;i<main_div.length;i++){ if(main_div[i].parentNode.firstChild.href){ main_div[i].parentNode.firstChild.style.top=main_div[i].getElementsByClassName('play_new')[0].offsetTop+"px"; continue; } var _mp3_=main_div[i].getElementsByTagName("input")[0].value.split(",")[0]; var _b_=main_div[i].getElementsByTagName("b")[0]; var _top_=document.getElementById(main_div[0].parentNode.id.replace('audio','play')).offsetTop+"px"; var _t_=main_div[i].getElementsByClassName('play_new')[0].offsetTop+"px"; var span=main_div[i].getElementsByTagName('span')[0]; var ispan=span.innerHTML; if(span.children[0]){ var ispan=span.children[0].innerHTML; } var _a_=document.createElement("a");
यहां, जैसा कि यह था, यह स्पष्ट होना चाहिए, यह सब ... ठीक है, फ़ाइल एक्सटेंशन के बाद किसी भी कचरे को काटने के लिए, हमने आवेदन किया:
_a_.href = _mp3_.substring (0, _mp3_.indexOf ('। mp3') + 4);सामान्य तौर पर, इस तरह से इसे अंतराल पर चलाना पहले से ही संभव है, निश्चित रूप से, यदि हम एक ही साइट पर हैं:
setInterval(function(){ if(window.location.href.indexOf('vk.com')>1) { if(document.getElementsByClassName("area clear_fix").length!=0){ audio(); } } },1000);
सब ठीक है। एक समारोह तैयार है। यह वीडियो फ़ाइलों को डाउनलोड करने के बारे में बताने का समय है ...
और फिर, हम
"video_box_wrap" वर्ग को
पकड़ते हैं, और यदि इस तत्व में
डाउनलोडविडियो के साथ आईडी विशेषता नहीं है, और अगर कोई IFRAME नहीं है कि कुछ YouTube हम पर फिसल सकते हैं, तो हम इसे बाहर निकाल देंगे।
function videovk(){ if(document.getElementsByClassName("video_box_wrap")[0] && !document.getElementById('downloadvideo') && document.getElementById('video_player').tagName!='IFRAME'){ var invideo=""; var obj = new Object(); var name=new Array(); var content=new Array(); var fl=encodeURI(unescape(document.getElementsByClassName("video_box_wrap")[0].innerHTML.split(" ")[8].split('"')[1].replace(/amp;/g,""))); var flvars=fl.split("&"); for(var c=0;c<=flvars.length-1;c++){ name[c]=flvars[c].split("=")[0]; content[c]=flvars[c].split("=")[1]; } for(var c2=0;c2<=name.length;c2++){ obj[name[c2]]=content[c2]; } var countvid=0; if(obj.url240){ countvid+=1; var invideo=invideo+vv(obj.url240,'240',countvid,obj.md_title); } if(obj.url360){ countvid+=1; var invideo=invideo+vv(obj.url360,'360',countvid,obj.md_title); } if(obj.url480){ countvid+=1; var invideo=invideo+vv(obj.url480,'480',countvid,obj.md_title); } if(obj.url720){ countvid+=1; var invideo=invideo+vv(obj.url720,'720',countvid,obj.md_title); } if(obj.cache240){ countvid+=1; invideo=invideo+vv(obj.cache240,'240',countvid,obj.md_title); } if(obj.cache360){ countvid+=1; invideo=invideo+vv(obj.cache360,'360',countvid,obj.md_title); } if(obj.cache480){ countvid+=1; invideo=invideo+vv(obj.cache480,'480',countvid,obj.md_title); } if(obj.cache720){ countvid+=1; invideo=invideo+vv(obj.cache720,'720',countvid,obj.md_title); } var videodownloader=document.createElement("div"); videodownloader.style.height="auto";videodownloader.style.width="auto"; videodownloader.id="downloadvideo";videodownloader.style.paddingBottom="5px"; videodownloader.innerHTML=invideo; document.getElementById("mv_narrow").insertBefore(videodownloader, document.getElementById("mv_narrow").firstChild); } }
... कोड से यह स्पष्ट है कि हम विभिन्न प्रारूपों के वीडियो विकल्पों के लिंक बनाते हैं और
mv_narrow पहचानकर्ता को तुरंत
डाउनलोड विशेषता के साथ
id = "downloadvideo" के साथ स्व-जेनरेट किए गए लिंक
जोड़ते हैं ।
और फिर हमें पृष्ठ पर लिंक बनाने के लिए
vv फ़ंक्शन की आवश्यकता होती है। रूसी अक्षरों को पहचानने के लिए, हमें
utf8_decode फ़ंक्शन की आवश्यकता
होती है, और किनारों के साथ रिक्त स्थान को ट्रिम करने के लिए,
ट्रिम फ़ंक्शन।
डिकोडिंग समारोह:
function utf8_decode(utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while ( i < utftext.length ) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i+1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; }
फसल का कार्य:
function trim(str) { return str.replace(/^[\s]+/,"").replace(/[\s]+$/,""); }
लिंक डिजाइन समारोह:
function vv(a,b,c,d){ if(c%2!=0){ var p1="<p>"; var p2=""; } if(c%2==0 ){ var p1=""; var p2="</p>"; } return p1+"<a style='color:white;background-color:#2F5879;padding:5px 5px 2px 5px; border:#395A7C;' " + " draggable='true' title=': "+utf8_decode(trim(decodeURIComponent(d)))+"' download='"+utf8_decode(trim(decodeURIComponent(d)))+"."+a.substr(-3)+"' href='"+a+"'>"+b+" ("+a.substr(-3)+")</a> "+p2; }
कोड का मुख्य भाग तैयार है, यह अंतराल को ठीक करने के लिए बना हुआ है:
setInterval(function(){ if(window.location.href.indexOf('vk.com')>1) { if(document.getElementById('video_player') && document.getElementById("mv_narrow")){ videovk(); } if(document.getElementsByClassName("area clear_fix").length!=0){ audio(); } } },1000);
वह सब है। जब कोड तैयार हो जाता है, और अब हमें एक प्रकटीकरण की आवश्यकता है, यहाँ यह है:
{ "manifest_version":2, "name":"Downloader", "version":"1.0", "description":"Downloader of mp3 files from vk.com and mail.ru.", "permissions": [ "http://vk.com/*", "tabs" ], "content_scripts": [ { "js": [ "main.js" ], "matches": [ "http://vk.com/*", "http://*.vk.com/*", "https://vk.com/*", "https://*.vk.com/*" ], "run_at": "document_end" } ], "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'", "browser_action": { "default_title":"Downloader Extension" } }
Content_scripts में हम लिखते हैं कि फ़ंक्शन के साथ हमारा कोड main.js फ़ाइल में संग्रहीत किया जाएगा, जिसे पेज लोड होने के बाद लोड किया जाएगा, अर्थात
"run_at": "document_end" ।
मुझे लगता है कि यह कोड कई लोगों के लिए एक प्रशिक्षण / उपयोग के रूप में उपयोगी होगा। दरअसल, सभी
js कोड इस तरह दिखाई देंगे:
function audio(){ var main_div=document.getElementsByClassName("area clear_fix"); for(var i=0;i<main_div.length;i++){ if(main_div[i].parentNode.firstChild.href){ main_div[i].parentNode.firstChild.style.top=main_div[i].getElementsByClassName('play_new')[0].offsetTop+"px"; continue; } var _mp3_=main_div[i].getElementsByTagName("input")[0].value.split(",")[0]; var _b_=main_div[i].getElementsByTagName("b")[0]; var _top_=document.getElementById(main_div[0].parentNode.id.replace('audio','play')).offsetTop+"px"; var _t_=main_div[i].getElementsByClassName('play_new')[0].offsetTop+"px"; var span=main_div[i].getElementsByTagName('span')[0]; var ispan=span.innerHTML; if(span.children[0]){ var ispan=span.children[0].innerHTML; } var _a_=document.createElement("a");
सभी को शुभकामनाएँ!