xspfを連結するやつ作った
Chinachuを使っているとxspfをVLCから開いたりする。ザッピング的なことを行いたかったのでURLをまとめたxspfファイルを作るスクリプトを書いた。
使い方はこんな感じです
# Usage: ruby xspfjoiner.rb [xspf_file ...] % ruby xspfjoiner.rb *.xspf > channels.xspf
例です
% cat channel_a.xspf <?xml version="1.0" encoding="UTF-8"?> <playlist version="1" xmlns="http://xspf.org/ns/0/"> <trackList> <track> <location>https://example.com/path/to/channel_a.m2ts</location> <title>Channel A</title> </track> </trackList> </playlist> % cat channel_b.xspf <?xml version="1.0" encoding="UTF-8"?> <playlist version="1" xmlns="http://xspf.org/ns/0/"> <trackList> <track> <location>https://example.com/path/to/channel_b.m2ts</location> <title>Channel B</title> </track> </trackList> </playlist> % ruby xspfjoiner.rb *.xspf > channels.xspf % cat channels.xspf <?xml version='1.0' encoding='UTF-8'?> <playlist version='1' xmlns='http://xspf.org/ns/0/'> <trackList> <track> <location>https://example.com/path/to/channel_a.m2ts</location> <title>Channel A</title> </track> <track> <location>https://example.com/path/to/channel_b.m2ts</location> <title>Channel B</title> </track> </trackList> </playlist>
REXML::Formatters::Pretty
を使うとそのままできれいなXMLができる。だがしかし、それだとタグの中にスペースが入ったりするとVLCがスペース入りのURLを開こうとしてしまっていたので、widthオプションに適当に大きめの数字を指定すると改行されなくなるのでそうした。
ちなみに、 REXML::Formatters::Default
だと何もせずにVLCが扱えるXMLを吐くけど、終了タグと開始タグが1行になるなど、それはそれでちょっといやだったのでがんばったのがこだわりポイント。