最近、ブラウザを介さずに
Yandex Musicを使用したいと考えました。 それが判明したように、彼らはオープンAPIを持っていなかったし、ケースは些細ではありませんでした。 そして、何も準備ができていませんでした。
読むのが
面倒な人はすぐに結果
-python-yamusicに行くことができます。
仕事を分析します
始めるために、私はファイアバグで武装し、リクエストの行き先を追跡しました。 主な方向性が見つかりました:
最初の3つのクエリで受信したデータは、
Beautiful Soupを使用して簡単にフィルタリングできます。
- すべてのトラックは、 onclickプロパティのすべてのデータを含むb-trackクラスのdivにあります(ここから、そのストレージdirとidを取得します )。
- アルバムはb-albumsクラスのdivにあります。
- クラスb-artist-groupを持つdivのアーティスト。
コードで私のパーサーの実装
を見ること
ができます 。
ダウンロードトラック
今ではすべてがシンプルに思えます。
トラック /2.xmlの
storage.music.yandex.ru/get storage dirにリクエストを行い、次の形式のxmlを取得します。
<?xml version="1.0" encoding="utf-8"?>
<track filename=" , 2.mp3" track-length=" " />
ここで、
storage.music.yandex.ru / download-info
storage dir track /
filename trackというリクエストを作成し、別のxml'kuを取得し
ます 。
<download-info>
<host></host>
<path></path>
<ts> ts</ts>
<region></region>
<s> s</s>
</download-info>
しかし、トラックのジャンプのリクエストを見て、すべてのデータがあるわけではないことが明らかになりました。
javascriptをスクロールして、最初の文字とパラメーターなしでパスから必要なキーを作成する
関数を見つけました。 この関数は、Pythonで書き換えるのが面倒なので、QScriptを介して実行するだけです。
これで、すべてのデータを取得して、トラックのurlをコンパイルできます:http://
host / get-mp3 /
key /
parameter ts path ?
Track -id =
id of track &\ region =
region &from = service-search成功します。 ためらうことなく、私は1つのセッションですべてを実行しようとすることに決めました-すべてがすぐにうまくいきました。 結果は
python-yamusicライブラリですライブラリの使用
これは非常に簡単です。最初にQtアプリケーションを開始し、すべてのインポートを実行する必要があります。
>>> from yamusic.app import Search, cursor
>>> from PySide.QtCore import QCoreApplication
>>> import sys
>>> app = QCoreApplication(sys.argv)
検索のためにあります:
>>> cursor.search(Search.TYPE_ARTISTS, 'query')
>>> cursor.search(Search.TYPE_ALBUMS, 'query')
>>> cursor.search(Search.TYPE_TRACKS, 'query')
見つかったオブジェクトからデータを取得するには:
>>> artist.get_albums()
>>> artist.get_tracks()
>>> album.get_tracks()
そして、実際には、トラックを開くには:
>>> track.open()
PSおよび\ ion