NHK語学講座のラジオ番組ストリーミングを取得するRubyスクリプトgogakuondemand.rb(v1804_1 2018/5/5更新版)

2019/4/8告知

v1804またはv1804_1をご利用で、2019年度分がダウンロードできない方はpref.rbファイルのdef school_yearの部分を

def school_year
  # ダウンロード対象年度を西暦で指定してください。
  2019
end

に変更してください(今は2018になっているはずです)。
毎年4月におけるダウンロード範囲を前年度と本年度とするように、現在変更作業中しています。



NHK大好きな[twitter:@riocampos]です。
2018年4月の番組改編に伴う対応更新を行いました。
また、ダウンロード範囲を同一年度に限定しました。特にボキャブライダーの為です。詳細はgogakuondemand.rbをv1804に更新を確認してください。
そして…ごめんなさい、デバッグしきれておらず、5月になったらバグが出ました*1。ので v1804_1 に更新しました。お手数お掛けしますm(_ _)m

投げ銭お願い

下にも書いてますがよろしくお願いしますm(_ _)m
なお、皆様の寄付で

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)

を買いました、ありがとうございます。

「環境設定とか面倒なのはイヤ」と言う方はラジリンガル | NHK語学講座ダウンロードソフトをオススメいたします。

必要環境

  • Ruby 1.8.7以降(おそらく1.8.0から最新の2.6.2まで対応)

  • FFmpeg OpenSSLまたはGnuTLS対応が必要対応していないとエラーが出ます。また、Ogg Vorbis(.ogg)での保存にはlibvorbisに対応している必要があります。
    • ffmpeg -version」を実行した時に「configuration:」に続く部分に「--enable-gnutls」または「--enable-openssl」があればOKです。またlibvorbis対応は同じ部分に「--enable-libvorbis」があればOKです。
    • Macの場合は下記したようにOpenSSL対応版を入れてください。
    • 下記の[twitter:@honda0510]さんがDLしたFFmpeg.exeはGnuTLS対応です。

スクリプトのダウンロードファイル

gogaku1804_1.zip(DropBox)
このzipファイルに3つのファイルが入っています。

  • gogakuondemand.rb
  • pref.rb
  • subjects.rb

使い方

前準備

上記の必要環境(RubyFFmpeg)をセットアップしてください。
上記3ファイル全てをストリーミングファイルを保存したいところへ置いてください。

ダウンロードする講座名はpref.rbの「def pref」行以下の箇所で設定します。
デフォルトでは「ラジオ英会話」「遠山顕の英会話楽習」が選択(true)されています。
例えば「入門ビジネス英語」「実践ビジネス英語」「まいにちフランス語」の3講座のみをダウンロードしたい場合、これらの"false"を"true"に変更します。そしてデフォルトで選択されていた「ラジオ英会話」「遠山顕の英会話楽習」の"true"を"false"に変更します。Windowsユーザの方はもう少し下 ↓ もご覧ください。

設定を終えた後に
$ ruby gogakuondemand.rb

を実行すればストリーミングファイルが取得されます。

なお、mp3以外のフォーマットで常に保存する設定をするには、pref.rbの「def audio_format」部分に、希望のフォーマット名を(註釈に従って)書いてください。

フォーマットによる品質の違い

別エントリにしました。
gogakuondemand.rb で保存可能な音声フォーマットによる違い - 別館 子子子子子子(ねこのここねこ)

設定ファイルpref.rbを編集するには
    • Windowsユーザの方へ:pref.rbを開く場合には、文字コードUnicodeUTF-8)、改行コードがLFを扱えるエディタを使ってください。WinXPのメモ帳だと文字化けします。Wordでも開けますが、変更後に保存する際「pref.rb」の名前で保存できない(別の拡張子が付く)のでオススメできません。
      • おすすめエディタ1:TepaEditor
      • おすすめエディタ2:Mary
    • Macユーザの方へ:pref.rbを開く場合には、文字コードUnicodeUTF-8)、改行コードがLFを扱えるエディタを使ってください。Snow LeopardOS X 10.6)のテキストエディットだとUTF-8を開けません*2。Lion(OS X 10.7)のテキストエディットだと大丈夫です。

Windowsでgogakuondemand.rbを使用したい方へ

当方に確認環境がまだ無いのでサポートはほとんど出来ません。(いちおう環境は作りました。)
デバッグに協力頂いた[twitter:@honda0510]さんの環境を公開頂いたので参考にしてください。

http://honda0510.tumblr.com/post/56925376426/nhk-ruby-windows

動作環境詳細

当方の開発環境はhomebrewを使ったMacmacOS 10.12.6 Sierra)です。

Ruby

rbenvとruby-buildを使ってインストールしています。基本的にはこんな感じ。

$ CONFIGURE_OPTS="--disable-install-rdoc --enable-shared" rbenv install 2.3.3

参考:

$ $ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]
FFmpeg(OpenSSL対応版)

homebrewでインストールしました。

OpenSSLとlibvorbisにも対応するような設定でビルドしています。

$ brew install ffmpeg --with-openssl --with-rtmpdump --with-libvorbis

参考:

バージョン出力結果。

$ ffmpeg -version
ffmpeg version 3.4.1 Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 9.0.0 (clang-900.0.37)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.4.1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libmp3lame --enable-librtmp --enable-libvorbis --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --enable-openssl --disable-lzma --enable-nonfree
libavutil      55. 78.100 / 55. 78.100
libavcodec     57.107.100 / 57.107.100
libavformat    57. 83.100 / 57. 83.100
libavdevice    57. 10.100 / 57. 10.100
libavfilter     6.107.100 /  6.107.100
libavresample   3.  7.  0 /  3.  7.  0
libswscale      4.  8.100 /  4.  8.100
libswresample   2.  9.100 /  2.  9.100
libpostproc    54.  7.100 / 54.  7.100

ご利用ご感想など

[twitter:@riocampos]へのご連絡が一番ありがたいです。
この投稿のコメント欄でもかまいません。

スクリプトソース

このスクリプトに関して、ライセンスとかはよく知らないですが、ひとまず、利用や紹介をする場合には、この7/31分のはてなダイアリーへのリンク
NHK語学講座のラジオ番組ストリーミングを取得するRubyスクリプトgogakuondemand.rb(v1804_1 2018/5/5更新版) - 別館 子子子子子子(ねこのここねこ)はてブロ部
を貼ってください。

更新履歴

バージョン2.2まではhttp://d.hatena.ne.jp/riocampos+tech/20130729/p1に記載

  • 2013/7/31 バージョン3.0公開
    • [twitter:@honda0510]さん、ugokashitaidesu!さんの示唆に従いWindows対応を進める。
    • maさん、ugokashitaidesu!さん、 id:ishii-k さんなどの示唆により、スクリプト内でのファイルマージ(ファイル結合)を諦めてFFmpegに任せる。このためFFmpegにOpenSSLまたはGnuTLS対応が必要となった。
    • httpsセッションの証明書を無視する設定を標準にしました((本当は標準にしたくないのですが、ちゃんと設定できる方は少ないだろうと諦めました)。)
  • 2013/8/1 バージョン3.1公開
    • FFmpegの環境を確認する設定を追加。OpenSSLまたはGnuTLSに対応していないとエラーが出ます。
  • 2013/8/1 バージョン3.1.1公開
    • FFmpegの環境を確認する設定を若干修正*3
    • v3.1で変更してしまったpref.rbを元に戻した。
  • 2013/8/2 バージョン3.2公開
    • WinXPでの動作環境をParallelsで作ったのでいろいろ確認した。
    • Windows環境でファイルパスに空白が入っていると動作しなかったので、動作するように変更。
    • Windows環境でファイルパスにアルファベット*4以外が入っていると動作しなかったので、動作するよう変更。つまり、日本語ユーザ名の方もMy Music/Musicフォルダに直接保存できるようになったはずです。ごめんなさい、出来てなかったですm(_ _)m v3.3で対応。
    • pref.rbに保存先ファイルパス(保存先ディレクトリへのフルパス)の例示を追加、説明も若干詳しくした。
  • 2013/8/6 バージョン3.3公開
    • Windows環境でファイルパスに漢字などが含まれていても動作するよう変更。(上記v3.2で目指したものです。提供が遅れてしまい申し訳ないです。)
    • コメント欄で id:eswai さんが公開してくださった、ダウンロード済みファイルを再ダウンロードしないようにする修正を追加。
  • 2013/8/9 バージョン3.4公開
    • mp3以外にm4a・wmaoggでの保存にも対応(oggでの保存にはFFmpegがlibvorbisに対応していることが必要)。
  • 2014/3/31 バージョン3.5公開
    • 音声ファイルへの案内ファイル*5の位置が変更されたことに対応
    • 新科目「エンジョイ・シンプル・イングリッシュ」の取得に対応
  • 2014/10/3 バージョン3.6公開
  • 2017/4/11 v1704公開
    • 高校生からはじめる「現代英語」、短期集中!3か月英会話、おもてなしの中国語 以上3講座の追加
    • 英語で読む村上春樹、攻略!英語リスニング 以上2科目の削除
    • 伊独仏西露 5ヶ国語の月火水と木金とで別科目扱いになった点に対応
  • 2017/4/11 v1704_1公開
  • 2017/7/19 v1704_2公開
  • 2017/11/2 v1704_2公開
  • 2018/4/9 v1804公開
    • 基礎英語0、遠山顕の英会話楽習 追加
    • 短期集中!3か月英会話 削除
    • ボキャブライダー ダウンロード対象範囲を同一年度に限定
  • 2018/5/5 v1804_1公開

動作確認ご報告

バージョン2.0まではhttp://d.hatena.ne.jp/riocampos+tech/20130729/p1に記載

Mac OS X 10.7.5 Lionで環境構築された方のblogをご紹介します。
CaptureStreamに代わるダウンロード方法(Mac) - 本棚整理五月雨式

下記コメントにも書いて頂いてますね、ありがとうございます。毎バージョン確認頂いてます、本当にありがとうございますm(_ _)m

ウイルス対策ソフトの干渉ありとのご報告

ugokashitaidesuさんから「gogakuondemend.rbで使っているffmpegウイルス対策ソフトに止められてしまう」とのご連絡を頂きました。コメント欄からこちらへ引用しておきます。

(2014年)2月第二週目からストリーミングのダウンロードが途中でフリーズしてしまう現象の回避方法がわかりましたので参考までにご報告いたします。
具体的には、ESET社(日本のキャノンITソリューションズ)のスマートセキュリティーまたはNODをアンチウィルスを導入している環境で2014/2月2週目あたりの更新以降発生することがあるようです。問題を解決するには、ESET NOD32/ESSのプロトコルフィルタリングの対象外アプリケーションに、ストリーミングダウンロードに使用しているffmpegを追加します。ffmpegが最新のものであるかどうかは現時点では関係はないようです。(これまでプロトコルフィルタリングの除外対象に追加しないと動かなくなるケースに遭遇したことはなかったので、不思議なのですが)http://canon-its.jp/supp/eset/notify20100212_1.html

投げ銭

このスクリプトが役立ったときには、Amazonギフト券をお送り頂ければありがたいです。
メールアドレスは「riocampos22あっとまーくgmail.com」です。
よろしくお願いします。(お送り頂いた方、本当にありがとうございます。)

質問をされる方へ

私も使ってるスクリプトなので、今後NHK側が行った変更には対応していくするつもりです。
機能要望はOKですが、実現可能かどうかは私の開発能力に掛かっていますw
基本的にはノーサポートであると理解してください。
そして、自分で環境構築が出来る方にしかサポートできません。
「私でも出来るでしょうか?」「Rubyってなに?」「コマンドってなに?」という方は利用を諦めてください。
もしくは、私または他の方がより使いやすいものを作るのを待ってください。

(私もこれのMac版を使っています。クセがあり、(NHKサーバのせいと思われる)欠落が発生することもありますが、番組表から予約できるなど、いろいろ便利です。)

    • >

*1:基礎英語0め…>_

*2:いま気付いたw なんでやねんw

*3:ffmpeg -v → ffmpeg -version

*4:正確にはASCII文字

*5:listdataflv.xmlファイルが/gogaku/言語/科目/の下から/gogaku/st/xml/言語/科目/の下へ移動した