Habrahabrの読者に、自分で書いた小さなWebサービス(スクリプト)を共有したいと思います。
ソーシャルネットワークの出現とその普及により、ユーザーはオンラインでかなりの時間を費やしています。 誰もが音楽を愛していますが、私は個人的に音楽なしでは生きられません。 そのため、Vkontakteプロファイルに音楽コレクション全体を保存しています。 私は常に新製品を最新の状態にしているので、検索やダウンロードに時間を費やすことはなく、インターネットがあればどこからでもほとんどすべてのガジェットから音楽にアクセスできます。 良いインターネットが贅沢だった頃、木製の時代が過ぎ去ったことをとてもうれしく思います。 そのような情報をハードドライブに保存する必要はもうありません。 秘密ではないものすべて、私はクラウドに投入します。
私はコンピューターでほとんどの仕事をしています。つまり、仕事に集中するためには、音楽を酸素として必要としています。 5.1でお気に入りのアルバムをカットして作成します。 ただし、1つあります。VK.comで音楽を聴くには、オンラインにする必要があります。オンラインに行くと、大量のメッセージを受け取り、不要な会話に引きずり込まれます。 私は親切で反応の良い人なので、友人たちの絶え間ない問題を無視することはできません。 しかし、私は仕事に専念する必要があり、私の音楽はすべて何かが常に私をそらす場所です。
私はLinuxが大好きですが、VK.comで音楽を聴くための音楽プレーヤー用の通常のプラグインやプレーヤー自体を見たことはありません。 それから、私はこれで何かをする必要があると決め、vkplsと呼ばれる小さなPHPスクリプトを数時間で入れました(私が意図したことを推測するのは難しくありません)。
スクリプトの本質は、オーディオレコーディングへの直接リンクを取得し、ストリーミングプレイリストを生成することです。アルゴリズムは見苦しいため、VK.APIに結び付けました。
まず、 「開発者向け」セクションでスタンドアロンアプリケーションを作成し、 そのアプリケーションのオーディオレコーディングにアクセスする権利を取得しました。 その後、ACCESS_TOKENを作成するための承認を行う必要がありました。 簡単なPOSTまたはGETリクエストでは、オーディオ録音に関する情報(vk.apiのaudio.getメソッド)にアクセスすることはできません。
これで、古いPHPの助けを借りて、制限なしに興味のあるパラメーターを含むリクエストを送信し、代わりに興味のある情報をJSON形式で受け取ることができました。 audio.get関数は、すべての追加情報を含むユーザーまたはコミュニティのオーディオ録音のリストを返します。 ビンゴ、それは私が必要としていたものでした。
そのため、たとえば、そのようなリクエストに応じて:
https://api.vk.com/method/audio.get?user_id=_ID&v=5.28&access_token=_ACCESS_TOKEN
次の情報を含むJSON形式の配列を取得します。
JSONのaudio.getへの回答
応答:{
カウント:505、
アイテム:[{
id: '34'、
写真: 'http://cs7009.vk....2/rj4RvYLCobY.jpg'、
名前:「Tatyana Plutalova」、
name_gen: 'Tatyana'
}、{
id:232745053、
owner_id:34、
アーティスト: 'Ambassadeurs'、
タイトル: 'Sparks'、
期間:274、
url: 'http://cs6164.vk....lGEJhqRK8d5OQZngI'、
lyrics_id:120266970、
genre_id:18
}、{
id:232733966、
owner_id:34、
アーティスト: 'Aloe Blacc'、
タイトル: 'Can You Do This'、
期間:176、
url: 'http://cs6157.vk....erOa0DvsyOCYTPO1w'、
genre_id:2
}、{
id:232735496、
owner_id:34、
アーティスト: 'Aloe Blacc'、
タイトル: 'Wake Me Up'、
期間:224、
url: 'http://cs6109.vk....FzHJU55ixz8Av8ujc'、
lyrics_id:119056069、
genre_id:2
}]
}
カウント:505、
アイテム:[{
id: '34'、
写真: 'http://cs7009.vk....2/rj4RvYLCobY.jpg'、
名前:「Tatyana Plutalova」、
name_gen: 'Tatyana'
}、{
id:232745053、
owner_id:34、
アーティスト: 'Ambassadeurs'、
タイトル: 'Sparks'、
期間:274、
url: 'http://cs6164.vk....lGEJhqRK8d5OQZngI'、
lyrics_id:120266970、
genre_id:18
}、{
id:232733966、
owner_id:34、
アーティスト: 'Aloe Blacc'、
タイトル: 'Can You Do This'、
期間:176、
url: 'http://cs6157.vk....erOa0DvsyOCYTPO1w'、
genre_id:2
}、{
id:232735496、
owner_id:34、
アーティスト: 'Aloe Blacc'、
タイトル: 'Wake Me Up'、
期間:224、
url: 'http://cs6109.vk....FzHJU55ixz8Av8ujc'、
lyrics_id:119056069、
genre_id:2
}]
}
見てください-アーティスト、タイトル、期間、URLが私たちにとって重要なキーは、各オーディオ録音に存在します。 json_decode関数を使用して、結果の配列をphpが理解できる形式に変換しました。 結果を達成するために残っているのは、プレイリストファイルを生成することだけです。
M3Uプレイリスト構造:
#EXTM3U
#EXTINF: 期間、アーティスト-タイトル
url
...
#EXTINF: 期間、アーティスト-タイトル
url
...
foreachループを使用して、受信したすべてのデータをファイルに書き込み、m3uに保存するのは簡単ではありませんでした。
Hooray、すべてがうまくいきました。今では、VKontakteの許可なしに、どの音楽プレーヤーでも音楽を聴くことができます。
まとめ
私は自分のアイデアを共有し、私のような人々がそれを利用できるようにすることにしました。 CSSフレームワークMaxmertkitの使用(「Habrahabr」のユーザーの1人がここに提示)は、スクリプトを使用するための小さなページを作成しました。 皆のために、それは次のリンクで利用可能です-VKPLS 。 指示を読むか、ビデオを見ることができます。
1つあることに注意してください。 Vkontakteサーバー上のオーディオレコーディングへのリンクは0.5〜3日間の頻度で変化するため、プレイリストをより頻繁に更新することをお勧めします。
それだけです、ご清聴ありがとうございました。