v1.16
2026-10-25
This release switches the default format for timefree30 programmes from dr-wowza.radiko-cf.com to tf-f-rpaa-radiko.smartstream.ne.jp. This works around an issue where the wowza stream could fail to return fragments for older programmes ("[download] Got error: HTTP Error 404: Not Found. Retrying fragment X (X/XX)"), causing missing sections of audio in the final download. This change only affects programmes older than 7 days.
If you have any issues, please do get in touch.
v1.15
2026-09-18
This release fixes an issue where AI chapters could not be extracted from multi-part programmes.
For example, TBS こねくと is a multi-part programme, split into 3 different URLs for 2PM, 3PM, and 4PM.
v1.14
2026-09-11
This release adds support for radiko's new AI Chapters feature.
Related, it adds an extractor argument to set the chapter source. the default is ai,music, to get the AI chapters and the music tracklist.
If you don't want the AI chapters, you can set --extractor-args rajiko:chapters=music to only get the tracklist, as before.
If you don't want the tracklist chapters, you can set --extractor-args rajiko:chapters=ai to only get the AI chapters.
If you don't want either of them, really you should remove --embed-chapters from your command. But you can set --extractor-args rajiko:chapters= (or set any value other than music and ai) to disable chapters entirely, if you want.
v1.13
2026-08-19
This release fixes an issue where downloading some r_seasons, persons, and podcast URLs failed with NoneType' object has no attribute 'get'.
In doing so, I changed the extractor from scraping the mobile site's Next.js hydration data, to directly calling radiko's gRPC APIs.
Which is a big technical change, but hopefully you shouldn't notice any difference when you actually use it :)
Hopefully all should go well, but if you encounter any issues, please get in touch.
if you installed yt-dlp-rajiko with the .whl, you should switch to the plugin bundle. It works the same as the .whl; just drop the file in the right folder.
yt-dlp-rajiko uses the protobug library for gRPC. The .whl doesn't include this library, so it won't work with r_seasons/persons/podcast URLs any more. The plugin bundle does include the library, so it will work.
v1.12
2026-08-01
This release:
- Fixes an issue where downloading
/r_seasons/,/persons/, and podcast URLs failed with "Unable to extract next.js data". - Adds a filesize estimate, so you can tell roughly when a download will finish, even without a real progress indicator.
v1.11
2025-11-23
This release fixes a bug where streams were extracted incorrectly.
Multiple formats were listed, but they all downloaded the same stream.
Fortunately that stream was the best one (dr-wowza.radiko-cf.com), and the corresponding format was selected by default.
SO you shouldn't notice a difference from this fix.
but you know, its a great embarassing cockup that i should fix lol
It also changes how /persons/ URLs are extracted.
It now only returns programmes from the key station, matching what you see on the site.
This means that the key-station-only extractor arg is no more, as it is now the default behaviour.
v1.10
2025-11-09
This release fixes TimeFree downloading, following the removal of a stream on radiko's end.
Unfortunately, the workaround involved means that we lose the download progress indicator.
but downloads are still fast, which is the most important bit :)
It also extracts a bit more info for r_seasons programme URLs, so you can see the nice picture in GUIs and such :)
ALSO while I have your attention:
I updated the website a bit, particularly the usage section. Hopefully it's a bit clearer and easier to use now.
v1.9
2025-09-19
>release new version
>4 days pass
>site pushes breaking change that needs a new release to fix
ffs, sods law isnt it
this release fixes search filtering for newly-copied URLs, and adds support for the new podcast search function (even though it isn't very useful)
新リリースから4日後、radikoが修正が必要なブレイキングチェンジを導入した
マーフィーの法則だね
このリリースは新しくコピーしたURLの「対象」設定を修正し、そしてあまり有用でない新しいポッドキャスト検索ページに対応する
If you use pip, you should be able to upgrade with pip install --upgrade yt-dlp-rajiko.
If you installed manually, you can download the updated plugin bundle here.
The SHA256 checksums are as follows:
5800258edec65a4b5230679cee55fc186f05ed6e89c89a63acc698ce245dbb16 yt_dlp_rajiko-1.9.bundle.zip 106085f72608562f09bfb2319a1437922aca2d7df4f94af37ade4832b50b0ab1 yt_dlp_rajiko-1.9-py3-none-any.whl 4a288b04fb8e4102b15074644330ae189f7fb53af8bfd5827eb19cff6cd695e8 yt_dlp_rajiko-1.9.tar.gz
v1.8
2025-09-14
This release adds support for radiko podcasts. Specifically, these types of URLs:
https://radiko.jp/podcast/channels/
https://radiko.jp/podcast/episodes/
unfortunately radiko has fallen victim to modern software development
As such, the protobug library is required to download more than the latest 20 episodes from podcast /channels/ pages.
If you install the plugin with pip, protobug should be installed along with it.
If you install manually, you will need to get the .bundle.zip instead of the .whl.
ofc if you don't care about podcasts then it doesn't matter
It also adds support for https://radiko.jp/r_seasons/ programme pages.
This release also extracts a different image for the live station thumbnail, now that the previous field has been replaced with a placeholder image.
Specifically, it uses the small station logo you see above the programme on the site. It's not as good as what was there before, but it's something, at least.
This release also fixes an issue where some live streams couldn't be recorded as they did't work with FFmpeg.
I've disabled the blacklist that was in use for live streams, so you should see more formats for these URLs.
Also:
yt-dlp-rajiko is now available on PyPi.
This means you can now install/upgrade/add to requirements.txt/etc in the normal way, without the `--extra-index-url` bit.
The custom index will still continue to work, so you shouldn't have to change anything if you don't want to.
このリリースでは、
radikoポッドキャストに対応しました。
とくに、こちらのURL
https://radiko.jp/podcast/channels/〇〇
https://radiko.jp/podcast/episodes/〇〇
残念ながら、radikoが現代ソフト開発の犠牲になってしまいました。
そのため、ポッドキャスト/channels/ページから最新の20話以上をダウンロードする場合はprotobugライブラリが必要です。
protobugはyt-dlp製のProtobuf操作ライブラリです。
pipでプラグインをインストールした場合は、protobugも一緒にインストールされます。
手動でインストールする場合は、.whlではなく、.bundle.zipをダウンロードしてください。ご不便をおかけして申し訳ございません。
もちろん、ポッドキャストに興味がない場合は、どちらをダウンロードしても構わない。
https://radiko.jp/r_seasons/〇〇の番組ページにも対応しました。
また、
生配信のthumbnailをradikoプレースホルダー画像から、放送局のロゴに替えました。
前の放送局ビジュアルの画像より劣るけど、ないよりマシ。
また、
FFmpegに対応していない一部の生配信が録音できなかったバグを修正しました。
生配信で使っていたブラックリストを無効にしましたので、これらのURLでより多くのformatが見られます。
PyPiにyt-dlp-rajikoを登録しました。
--extra-index-urlはもう不要になりました。
インストール、アップグレード、requirements.txtに追加するなどがより簡単になりました。
もちろん、前の--extra-index-urlも引き続き利用できます。
If you use pip, you should be able to upgrade with pip install --upgrade yt-dlp-rajiko.
If you installed manually, you can download the updated plugin bundle here.
The SHA256 checksums are as follows:
10d56b9cac6a191ef07b4931d76deb4bb048c433e4fe2f05546d5cfbfe3ae45d yt_dlp_rajiko-1.8.bundle.zip 31c4f9463b5f4039ffc36bb595dfcc3d1427837b89cc6f38a150690fef058c1a yt_dlp_rajiko-1.8-py3-none-any.whl 8b7fb0d06e62cf9eebdbf17ce4e164b84a058172ebe0cdd36f7084d00123725b yt_dlp_rajiko-1.8.tar.gz
v1.7
2025-06-09
seems like a new release every week, sorry about that
This release fixes a bug where Search URLs only returned one result.
This bug was introduced in v1.5 / commit a659b48a20b6241a68fc046c86c9ad0f71c9bd86.
I didn't notice it at the time because I only download weekly programmes, so I only get one (useful) result anyway.
We're still in the timefree30 window for v1.5's release date, so if you have an account you should be able to recover anything you missed.
I'll try and improve my testing processes so something like this doesn't happen again in future.
expect a new release next week with the stuff i fixed after running the tests
毎週リリースですね…ごめんなさい
バグフィックスリリースです。
このリリースでは、
検索URLが1つの結果しか返さないバグを修正します。
このバグはv1.5 / commit a659b48a20b6241a68fc046c86c9ad0f71c9bd86で導入しました。
私は普段、週刊誌番組だけをダウンロードしますので、いずれにしても1つの結果しか返さない。だからその時気づいてなかった。
今はまだv1.5リリース日のタイムフリー30期間以内ので、アカウントがあれば、逃した番組がまだ取り戻せると思います。
今後はテストプロセスを改善していきたいと思います。
If you use pip, you should be able to upgrade with pip install yt-dlp-rajiko --upgrade --extra-index-url https://427738.xyz/yt-dlp-rajiko/pip/.
If you installed manually, you can download the updated .whl.
The SHA256 checksum should be 35a6d9371ac60ca526ebae519568b50a73c930acdb3fa6ad994b32d3c5d7c04a.
v1.6
2025-06-01
another hotfix release
This release fixes live recording (again)
It also fixes a SyntaxWarning that occurs with Python 3.12+
またホットフィックスリリースです。
このリリースは(また)生配信の録音を修正します。
Python 3.12以上で発生するSyntaxWarningも修正します。
I had two choices for how to do the fix this time:
- add another special case, so that both live and timefree30 use the
pc_html5streams (so really timefree7 is the exception...) - or, now that we have the chunks workaround, I could switch everything over to
pc_html5and have done
Both work, but I'm not sure I want to switch everything to the chunks workaround just yet.
I've been using it and it works well, but I think probably the less it gets used the better. It's not exactly subtle...
So for now I've gone with the more conservative choice of adding a special case, so that timefree (7) can keep working as it always has, without the workaround.
But I have a plan for if the on-demand stream gets taken away, which is the important thing.
I didn't catch the SyntaxWarning on my machine because I'm still running python 3.10. Apologies for that.
oh well i'll update one day™
If you use pip, you should be able to upgrade with pip install yt-dlp-rajiko --upgrade --extra-index-url https://427738.xyz/yt-dlp-rajiko/pip/.
If you installed manually, you can download the updated .whl.
The SHA256 checksum should be 1664969505785b76fb6b7c85a5b8f498039576d6abcdf136f3e007edcda3fcdd.
v1.5
2025-05-24
Changes in this release:
- Made search URLs far more efficient if you use a
--download-archive-- it no longer needs to do a full extraction just to get the id - Added a workaround to download as-live formats (i.e. timefree30) quickly, by grabbing in 5 min chunks and putting them together at the end
(disable with
--extractor-args rajiko:no_as_live_chunks) - Fixed an issue where downloads would fail entirely if the tracklist didn't load.
I encountered this on the Music Awards Japan 2025 pop-up stream. I don't think it's an issue with real broadcast stations.
I should note that the minimum version of yt-dlp is now 2025.02.19.
This is because the feature needed for the chunks workaround was only added recently.
このリリースでは、
--download-archiveを使う方に、検索URLはもっと効率に過程する。- タイムフリー30のダウンロードを加速するワークアラウンドを追加しました。
- オンエアした曲のリストがなくなった場合の失敗を解決しました。
yt-dlp 2025.02.19以上が必要です。
If you use pip, you should be able to upgrade with pip install yt-dlp-rajiko --upgrade --extra-index-url https://427738.xyz/yt-dlp-rajiko/pip/.
If you installed manually, you can download the updated .whl from this post's link.
The SHA256 checksum should be 8d8df258a9e9404cc9dde73330183db895905c18bf202875d5da5adf2876965a.
v1.4
2025-03-30
Changes in this release:
- Made search URLs far more efficient if you use a
--download-archive-- it no longer needs to do a full extraction just to get the id - Added a workaround to download as-live formats (i.e. timefree30) quickly, by grabbing in 5 min chunks and putting them together at the end
(disable with
--extractor-args rajiko:no_as_live_chunks) - Fixed an issue where downloads would fail entirely if the tracklist didn't load.
I encountered this on the Music Awards Japan 2025 pop-up stream. I don't think it's an issue with real broadcast stations.
I should note that the minimum version of yt-dlp is now 2025.02.19.
This is because the feature needed for the chunks workaround was only added recently.
このリリースでは、
--download-archiveを使う方に、検索URLはもっと効率に過程する。- タイムフリー30のダウンロードを加速するワークアラウンドを追加しました。
- オンエアした曲のリストがなくなった場合の失敗を解決しました。
yt-dlp 2025.02.19以上が必要です。
If you use pip, you should be able to upgrade with pip install yt-dlp-rajiko --upgrade --extra-index-url https://427738.xyz/yt-dlp-rajiko/pip/.
If you installed manually, you can download the updated .whl from this post's link.
The SHA256 checksum should be 10944c2c95a271b9a469d8be055fe38f684b24f04cf288339e39a6270fbbc8cf.
v1.3
2025-03-06
Quick hotfix release to un-break certain search URLs
If you've not had issues with your search returning HTTP Error 415: Unsupported Media Type, then there is no need to upgrade.
ある検索URLの失敗を解決するホットフィックスリリースです。
検索で「HTTP Error 415: Unsupported Media Type」が発生しなければ、アップグレードの必要はありません。
radiko's search API backend seems to have changed
the site used to use "cul_area_id" in the search URLs, now it uses "cur_area_id" (with an r)
and it outright rejects the old "cul" one with HTTP Error 415: Unsupported Media Type
probably doesn't affect you, but it did affect me, so I'm fixing it
idk why they felt the need to break the old one
the site also started using a different search API endpoint, so I updated the extractor to match
the old one still works, but probably better to change now then get caught out later
If you use pip, you should be able to upgrade with pip install yt-dlp-rajiko --upgrade --extra-index-url https://427738.xyz/yt-dlp-rajiko/pip/.
If you installed manually, you can download the updated .whl from this post's link. The SHA256 checksum should be 25776934bca2046e9c8e1f9cdad73dfa9801c7798d0e6748f974f315f5aad11f.
v1.2
2025-01-22
TL;DR
- Added Timefree 30 support (you need an account, downloads are real-time)
- Added support for https://radiko.jp/persons/ URLs, as seen in 出演者の追加情報 sidebar
- Added an extractor arg to filter down to just key stations when using those /persons/ URLs
このリリースの変更点
- タイムフリー30のログイン対応。ただし、ダウンロードはリアルタイムです。1時間の番組をダウンロードするには1時間かかります。
- 「出演者の追加情報」に含まれる https://radiko.jp/persons/ URLに対応
/persons/のためのキー局をフィルタリングする extractor arg--extractor-args rajiko:key-station-only(例えば、オールナイトニッポンはニッポン放送だけ、JFN系列はTokyo FMだけ、など)
必要ないときはログインしないでください。
ごめんなさい、これが私の日本語の限界です🙇
This release adds support for Timefree 30 programmes. If you have a Timefree 30 subscription, you can login with --username and --password, or cookies.
Unfortunately it only works with streams that are delivered "as-live", so you can only download in real time (ie, a 1 hour programme will take 1 hour to save).
You need a timefree 30 account to download timefree 30 programmes.
You probably shouldn't login/pass cookies unless you're actually downloading a programme that needs it.
It's all well and good if some anonymous person pops up in Hokkaido, then someone else in Tokyo a minute later, then another in Osaka after that...
But if you're logged in, suddenly you're popping up in Hokkaido, then you're in Tokyo a minute later, then you're in Osaka -- it's a lot more suspicious.
So it's best to stay logged out most of the time IMO.
+ that way your download won't randomly take 3 hours because some old programmes turned up in the search results lol
This release also adds suport for https://radiko.jp/persons/ URLs, like https://radiko.jp/persons/33635.
You can find these URLs... somewhere lol
They're meant to show up in the right-hand sidebar on the player pages, but it seems a bit hit-or-miss whether they actually do.

I think they're also used on news.radiko.jp
Anyway, if/when you do find it, the page shows all the available programmes featuring that person - that's what'll be extracted.

(for some reason the list doesn't show when I use the rajiko extension, but does when I use a VPN. the extractor works either way)
Related to this, this release adds a new extractor arg: --extractor-args rajiko:key-station-only.
It filters results down to just the originating/"key" station. - so for networked programmes like All Night Nippon,
you'll only get ニッポン放送, not all 36 member stations, for example.
At the moment, this only works with the /persons/ URLs - but I suspect it'll become more useful as time goes on.
As a non-feature update, I added "mobile" as a possible value of the X-Radiko-Connection header during token negotiation.
(Possible values: mobile, wifi, chosen randomly every time)
that's all
If you use pip, you should be able to upgrade with pip install yt-dlp-rajiko --upgrade --extra-index-url https://427738.xyz/yt-dlp-rajiko/pip/.
If you installed manually, you can download the updated .whl from this post's link. The SHA256 checksum should be 4ee278fd138ebc305deeedc7e2a183afe91903607f28c513731d9e3888c3df11.
v1.1
2024-07-07
This release just tweaks some things, mostly the packaging.
Most likely you won't notice a difference, but it'll make my life a bit easier.
This release:
- Removes yt-dlp from the package's dependencies. This lets you do things like installing yt-dlp with the binary and installing the plugin with pip, without pip installing an extra yt-dlp in the process. Note that yt-dlp is still required to actually use the plugin.
- Sets the
uploader_idfield, for parity with the extractor from yt-dlp proper. This value was already available in thechannel_idfield. - Packages the API key as a separate (binary) file, instead of having a massive base64 blob in the extractor code. This should work fine, but please get in touch if it doesn't work for you.
If you use pip, you should be able to upgrade with pip install yt-dlp-rajiko --upgrade --extra-index-url https://427738.xyz/yt-dlp-rajiko/pip/.
If you installed manually, you can download the updated .whl from this post's link. The SHA256 checksum should be d3fdefb4c5c1d5d64c58b3f805bf64ae95f3dd9f496742d214e16e33e677c600.
v1.0
2024-04-02
This is a purely administrative release. There are no changes to the actual plugin.
However, releases are now actually distributed from the official website, rather than just having to pull off master.
This release:
- Moves the main presence off github, to a dedicated webpage under my full control.
- Properly sets up the build system so that releases can actually be released.
Please see the homepage for initial installation instructions.
v0.3.1
2024-03-09
I noticed the significant spike in git clones following the previous release, and decided to increment the version number again.
This release:
- Fixes a bug where the user agent used during token negotiation was botched due to using the wrong variable.
- Removes dependency on the secrets library (stdlib).
- Specifically links to the Github issues page when token negotiation fails.
v0.3.0
2024-03-06
After almost a year of neglecting it, I decided to increment the version number.
This release:
- Adds support for the tracklist of songs played during the programme, via embedding as chapters.
- Adds support for multiple pages of search, and fixes bug where search via the history page did not work.
- Adds support for share links.
- Fixes a bug where stations with _ in the ID were not supported, e.g. FM_OKINAWA.
- Switches licence, from the Unlicense to BSD 0-Clause. This is effectively the same, but without the anti-copyright ideology.
- Fails more gracefully when the programme is not available.
- Caches station metadata, to prevent excess requests for information that doesn't actually change.
- Adds an extractor arg to control what device's streams are used.
- Adds support for downloading timefree streams that are distributed as-live.
- Adds support for live URL shorthand, e.g. https://radiko.jp/#CCL .
- Adds the radio station as uploader, allowing the station name to be embedded as the artist with --embed-metadata.
- Adds support for station button embeds, like the one in the corner on https://cocolo.jp/
- Adds more debug information in verbose mode.
- Adds a request for bug reports when token negotiation fails.
- Adapts to a breaking change from upstream yt-dlp.
v0.2.0
2023-05-30
I had made a "breaking" change, so I incremented the version number.
This release:
- Makes the BaseIE private, making the extractor actually usable outside of tests.
- Adds support for downloading page 1 of search pages.
- Adds sanity checks, and resiliency.
- Adds debug information in verbose mode.
- Fixes a bug where timefree programmes' availability timestamp and release timestamp were the wrong way round.
- Switches to storing cached data under a single "rajiko" namespace. ("breaking" change)
v0.1.0
2023-05-08
This is simply when I first setup the package metadata. It is not actually usable.
This release:
- Adds support for recording live streams and downloading timefree programmes, but does not yet work outside of tests.