Посредством комбинации ответов из этих двух вопросов я нашел способ сделать то, что я хочу.
Пример поиска подкастов
Во-первых: возьмите список подкастов из iTunes, используя генератор RSS. Я еще не уверен, как работают параметры запроса, но вот RSS-лента для ведущих технических подкастов в США.
http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/toppodcasts/sf=143441/limit=25/genre=1318/xml
sf
относится к стране и является необязательным. Я бы предположил, что по умолчанию это глобально, если отсутствует.
genre
относится к жанру и является необязательным. Я полагаю, что по умолчанию «все жанры» отсутствуют.
limit
не является обязательным, и, по-видимому, по умолчанию равен 9.
Это дает вам Atom ленту подкастов. Вам нужно будет немного сперлинговать с XPath, чтобы получить ITMS-идентификатор подкаста, но вы ищете числовой идентификатор, содержащийся в URL-адресе, указанном в следующем XPath:
/atom:feed/atom:entry/atom:link[@rel='alernate']/@href
Например, отличный JavaPosse имеет идентификатор 81157308.
Ответ на вопрос
Получив этот идентификатор, вы можете получить другой документ, в котором будет указан последний эпизод и оригинальный 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.