iTunes IDからポッドキャストフィードのURLを見つける。 (ITMS API)
質問
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ができたらすぐに、で定義されているようにルックアップで使用できます
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を抽出します。