連絡先から音楽を送ります。 オタクの方法

それはすべて、私が彼らが定期的に音楽をアップロードするグループが好きだったという事実から始まりました。 しかし、私はほとんどプレイヤーから音楽を聴くため、PCに曲をダウンロードすることに関して疑問が生じました。 かなり大きなプレイリストを作り、それを捨てたかった。 1曲のダウンロードはマゾヒズムです。 私はネットワークからの迷信を信用していません。 どうやってこれをやったの?
まず、Kontaktovskページでマークアップを簡単に確認しました。 曲へのリンクが隠し入力の値としてクリアテキストで保存され、マスクhttp://cs*.userapi.com/*/audio/*.mp3,*に対応することがすぐに明らかになりました。
コンソールへのjQueryリクエストをすばやく作成しても、私は何も受け取りませんでした。 VKontakte私のお気に入りのライブラリは使用されません。 問題はありません。同じコンソールを使用して、jQueryを次のトリックを使用してページに接続します。
function addJQuery(callback) { var script = document.createElement("script"); script.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"); script.addEventListener('load', function() { var script = document.createElement("script"); script.textContent = "(" + callback.toString() + ")();"; document.body.appendChild(script); }, false); document.body.appendChild(script); } 

今、あなたはビジネスに取りかかることができます。 input:hiddenセレクターですべての非表示フィールドを見たところ、それらのフィールドには目的のリンクが含まれており、マスクaudio_info *に対応するidがあることがわかりました。 セレクターを少し改善します。 input:hidden[id*='audio']は必要な入力のみを受け取ります。
ここでやめて、次のようなすべてのオーディオへのリンクを取得することができます。
$('input:hidden[id*="audio"]').each(function () {
url=$(this).attr('value').split(',')[0];
console.log("wget "+url);
});
、それらをwget-yにフィードして、出力を取得します...ファイル名のハッシュに すべての曲にidv3タグが付いているわけではなく、ダウンロード後のファイル名はa..zと0..9の文字で構成されており、アーティストのヒントやトラック名はありません。 一般に、サーバー上のファイルに移動します。 したがって、継続します。
私たちは、入力についてのアーティストと作曲の名前に関する情報を探しており、これを行うことができるという結論に達しました。
 $('input:hidden[id*="audio"]').each(function () { url=$(this).attr('value').split(',')[0]; author=$(this).parent().parent().parent().find('b').find('a[href*="search"]').html(); song=$(this).parent().parent().parent().find('span[id*="title"]').html(); console.log('wget -O "'+author+'-'+song+'.mp3" '+url); }); 

コンソール出力をコピーし、ファイルからガベージ(存在する場合)を削除し、実行可能スクリプトであることが判明したものを実行します。
それはうまく機能し、私のものはすでに約2 GB〜126曲をダウンロードしました。 もちろん、1つのストリームでですが、私は急いでいません。 ここを読んでくれたみんなに-ありがとう:)


Source: https://habr.com/ru/post/J143406/


All Articles