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).

Était-ce utile?

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

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

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top