yt-dlp-rajiko

yt-dlp用radiko.jpエクストラクターの改良版

現在、この日本語訳はまだ未完です。ご了承ください。
下手な日本語で申し訳ありません

yt-dlp-rajikoとは?

English

yt-dlp-rajikoは配信ダウンローダー「yt-dlp」エクストラクター プラグイン です。エリアフリーで日本の民間ラジオ局の配信された番組をダウンロードできます。生配信も録音できます。日本以外でもでき ます!

スマホアプリとなりすまして、地域制限が完全にバイパスします。この方法は元々jackyzy823さんの 「rajiko」ブラウザ拡張機能のために開発されました。

Compared to yt-dlp's extractor, yt-dlp-rajiko extracts more better metadata for timefree programmes, including tracklists of songs played during the programme (as chapters).
Only the station metadata is extracted for the live streams, not the programme that's airing at the time. (this is the good and right-thinking way of doing it.)

そんなに素敵なら、何でyt-dlpにマージしなかったんですか?

まずは法的リスク。スマホアプリから密輸出したAPIキーを使ってます。リスクが高すぎると忠告された。

続いては…まあ、おおそらく、かなり簡単なことと思います。でも自分にはやる気がない。プラグインでよい。

どうやってインストールしますか?

yt-dlp 2023.06.22以上が必要です。

yt-dlpをpipでインストールしました場合は、このコマンドでyt-dlp-rajikoもpipでインストールできます:
pip3 install --extra-index-url https://427738.xyz/yt-dlp-rajiko/pip/ yt-dlp-rajiko

pipxでインストールしました場合はpipx runpipでご 利用ください。

もしくは、以下のいずれの保存先にyt_dlp_rajiko-1.0-py3-none-any.whlを ダウンロードしてください

最新リリースのSHA256チェックサムはこちら:

70b95f25a62b465f1fb26f0e6faef45236d55a0c12665ef4f754cd39832118cf  yt_dlp_rajiko-1.0-py3-none-any.whl
993e16a3423a43dbeaee59c6eb37086f4e801dcfe03042aa5c5c01b0085fdc4d  yt-dlp-rajiko-1.0.tar.gz (pipが自動検証)

ソースコードは個人gitホストgithubで ご覧いただけます。

If you'd like to be notified of new releases, you can subscribe to this RSS feed:
https://427738.xyz/yt-dlp-rajiko/CHANGELOG.xml
If you'd like to see the changelogs of past releases, you can read that feed in your browser as well.
Please note that the feed is currently only available in English.

If you'd prefer to be notified by email, you can use one of the many RSS to email services. I've tested Feedrabbit and found it to work, but other options are available. Alternatively, shoot me a message with your email address and I'll work something out.

ご利用方法

こんな風にご利用する

# タイムフリーダウンロードの場合
yt-dlp 'https://radiko.jp/#!/ts/INT/20240308230000'
# 生録音の場合
yt-dlp 'https://radiko.jp/#!/live/CCL'
# 生録音の速記
yt-dlp 'https://radiko.jp/#FMT'

検索ページで使えると、ダウンロードが少し自動になります。

# 角松敏生に関連する各番組
yt-dlp 'https://radiko.jp/#!/search/live?key=角松敏生&filter=past&region_id=all'
# 大阪より特定番組
yt-dlp 'https://radiko.jp/#!/search/live?key=world%20jazz%20warehouse&filter=past&area_id=JP27'

基本的にブラウザからコピーされたURLは大丈夫です。

If you can reliably get it in the search, you can somewhat-automate downloading it. If there's a programme that airs on multiple stations, the best way to filter down to the station you want is to use the search's 地域 (region) filter.

推奨設定

yt-dlp's default settings aren't ideal for yt-dlp-rajiko. These are the settings I use to make it better.

TL;DR: -N 30 --embed-metadata --embed-thumbnail -o "%(title)s %(timestamp+32400>%Y-%m-%d_%H%M)s [%(id)s].%(ext)s" (put that in an alias)
+ --download-archive "archive" --playlist-reverse --break-on-existing --break-per-input if using the search page

メタデータ

radiko offers a lot of metadata about its shows, a fair amount of which yt-dlp-rajiko extracts. But yt-dlp's default settings don't expose anything except the title.

Add the argument --embed-metadata to your command. This will embed the show name, description, station name and airdate into the file, as tags that should be picked up by a decent media player. It also embeds the tracklist of songs played as timestamped chapters.

You can also add --embed-thumbnail to add the show image as cover art, which your media player can display.

I use an output template to add the airdate into the filename as well:
-o "%(title)s %(timestamp+32400>%Y-%m-%d_%H%M)s [%(id)s].%(ext)s" -> World Jazz Warehouse 2024-05-19_2300 [CCL-20240519230000].m4a
+32400 is the JST time offset (+9h), since yt-dlp's timestamps are all UTC.

Sample mediainfo output

Efficiency

-N (並列ダウンロード機能)を利用すると、ダウンロードがかなり速くなります。

For search queries/automation you should:

That way you can avoid scraping any more than necessary. (faster for you, less load on radiko, everyone wins)

putting it all together

毎回そんな全部のアーギュメントを追加するはめんどくさい。そこで、yt-dlpのコンフィグにエイリアスを作る。一引数だけを追加で も、 全部がでてきます。so you can just type one short thing and get all of the settings.

Make a config file in one of the supported locations, and add --alias rdk 'PASTE THE ARGUMENTS HERE' to it. Then when you want to download from radiko, do yt-dlp 'url' --rdk and it'll all "just work™". Unfortunately site-specific config isn't possible (yet?), so you will have to remember to add that --rdk every time.

If you're going to be using the search pages regularly, you should put your command into a shell/batch/etc script. That way you can just run it after the programme(s) you're interested in have aired, with no extra faff.

お問い合わせ

Github で報告してください。
故障を報告する場合は、ぜひverbose logを含めてください (コマンドの終わりに-vを追加しま す)。大変助かります。

雑記(英語のみ)

専用ページで。以前はGithub Wikiでホストされました。

謝辞

The mobile spoofing code is based heavily on the rajiko browser extension by jackyzy823, released under the Unlicense. In particular, the fake phone details and GPS coordinate generation code have been copied almost verbatim. And of course, the mobile API key was (to the best of my knowledge) originally obtained by jackyzy823. You can read their write-up (in Chinese) here.

The authentication code, and some parts of the metadata extraction, have been adapted from yt-dlp's radiko extractor, which was primarily authored by Lesmiscore (also released under the Unlicense).