Encontrar o URL para o podcast alimentar de um ID do iTunes. (API ITMS)
Pergunta
Estou vendo uma maneira de transformar um ID de podcast do iTunes no feed RSS que o produtor de podcast atende.
Estou ciente do Gerador RSS, que pode ser usado para gerar um feed de links para podcasts, mas esses links são para páginas HTML.
Se você tem o iTunes aberto, pode exportar manualmente a lista de podcasts exportando para o OPML, para que possamos supor que o iTunes eventualmente saiba como decodificá -los (ou seja, eles não estão passando exclusivamente por um host ITMS).
Eu olhei para o Documento da API de afiliado O que te dá um bom JSON de volta. Isso te dá um collectionViewUrl
que é o mesmo que os dados no gerador RSS e, aliás, o Generador de link do iTunes. Também te dá o id
, e toda a carga de outras coisas, incluindo um arquivo de áudio de visualização que não está hospedado nos Phobos.
Neste ponto, estou procurando qualquer coisa que me ajudasse a resolver essa pergunta, incluindo qualquer idioma, não oficial ou não.
(Na verdade, eu preferiria algo vagamente apoiado e, em Java, que não envolveu raspar o HTML).
Solução
Através de uma combinação de respostas de esses dois Perguntas, encontrei uma maneira de fazer o que quero.
Exemplo de encontrar podcasts
Primeiro: pegue uma lista de podcasts do iTunes, usando o gerador RSS. Ainda não tenho certeza de como os parâmetros de consulta funcionam, mas aqui está um feed RSS para os melhores podcasts de tecnologia nos EUA.
http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/toppodcasts/sf=143441/limit=25/genre=1318/xml
sf
relaciona -se ao país e é opcional. Eu acho que isso padrão é global se ausente.genre
relaciona -se ao gênero e é opcional. Eu acho que esse padrão para "todos os gêneros" está ausente.limit
é opcional e parece padrão para 9.
Isso oferece um feed de átomos de podcasts. Você precisará fazer um pouco de Sperlunking com o XPath para chegar ao IDM ID do podcast, mas você está procurando o ID numérico contido no URL encontrado no XPath a seguir:
/atom:feed/atom:entry/atom:link[@rel='alernate']/@href
Por exemplo, o excelente Javapaosse possui um ID de 81157308.
A resposta para a pergunta
Depois de ter esse ID, você poderá obter outro documento que informará o último episódio e o URL de alimentação original. A captura aqui é que você precisa usar um agente de usuário do iTunes para obter este documento.
por exemplo
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 é uma plista que contém alguns metadados sobre o podcast, incluindo o URL da alimentação.
<key>feedURL</key><string>http://feeds.feedburner.com/javaposse</string>
O XPath por isso pode ser algo como:
//key[@text='feedURL']/following-sibling::string/text()
Isenção de responsabilidade
Não tenho certeza de quão estável é isso ou quão legal é. Ymmv.
Outras dicas
Assim que você tiver o ID, você pode usá -lo na pesquisa, conforme definido em
Você deve conseguir o que precisa analisar a resposta com JSON
Para elaborar a resposta de @juhariis, aqui estão os conceitos básicos de extrair o URL da alimentação do 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)
Aqui está um script/módulo que fiz, que faz uso disso: https://gist.github.com/theychx/f9fad123bef27bebac665847c7884cd9
Procurei por muito tempo para desconstruir o feed do podcast do iTunes. É uma plata contendo meta dados, dos quais um deles é um feed RSS. Minha postagem no blog Como se inscrever nos podcasts do iTunes no Android possui links para código no PHP e em JavaScript para extrair o URL para o feed RSS de um link individual do iTunes.