Encontrar la URL para los alimentos de podcast de una identificación de iTunes. (API ITM)

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

  •  21-09-2019
  •  | 
  •  

Pregunta

Estoy mirando una forma de convertir una identificación de podcast de iTunes en el feed RSS que sirve el productor de podcast.

Soy consciente del Generador RSS, que se puede utilizar para generar una alimentación de enlaces a podcasts, pero estos enlaces son a las páginas HTML.

Si tiene iTunes abiertos, puede exportar manualmente la lista de podcasts exportando a OPML, para que podamos suponer que iTunes eventualmente sabe cómo decodificarlos (es decir, no están pasando exclusivamente por un host de ITM).

He mirado el Documento API de afiliado Lo que te da un buen json de regreso. Esto te da un collectionViewUrl que es lo mismo que los que se dan en el generador RSS y, por cierto, el Generador de enlaces de iTunes. También te da el id, y una carga completa de otras cosas, incluido un archivo de audio de vista previa que no está alojada en los Phobos.

En este punto, estoy buscando cualquier cosa que me ayude a resolver esta pregunta, incluido cualquier idioma, no oficial o no.

(De hecho, preferiría algo vagamente compatible, y en Java, eso no implicó el raspado HTML).

¿Fue útil?

Solución

A través de una combinación de respuestas de estas dos Preguntas, he encontrado una manera de hacer lo que quiero.

Ejemplo de encontrar podcasts

Primero: tome una lista de podcasts de iTunes, usando el generador RSS. Todavía no estoy seguro de cómo funcionan los parámetros de consulta, pero aquí hay un Feed RSS para los mejores podcasts de tecnología en los EE. UU.

http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/toppodcasts/sf=143441/limit=25/genre=1318/xml
  • sf se relaciona con el país y es opcional. Supongo que este valor predeterminado a Global si está ausente.
  • genre se relaciona con el género y es opcional. Supongo que este valor predeterminado a "todos los géneros" está ausente.
  • limit es opcional y parece predeterminado a 9.

Esto te da una alimentación de átomos de podcasts. Tendrá que hacer un poco de muelles con XPath para llegar al ID de podcast ITMS, pero está buscando la ID numérica contenida en la URL que se encuentra en el siguiente XPath:

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

Por ejemplo, el excelente Javaposse tiene una ID de 81157308.

La respuesta a la pregunta

Una vez que tenga esa identificación, puede obtener otro documento que le dirá el último episodio y la URL de alimentación original. La captura aquí es que necesita usar un agente de usuario de iTunes para obtener este documento.

p.ej

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"

Esta es una Plist que contiene algunos metadatos sobre el podcast, incluida la URL de alimentación.

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

El XPath para esto podría ser algo como:

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

Descargo de responsabilidad

No estoy completamente seguro de cuán estable es nada de esto, o cuán legal es. Ymmv.

Otros consejos

Tan pronto como tenga la identificación, puede usarla en la búsqueda como se define en

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

Debe obtener lo que necesita analizando la respuesta con JSON

Para elaborar la respuesta de @Juhariis, aquí están los conceptos básicos de extraer la URL de alimentación del 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)

Aquí hay un script/módulo que hice, que hace uso de esto: https://gist.github.com/theychx/f9fad123bef27bebac665847c7884cd9

Busqué durante mucho tiempo para deconstruir la alimentación del podcast iTunes. Es una Plist que contiene meta datos, de los cuales uno de ellos es un alimento RSS. Mi publicación de blog Cómo suscribirse a los podcasts de iTunes en Android Tiene enlaces al código en PHP y en JavaScript para extraer la URL a la alimentación RSS de un enlace de iTunes individual.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top