Tuesday, October 12, 2010

iTunes U RSS feeds

Часто, публичное в iTunes U которое читалось не last fall, а обновляется сейчас, хочется качать как подкаст без помощи толстопузого iTunes, что как бы официально нельзя. Ну, конечно, разумеется можно, только нужно для каждого курса знать URL секретной feed.

Если я правильно понял, университеты либо просто дают iTunes U свою feed (тогда URL ее, как правило, указан на сайте университета), либо закачивают файлы в эппловскую тучу, которая генерирует RSS сама. То есть, в любом случаи iTunes U сперва тянет feed и ничем это от обычного подкастинга не отличается.

Например, на talks в Yale Entrepreneurial Institute, подписаться никак, кроме как через благодаря посредством iTunes не дают. Но если посмотреть, например, wireshark'ом, куда iTunes незаметно лезет за файлами, то мы видим вот такую URL:

http://deimos3.apple.com/WebObjects/Core.woa/Feed/yale.edu-dz.4357409176.04357409178

Content-Type у нее почему-то text/html, но эта обычная, скучная rss 2.0. Проблемы начинаются, если скачать несколько (например, 4) enlosures одну за другой. В зависимости от степени тупости вашего podcacher'а, можно получить 1 (один) файл enclosure.mp3 содержащий либо 1-ю по списку enlosure либо 4-ю, но не все 4 файла по отдельности.

Почему? URL на mp3 файлы в у iTunes U вот такой:

http://deimos3.apple.com/WebObjects/[всякое].4721501315/enclosure.mp3

где изменяется только набор цифр, а предполагаемое имя для файла дается всегда одинаковое enclosure.mp3--что привело предыдущую версию uraniacast в тихое помешательство. Впрочем, в хедерах той URL стоит Content-Disposition: inline; filename=2001_conde.mp3, что дает некоторую надежду, если попытаться сказать podcacher'у: "смотри на Content-Disposition, а не на URL".

To make long story short. Теперь в uraniacast 0.16 можно указывать feed-specific downloader, а не только глобальный для всех. Для замученного Yale Entrepreneurial Institute получилось так:

# a crappy link from itunes
set feed(biz.yale.entrepreneurial_institute) {
    url {http://deimos3.apple.com/WebObjects/Core.woa/Feed/yale.edu-dz.4357409176.04357409178}
    sort decreasing
    fetch {curl -OJ --noproxy * %u}
}

Huzza!

No comments:

Post a Comment