最近のアクティビティ

最近のアクティビティを報告します

xspfを連結するやつ作った

Chinachuを使っているとxspfをVLCから開いたりする。ザッピング的なことを行いたかったのでURLをまとめたxspfファイルを作るスクリプトを書いた。

gist.github.com

使い方はこんな感じです

# 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行になるなど、それはそれでちょっといやだったのでがんばったのがこだわりポイント。

参考: RubyでXML操作 | Netsphere Laboratories