iTunes IDからポッドキャストフィードのURLを見つける。 (ITMS API)

StackOverflow https://stackoverflow.com/questions/2306470

  •  21-09-2019
  •  | 
  •  

質問

iTunesポッドキャストIDをポッドキャストプロデューサーが提供するRSSフィードに変える方法を見ています。

私はそれを知っています RSSジェネレーター, 、ポッドキャストへのリンクのフィードを生成するために使用できますが、これらのリンクはHTMLページにあります。

iTunesが開いている場合は、OPMLにエクスポートすることでポッドキャストのリストを手動でエクスポートできます。そのため、iTunesは最終的にそれらをデコードする方法を知っていると推測できます(つまり、ITMSホストを排他的に通過していません)。

私は見ました アフィリエイトAPIドキュメント それはあなたにいくつかの素敵なJSONバックを与えます。これはあなたにaを与えます collectionViewUrl これは、RSSジェネレーターで与えられたものと同じです。 iTunesリンクジェネレーター. 。それはあなたにも与えます id, 、およびPhobosでホストされていないプレビューオーディオファイルを含む他の多くのもの。

この時点で、私はこの質問を解決するのに役立つものを探しています。

(実際、私は漠然とサポートされているものを好む、そしてJavaでは、HTMLスクレイピングを伴わなかった)。

役に立ちましたか?

解決

からの答えの組み合わせを通して これらは 2 質問、私は自分がやりたいことをする方法を見つけました。

ポッドキャストを見つける例

最初:RSSジェネレーターを使用して、iTunesからのポッドキャストのリストを取得します。クエリパラメーターがまだどのように機能するかはわかりませんが、これは米国のトップテックポッドキャスト用のRSSフィードです。

http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/toppodcasts/sf=143441/limit=25/genre=1318/xml
  • sf 国に関連しており、オプションです。欠席した場合、これはグローバルにデフォルトであると思います。
  • genre ジャンルに関連しており、オプションです。これが「すべてのジャンル」にデフォルトであると思います。
  • limit オプションであり、デフォルトで9になるようです。

これにより、ポッドキャストの原子フィードが得られます。 XpathでいくつかのSperlunkingを行う必要があります。PodcastのITMS IDに到達する必要がありますが、次のXPathにあるURLに含まれる数値IDを探しています。

/atom:feed/atom:entry/atom:link[@rel='alernate']/@href

たとえば、優れたJavaposseのIDは81157308です。

質問への答え

そのIDを取得したら、最後のエピソードと元のフィードURLを伝える別のドキュメントを取得できます。ここでのキャッチは、このドキュメントを取得するためにiTunesユーザーエージェントを使用する必要があることです。

例えば

wget --user-agent iTunes/7.4.1 \
     --no-check-certificate \ 
     "https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/com.apple.jingle.app.finance.DirectAction/subscribePodcast?id=81157308&wasWarnedAboutPodcasts=true"

これは、フィードURLを含むポッドキャストに関するいくつかのメタデータを含むプリストです。

<key>feedURL</key><string>http://feeds.feedburner.com/javaposse</string>

これに対するXpathは次のようなものかもしれません:

//key[@text='feedURL']/following-sibling::string/text()

免責事項

これがどれほど安定しているか、またはそれがどれほど合法かは完全にはわかりません。 ymmv。

他のヒント

IDができたらすぐに、で定義されているようにルックアップで使用できます

https://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html

JSONで応答を解析することで、必要なものを手に入れる必要があります

@juhariisの答えを詳しく説明するために、JSON(Python3)からフィードURLを抽出する基本を次に示します。

from urllib.request import urlopen
from urllib.parse import urlparse
import codecs
import json

podcast_url = 'https://itunes.apple.com/us/podcast/grow-big-always/id1060318873'
ITUNES_URL = 'https://itunes.apple.com/lookup?id='
parsed = urlparse(podcast_url)
id = parsed.path.split('/')[-1][2:]
reader = codecs.getreader('utf-8')
with urlopen(ITUNES_URL + id) as response:
    feed = json.load(reader(response))['results'][0]['feedUrl']
print(feed)

これが私が作成したスクリプト/モジュールです。これを利用してください。 https://gist.github.com/theychx/f9fad123bef27bebac665847c7884cd9

iTunesポッドキャストフィードを分解するために長い間検索しました。これはメタデータを含むプリストであり、そのうちの1つはRSSフィードです。私のブログ投稿 AndroidでiTunesポッドキャストを購読する方法 PHPおよびJavaScriptのコードへのリンクがあり、個々のiTunesリンクからRSSフィードにURLを抽出します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top