- TodaProduction
- 942
- 1
- 0
- 0
らじるれ郎 改善計画(その1) 真面目に「ミュート」を実装する 昨日の朝、らじるれ郎でNHKニュースを聴いていたら「ミュート」が効かないことに気づいて「あちゃー(^_^;)」と思った。それが始まりだった。これには少しだけ「深い事情」があるので、連続ツイートさせてもらう。 pic.twitter.com/iIlVrjfTP0
2018-02-22 14:46:28実は、現在公開中のらじるれ郎(ver0.85)は内部的にはミュート制御をしていない。「ミュート制御していないのに、なぜミュートできるのか?」と言えば、実は現在のらじるれ郎はミュートボタンでプレーヤを「一時停止」させているのだ。「ミュート」ではなく「一時停止」、この驚愕の新事実?!(^_^;)
2018-02-22 14:46:52各地インターネットのラジオサイトは、どこに行っても「再生ボタン」と「ミュートボタン」の2種類がある。当初らじるれ郎を作り始めた頃の私も当然ながら2つボタンを貼り付けたが、良く良く考えてみれば一時停止もミュートも「再生が停まるという意味では同じじゃね?」と製作中の私は考えたのだ。
2018-02-22 14:47:41そこで私は、らじるれ郎では再生ボタンとミュートボタンのどちらが押されても、内部的にはまったく同じ処理を呼び出し再生を「一時停止」させることにした。具体的には、NHK再生中は内部的に VLC を起動しているから、ボタン押下で「VLC.playList.togglePause」というメソッドを実行する。
2018-02-22 14:48:28これで「ボタンは2つあるが、どちらを押しても音が消える」操作を実現できた。そのはずだった。ところが最近 VLC を 2.2.8 から 3.0.0 にバージョンアップしたら、この「一時停止」が効かんではないか。正確には VLC ver 3.0.0 では m3u を「一時停止」できない。たぶんこれは VLC のバグだと思う。 pic.twitter.com/76kx05JJF3
2018-02-22 14:49:12このとばっちりでらじるれ郎がNHKの m3u を「一時停止」できなくなってしまったのは仕方がない。本家本元の VLC が「一時停止」できないのだから当然だ。しかし、一時停止できないせいで「ミュート」まで不可能になってしまったのは、内部的に手抜き?しているらじるれ郎の方が分が悪い (^_^;)。
2018-02-22 14:50:13仕方ないので、これを機会に、私はらじるれ郎の一時停止とミュートの処理をきちんと作り分けることにした。具体的には2つのボタンから呼び出されるメソッドを「togglePause」と「toggleMute」の2種類に分ける。これで各々のボタンは独立して動作し、NHKも「ミュート」可能になる。
2018-02-22 14:53:29ところが2つのボタンの処理を独立させただけでは、逆に使い勝手がすこぶる悪くなった。一時停止したあとミュートして、その状態で一時停止を解除しても音が鳴らない。当然ながらそれが「正常な動作」だが、単に「音を消したい、鳴らしたい」という希望に対するボタンが2つもあると混乱してしまう。
2018-02-22 14:53:50いっそボタンをひとつにしようか?とも思ったが、ラジオ局のサイトにボタンが2個あるのに、らじるれ郎には1個しかボタンが無いのも変である。ここまできたら、2つのボタンの作用を視覚的に区別できるようにせねばならぬ。色々と考えて「ミュート」時にはモニタパネルの色を変更することにした。
2018-02-22 14:54:131枚め らじるれ郎 (ver 0.85) 2枚め らじるれ郎 (ver 0.90) いずれも上から、通常再生中、一時停止中、ミュート中。 m3u の「一時停止」を避け、CSRA再生で比較。 ミュート中は「Mute」表示が出るだけでなく、画面表示そのものが薄っすら「冷たい色?」に変わるから実にわかりやすくなった。 pic.twitter.com/KWVB6jarcP
2018-02-22 14:54:45というわけで、ミュート機能を「真面目に」実装したらじるれ郎は、近日中に ver 0.90 として公開予定。こーゆーのを「怪我の功名」と言うのかな? 画面表示色が切り替わるのは結構面白いから、デバッグしながら何度もボタンを押し続けてしまった (^_^)。
2018-02-22 14:55:29らじるれ郎 改善計画(その2) 曲のタイトルとアーティスト名を表示する ある人から「現在流れている曲のタイトルとアーティスト名を表示できないか?」との要望を受けた。ブラウザとWMPとVLCでシームレスに対応するのは難しそうだが、その機能は自分も欲しい機能だったので少し調べてみた。 pic.twitter.com/EGrDp3wTLI
2018-02-22 23:19:41とりあえずVLCとWMPでテストプログラムを作ったが、国内ラジオ局の放送データには曲のタイトルやアーティスト名が含まれておらず?、対応するのは無理っぽい。しかし海外放送局のデータにはそれら情報も含まれるようで、VLCでは mediaDescription.NowPlaying を参照すれば良さそうな感じだ。 pic.twitter.com/WZQ0ZCMCE2
2018-02-22 23:21:35ところが同じURLをWMPで再生させてみると、どのプロパティにも曲のタイトルとアーティスト名が入ってこない。それらしき名前のプロパティはあるのだが、そのいずれもが「空欄」のままである。VLCなら参照可能な情報がWMPでは取得不可能、WMPはストリーミング再生が苦手なのかな? pic.twitter.com/q1p9XyvfQq
2018-02-22 23:23:02ちなみにWMPに、ローカルにある音楽データ (*.wma とか) を再生させると、さっき空欄だったプロパティも色々な情報がてんこ盛りで取得できるようだ。まぁCD自体にその情報が含まれているに違いないけど、もしもCDプレーヤーソフトなんかを作るなら、これら情報が有効利用できるかも知れない。 pic.twitter.com/qhtBs3E11j
2018-02-22 23:24:32そんなわけで、海外音楽放送局のうち、らじるれ郎 ver 0.85 ではWMPを起動して再生している 181.FM と Radio Swiss について、新しいらじるれ郎 ver 0.90 ではVLCを起動し再生させて、曲のタイトルとアーティスト名を取得することにする。
2018-02-22 23:25:54曲のタイトルとアーティスト名の表示場所だが、国内放送局ではそれら情報がまったく表示できないことから「専用欄」を設けることは非常に無駄である。これも色々と考えて、チャンネル名称のところにマウスカーソルを持っていけば、そこの表示が曲のタイトルとアーティスト名に早変わりするようにした。 pic.twitter.com/7HgmPlhrwP
2018-02-22 23:26:43とは言うものの、一般的に曲のタイトルとアーティスト名は「長い」から、限られた場所に表示させると場合によっては無理が生じる。らじるれ郎はチャンネル名称のフォントサイズを文字数に合わせて自動調整しているが、ここに極端に長い文字列が入るとフォントが小さ過ぎて全然読めなくなってしまう。 pic.twitter.com/CAoYP1F2D8
2018-02-22 23:27:59そこでまたまた考えて、モニタパネルの上で右クリックすると、その時に聴いているグループ名称、チャンネル名称、曲のタイトルとアーティスト名が、クリップボードに転送されるようにした。極端に長い曲のタイトルとアーティスト名は「何か別のソフトにコピペして読んでください」というわけ。 pic.twitter.com/pgIvEVW6fy
2018-02-22 23:31:53残る海外放送局のうち Jango については、内部的に起動するブラウザのタイトルバーに曲のタイトルとアーティスト名が入ることがわかった。タイトルバー変更イベントでそれを取得すれば、いつでもそれを参照し表示できる。Jango サイトのこの仕様は大変有り難い。いつまでも変更しないでいて欲しい。 pic.twitter.com/v0unPcN9Cf
2018-02-22 23:34:35最後に残った RadioTunes だが、実は今これで大苦戦している。Jango と同じくブラウザ起動だが、タイトルバーに入ってくる文字列は不変のままで参照しても意味がない。苦労して DOM 操作でページの HTML を取得してみたが、肝心の曲のタイトルとアーティスト名が「変数?」になっててお手上げ状態だ。 pic.twitter.com/gxI9bWi1GO
2018-02-22 23:36:42ページのそこに「見えてる」情報をゲットできない。これだから Web プログラミングは厄介だ…と、自分の実力の無さは棚に上げてスネてみる (^_^;)。あとはこの RadioTunes だけなんです。曲のタイトルとアーティスト名を取得する上手い方法があったら誰か教えてください。よろしくお願いします。
2018-02-22 23:40:43というわけで、今夜の「らじるれ郎 改善計画(その2) 曲のタイトルとアーティスト名を表示する」はこれでおしまい。疲れたので、昨日の「anone」の録画観て寝ることにする。
2018-02-22 23:43:12やったー! らじるれ郎 ver 0.90 β で、RadioTunes の曲のタイトルとアーティスト名を取得できたー!!(^_^) pic.twitter.com/teferWLv8X
2018-02-24 02:29:28昨日の大苦戦の要因は OleObject.Document.documentElement.innerHTML を BrowserDocumentComplete イベントで取得していたからだった。ドキュメントのコンプリート段階じゃ、まだ曲のタイトルとアーティスト名はページに表示されていなかったのだ。演奏開始になるまで、ずいぶん時間がかかるからな。
2018-02-24 02:35:31