2017-05-18 8 views
0

私は音楽のサブレードに基づいてオーディオプレーヤーを構築しようとしています。 私はこのように、APIを使用してフィードを取得することが可能である知っている:各ノードのtitle属性を取得することは非常に参考になっです音楽からうまくフォーマットされたトラックリストを取得するサブデジット

https://www.reddit.com/r/vintageobscura.json

を。
しかし、そのフォーマットは一様ではなく、私は非常に異なる結果を得ています。川では(12" バージョン)

  • Flypopsは - -

    1. 私はレベルミーサンシャインに滞在してみましょう(フランス、サイコ)[?1979]キラードラム(youtube.com)
    2. LolaのPayolaは - 私は宇宙から男に結婚しました[/ 1981 UK](奇数シンセポップ、コズミック)
    3. ブルーイー・ロビンソン - '質問' [R & B /ヒップホップ]
    4. KOKOKO! - 私たちは、KOKOKOです![ダンス/ワールド/電子](2017)コンゴ民主共和国中心部のジャンクから作られた電子音楽
    5. ベアバックは、Krono
    6. によって
    7. 反乱の息子 - 1-2-3(オフィシャル・オーディオ)

    私が欲しいものは私のことができるようにしたいと思い、特にので(アーティスト+タイトルのリストですlast.fmでトラックをスクロールしてください - トラック情報が正しいはずです)

    これを取得する方法はありますか、または私の唯一の選択肢はregexesでフィルタリングすることですか?非常に異なるタイトルのフォーマットがあることを知っていると、これは明らかに非常に危険です。

    Radd.itはそれを行うことができますが、私は方法はわかりません。彼らのデータはOKと思われる。 タイトルをフィルタリングしないhttps://reddit.musicplayer.io/もあります。

    アイデア? ありがとう!

  • +0

    一般的なパターンの正規表現スキャン、またはターゲットストリームの解読(ID3またはyoutube-dl - w * -info-jsonなど) – mario

    答えて

    0

    /r/musicには、均一な提出タイトルがあります。私は、タイトル(source code here)に基づいてSpotifyの推奨トラックを使った投稿にコメントしたスクリプトを書いた。参考までに、私の正規表現はタイトルを取得した:

    regex = r"^([\w\s\/\.,&\+']+ - [\w\s\/\.,&\+\"]+).*\[[\w\s\/\.,&\+'-]+\]$" 
    

    これはPythonであった。同等のPHP正規表現は次のようにする必要があります:

    $regex = '/^([\w\s\/\.,&\+']+ - [\w\s\/\.,&\+\"]+).*\[[\w\s\/\.,&\+'-]+\]$/'; 
    

    私は正規表現では最善ではないので、これを簡略化する方法があります。正規表現hereをテストすることができます。

    リンクURL属性を取得しない限り、他のサブディレクトリについては、あなた自身で行うことができます。投稿が公式のYouTube動画へのリンクであれば、YouTube APIを使用してアーティスト名などの動画からメタデータを取得できます。誰かがあなたのフォローアップの質問hereを尋ねました。

    自然言語を理解することは非常に難しいです。幸運:-)

    関連する問題