Recherche de l'URL de podcast se nourrit d'un identifiant iTunes. (API iTMS)
Question
Je regarde une façon de transformer un identifiant de podcast iTunes dans le flux RSS que le producteur de podcast sert.
Je suis conscient du RSS générateur , qui peut être utilisé pour générer un flux de des liens vers des podcasts, mais ces liens sont des pages HTML.
Si vous avez iTunes ouvert, vous pouvez exporter manuellement la liste des podcasts en exportant vers OPML, donc nous pouvons supposer que iTunes sait finalement comment les décoder (c.-à-ils vont pas exclusivement par un hôte iTMS).
Je l'ai regardé document API d'affiliation qui vous donne une agréable retour JSON. Cela vous donne une collectionViewUrl
qui est la même que celles données dans le générateur de RSS, et accessoirement, le iTunes lien Générateur . Il vous donne également la id
, et une charge d'autres choses, y compris un fichier audio aperçu qui n'est pas hébergé sur phobos.
A ce moment, je suis à la recherche de tout ce qui me aider à résoudre cette question, y compris une langue non officielle ou non.
(en fait, je préfère quelque chose de vaguement pris en charge, et en Java, qui ne comportait pas racler HTML).
La solution
Grâce à une combinaison de réponses href="https://stackoverflow.com/questions/423714/get-a-list-of-itunes-podcasts-available"> deux questions , je ont trouvé un moyen de faire ce que je veux.
Exemple de trouver des podcasts
Tout d'abord: saisir une liste des podcasts d'iTunes, en utilisant le générateur de RSS. Je ne sais pas comment les paramètres de requête fonctionnent encore, mais voici un flux RSS pour top des podcasts technologie aux États-Unis.
http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/toppodcasts/sf=143441/limit=25/genre=1318/xml
-
sf
concerne le pays, et est facultative. Je suppose que cette valeur par défaut global en cas d'absence. -
genre
concerne le genre, et est en option. Je suppose que la valeur par défaut à « tous les genres » est absent. -
limit
est facultative, et semble par défaut 9.
Cela vous donne un flux Atom de podcasts. Vous aurez besoin de faire quelques sperlunking avec XPath pour se rendre à l'id ITMS de podcast, mais vous êtes à la recherche de l'identifiant numérique contenu dans l'URL trouvée à la XPath suivante:
/atom:feed/atom:entry/atom:link[@rel='alernate']/@href
Par exemple, l'excellent JavaPosse a un id de 81.157.308.
La réponse à la question
Une fois que vous avez cet identifiant, vous pouvez obtenir un autre document qui vous dira le dernier épisode, et l'URL du flux d'origine. Le hic ici est que vous devez utiliser un iTunes agent utilisateur pour obtenir ce document.
par exemple.
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"
Ceci est un plist contenant des métadonnées sur le podcast, y compris l'URL du flux.
<key>feedURL</key><string>http://feeds.feedburner.com/javaposse</string>
Le XPath pour cela pourrait être quelque chose comme:
//key[@text='feedURL']/following-sibling::string/text()
Avertissement
Pas tout à fait sûr de savoir comment tout cela est stable, ou la façon dont il est juridique. YMMV.
Autres conseils
Dès que vous avez l'ID que vous pouvez l'utiliser dans recherche tel que défini dans
Vous devriez obtenir ce dont vous avez besoin en analysant la réponse avec JSON
Pour des précisions sur la réponse de @juhariis, voici les bases d'extraire l'URL du flux du JSON (python3):
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)
Voici un script / module I fait, qui fait usage de ceci: https: //gist.github .com / theychx / f9fad123bef27bebac665847c7884cd9
Je cherchais depuis longtemps à déconstruire le flux de podcast iTunes. Il est un plist contenant des métadonnées, dont l'un d'eux est un flux RSS. Mon billet de blog Comment abonner à des podcasts iTunes sur Android a des liens à coder en php et en javascript pour extraire l'URL du flux RSS à partir d'un lien iTunes individuel.