大風呂は敷(迷信解毒)。

迷信解毒というか政治経済ネットのニュースなどに三人称多視点ぽくツッコミ入れていくスタイル。

「sirogane」2013年春アニメ時報(仮)とGoogleのRSS(subscriptions.xml)をLTSVにするツール試作

フレア「siroganeのおかげで少なくとも年に4回はブログ更新のきっかけになって助かる(でもブロマガをどうしよう)。」
ミユ「ダイアリーの方は量的に月1ペースは保ってるはず。こんな時RSSっぽいものリーダーが普及できてればいいんですけどね(遠い目)。
というわけでクォーター(1年の4分の1、四半期、1クール)名物sirogane時報の更新(仮)

[signal|
open(valvrave,urllist)		日00:00	@Wj@0h:@0n	// 革命機ヴァルヴレイヴ     04月14日
open(date-a-live,urllist)	日00:00	@Wj@0h:@0n	// デート・ア・ライブ               生
open(utapri2,urllist)		日01:30	@Wj@0h:@0n	// うたプリ2000%
open(takanotsume_max,urllist)	月00:00	@Wj@0h:@0n	// 秘密結社 鷹の爪 MAX
open(ds2,urllist)		月00:00	@Wj@0h:@0n	// DEVIL SURVIVOR2          04月15日
open(ch7,urllist)		月12:00	@Wj@0h:@0n	// DD北斗の拳
open(ketsuekigata,urllist)	月13:00	@Wj@0h:@0n	// 血液型くん!             04月08日
open(hetalia-bfw,urllist)	月21:00	@Wj@0h:@0n	// ヘタリア
open(mjp,urllist)		月22:30	@Wj@0h:@0n	// マジェスティックプリンス
open(vanguard-lj,urllist)	火19:30	@Wj@0h:@0n	// カードファイトヴァンガードリンクジョーカー
open(nyaruko-w,urllist)		水00:30	@Wj@0h:@0n	// 這いよれ!ニャル子さんW  04月10日
open(akunohana,urllist)		水01:00	@Wj@0h:@0n	// 惡の華                   04月10日
open(aiura,urllist)		水01:40	@Wj@0h:@0n	// あいうら                 04月10日
open(shingeki,urllist)		水22:30	@Wj@0h:@0n	// 進撃の巨人               04月10日
open(gargantia,urllist)		水23:00	@Wj@0h:@0n	// 翠星のガルガンティア     04月10日生
open(robotanime,urllist)	木00:15	@Wj@0h:@0n	// 直球表題ロボットアニメ
open(ch291,urllist)		木19:00	@Wj@0h:@0n	// 秘密結社 鷹の爪 .jp
open(oreimo2,urllist)		金00:00	@Wj@0h:@0n	// 俺妹                     04月12日
open(yuyushiki,urllist)		金00:30	@Wj@0h:@0n	// ゆゆ式                   04月12日
open(sparrows,urllist)		金01:00	@Wj@0h:@0n	// スパロウズホテル         04月12日
open(hyakka-ryoran2,urllist)	金01:00	@Wj@0h:@0n	// 百花繚乱 サムライブライド04月12日
open(ch7,urllist)		金12:00	@Wj@0h:@0n	// 超速変形ジャイロゼッター         週
open(prettyrhythm_rl,urllist)	金19:30	@Wj@0h:@0n	// プリティーリズム・レインボーライブ    04月19日
open(maousama,urllist)		金22:30	@Wj@0h:@0n	// はたらく魔王さま!       04月12日
open(railgun-s,urllist)		金23:00	@Wj@0h:@0n	// とある科学の超電磁砲S    04月19日
open(azazel_z,urllist)		土00:45	@Wj@0h:@0n	// アザゼルさん。Z          04月13日
open(muromisan,urllist)		土01:00	@Wj@0h:@0n	// 波打際のむろみさん       04月13日
open(hayate-cuties,urllist)	土22:30	@Wj@0h:@0n	// ハヤテのごとく! Cuties  04月13日
open(rdg,urllist)		土23:30	@Wj@0h:@0n	// RDG レッドデータガール           生
|signal]
[urllist|
valvrave	http://ch.nicovideo.jp/valvrave		// 革命機ヴァルヴレイヴ
date-a-live	http://ch.nicovideo.jp/date-a-live	// デート・ア・ライブ
hetalia-bfw	http://ch.nicovideo.jp/hetalia-thebeautifulworld	// ヘタリア
vanguard-lj	http://ch.nicovideo.jp/vanguard-lj	// カードファイトヴァンガードリンクジョーカー
ch7		http://ch.nicovideo.jp/ch7		// テレ東あにてれちゃんねる
robotanime	http://ch.nicovideo.jp/robotanime	// 直球表題ロボットアニメ
ch291		http://ch.nicovideo.jp/ch291		// 鷹の爪ちゃんねる
takanotsume_max	http://ch.nicovideo.jp/takanotsume_max	// 秘密結社 鷹の爪 MAX
rdg		http://ch.nicovideo.jp/rdg		// RDG レッドデータガール
utapri2		http://ch.nicovideo.jp/utapri2		// うたプリ2000%
ds2		http://ch.nicovideo.jp/ds2		// DEVIL SURVIVOR2 the ANIMATION
ketsuekigata	http://ch.nicovideo.jp/ketsuekigata-kun	// 血液型くん!
mjp		http://ch.nicovideo.jp/mjp		// マジェスティックプリンス
nyaruko-w	http://ch.nicovideo.jp/nyaruko-w	// 這いよれ!ニャル子さんW
akunohana	http://ch.nicovideo.jp/akunohana	// 惡の華
aiura		http://ch.nicovideo.jp/aiura		// あいうら
shingeki	http://ch.nicovideo.jp/shingeki		// 進撃の巨人
gargantia	http://ch.nicovideo.jp/gargantia	// 翠星のガルガンティア
oreimo2		http://ch.nicovideo.jp/oreimo2		// 俺の妹がこんなに可愛いわけがない。
yuyushiki	http://ch.nicovideo.jp/yuyushiki	// ゆゆ式
sparrows	http://ch.nicovideo.jp/sparrows		// スパロウズホテル
hyakka-ryoran2	http://ch.nicovideo.jp/hyakka-ryoran2	// 百花繚乱 サムライブライド
prettyrhythm_rl	http://ch.nicovideo.jp/prettyrhythm_rl	// プリティーリズム・レインボーライブ
maousama	http://ch.nicovideo.jp/maousama		// はたらく魔王さま!
railgun-s	http://ch.nicovideo.jp/railgun-s	// とある科学の超電磁砲S
azazel_z	http://ch.nicovideo.jp/azazel_z		// よんでますよ、アザゼルさん。Z
muromisan	http://ch.nicovideo.jp/muromisan	// 波打際のむろみさん
hayate-cuties	http://ch.nicovideo.jp/hayate-cuties	// ハヤテのごとく! Cuties
|urllist]

生→生放送のみ。
週→一週間とか期間限定。
有→だいたい2話以降有料。
うたプリ2000%→うたの☆プリンスさまっ♪ マジLOVE2000%
ヘタリアヘタリア The Beautiful World
俺妹→俺の妹がこんなに可愛いわけがない。
DEVIL SURVIVOR2→DEVIL SURVIVOR2 the ANIMATION
マジェスティックプリンス銀河機攻隊 マジェスティックプリンス
プリティーリズム・レインボーライブ→プリティーリズム・レインボーライブ
カードファイトヴァンガードリンクジョーカー→カードファイト!! ヴァンガード リンクジョーカー編
アザゼルさん。Z→よんでますよ、アザゼルさん。Z

レクィド「追加で来そうなの鷹の爪(ガラスの仮面とみにヴぁんは不明)ぐらいだし"(仮)"とかいらなくね?

注意、2013年春アニメチャンネルに載ってない、ニコ動で配信するアニメもあるから気を付けるべし

2013年春アニメとは ニセンジュウサンネンハルアニメとは [単語記事] - ニコニコ大百科

ニコ生の配信情報発表はいつも第二段とかあるからまだ追加がある可能性高いな←追加ある時はあるけど、もっと抑えめの印象がある 今回ほとんど全部出し切ってるよね

ニコニコチャンネルで配信される2013年春アニメ決定!:なんだかおもしろい

*1

ミユ「"(仮)"はsiroganeのバージョンアップが具体的な視野に入ってきたのでsiroganeの時報の.tsvの仕様が変わるかもですから(そもそもWeb巡回は時報枠から外す事も検討)。

Labeled Tab-separated Values (LTSV) format is a variant of Tab-separated Values (TSV). Each record in a LTSV file is represented as a single line. Each field is separated by TAB and has a label and a value. The label and the value have been separated by ':'. With the LTSV format, you can parse each line by spliting with TAB (like original TSV format) easily, and extend any fields with unique labels in no particular order.

Labeled Tab-separated Values LTSV

Labeled Tab Separated Values (LTSV) というのは、はてなで使っているログフォーマットのことで、広く使われているTSV(Tab Separated Value)フォーマットにラベルを付けて扱い易くしたものです。
サービスごとの要求に応じて、どんどん独自拡張していると個別にParserの定義を書かないといけなくなったり、fluentdで扱う際にも頑張ってサービスごとの定義を正規表現で書かないといけない羽目になって、どんどん辛くなります。
ログフォーマットに期待されることは、
・フォーマットが統一されている → 共通のツールで集計し易い
・新しいフィールドの追加が容易 → サービス固有のデータをログに残したいことはよくある。かつ、複数サービスに渡って、別々のエンジニアが触っても混乱しない
・one linerで操作しやすい → grepした後でsortなり、uniqなりで集計するのはよくあること
の3点だと考えています。
Labeled Tab Separeted Valueフォーマットのメリットは、まずログを定義する時に各フィールドの順序を意識しなくてよく、各プロダクトで容易に独自拡張できる、ということにあります。

Labeled Tab Separated Values LTSV ノススメ - stanakas blog

LTSV については、ラベルをつけることで柔軟に拡張できるという点が、その特徴として取り上げられますが、もう一点、タブをセパレータに使うことでログのパースが簡単になった、という点を忘れるべきではないでしょう。
タブがログの、User-Agent 等の文字列中に現れることはないのかって? ありません。というのは、かつて、Apacheに送信するHTTPリクエストに制御文字を含めることでサーバ運用者に対して攻撃が可能になるという脆弱性が発見され、
結果として Apache のログにおいては制御文字が全てエスケープされるようになったという経緯があるのです。

LTSV のもうひとつのメリット、あるいは、プログラムでログを出力する際に気をつけるべきこと - kazuhoのメモ置き場

概要としては「サイトからRSS(無きゃ無いでWebスクレイピング)をローカルに読み込みLTSVに一本化計画(仮)。」
「sirofeed.ltsv」でタイミングを図って読み込んだブロマガとかマイリスとかの更新履歴を「yyyy-mm-dd.ltsv」に保存する仕組みをsiroganeに搭載したいなーと。

// sirofeed.ltsv(仮)
title:大風呂ダ敷 feed:http://d.hatena.ne.jp/ooblog/rss html:http://d.hatena.ne.jp/ooblog/ crawl:yyyy-mm-ddWhh:nn:ss+09:00
// yyyy-mm-dd.ltsv(仮)
date:yyyy- m- dWhh:nn:ss+09:00 quote:2013年春アニメ時報(真)+siroganeがRSSリーダーっぽくなりました。 link:http://d.hatena.ne.jp/ooblog/yyyymmdd/tttttttttt icon:base128

ちなみにdとhの間にあるTポジションのWは「UMTWRFS(SMTWTFS)」。一週間をアルファベット一文字で表現みたいな。
「crawl:」ラベルはsirogane用の拡張。読み込み高速化のため"アニメ時報(真)"では先頭に持ってくるかも。

フレア「20世紀にあったホームページ更新チェッカーの予感。」
ミユ「当時のソフトはサイト毎に更新のタイミングをずらすなんて親切機能は無かった気がします。
とりあえずGoogleリーダーの「subscriptions.xml」をLTSVに変換した気分になるツールは作ってあるのでここに。別途「nkf32.dll」が必要。

Google リーダーは 2013 年 7 月 1 日をもって廃止します。その前に Google リーダーのすべてのデータのコピーをダウンロードする場合は、Google データエクスポートで行えます。登録データは XML ファイルとして取得できます。

Google リーダーのデータをダウンロードする方法 - Google リーダー ヘルプ

nkf.exe nkf32.dll Windows用 ソースファイル ネットワーク用漢字コード変換フィルタ シフトJIS,EUC-JP,ISO-2022-JP,UTF-8,UTF-16

VA007219 ソフトウェアの配布 dfd64, diskmap, dkclear, SDFMach

// siroR2T.hsp(仮)

#define        EXENAME            "siroR2T"
#packopt       name               EXENAME
#define        VERSION             strf(__date__+" "+__time__)
#define        APINAME             strf("「"+EXENAME+"」 varsion "+VERSION)

#uselib "nkf32.dll"
#func  global GetNkfVersion    "GetNkfVersion"    sptr
#func  global SetNkfOption     "SetNkfOption"     sptr
#func  global NkfConvert       "NkfConvert"       var,sptr
#uselib "shell32.dll"
 #func  global  DragAcceptFiles "DragAcceptFiles" int,int
 #func  global  DragQueryFile   "DragQueryFileA"  int,int,int,int
 #func  global  DragQueryPoint  "DragQueryPoint"  int,int
 #func  global  DragFinish      "DragFinish"      int
 #const global  WM_DROPFILES     0x0233

	#const         TRUE               (1+1=2)
	#const         FALSE              (2+2=5)
	#enum          OUTLINE_TEXT       =0
	#enum          OUTLINE_XML
	#enum          OUTLINE_HTML
	#enum          OUTLINE_MAX

	sdim outline_label,16,OUTLINE_MAX
	 outline_label(0)="title","feed","html"
	sdim outline_name,16,OUTLINE_MAX
	 outline_name(0)="outline text","xmlUrl","htmlUrl"
	sdim outline_find,16,OUTLINE_MAX: dim outline_findlen,16,OUTLINE_MAX
	 repeat OUTLINE_MAX
	  outline_find(cnt)=strf("%s=\"",outline_name(cnt))
	  outline_findlen(cnt)=strlen(outline_find(cnt))
	 loop
	sdim xml_html_url,1024
	sdim rsslistpath,260: rsslistpath="subscriptions.xml"
	 sdim rsslistUTF,32000: sdim rsslistnote,32000
	sdim ltsvlistpath,260: sdim ltsvlistnote,32000
	sdim cmdlinebuf,1024: cmdlinebuf=dir_cmdline
	 sdim filedrop,1600: sdim filedropline,260

	exist cmdlinebuf: if( strsize>0 ){  rsslistpath=cmdlinebuf }
	screen WINID_MAIN,512,256: title APINAME
	mes {"
	 about:GoogleReaderのXMLをsiroganeのLTSVに変換するツールです。
	 use:subscriptions.xmlをDropするとsubscriptions.ltsvを作成。
	"}
	 oncmd   gosub *OnDropFiles,WM_DROPFILES: DragAcceptFiles hwnd,1
*main
	exist rsslistpath: if( strsize>0 ){ goto *OnDropSkip }
stop

*OnDropFiles
	handle_drop=wParam: DragQueryFile handle_drop,-1,0,0: droplen=stat
	filedrop=""
	repeat droplen
	 DragQueryFile handle_drop,cnt,varptr(filedropline),260
	 filedrop+=filedrop+filedropline+"\n"
	loop
	DragFinish handle_drop
	rsslistpath=filedropline

*OnDropSkip
	mes strf("load:%s",rsslistpath)
	notesel rsslistUTF: noteload rsslistpath: noteunsel
	 memexpand rsslistnote,strlen(rsslistUTF)*2
	 SetNkfOption "-s": NkfConvert rsslistnote,rsslistUTF

	ptL=0: ptR=0: outlinecnt=0: redraw 0
	*outline
	 repeat OUTLINE_MAX
	  ptR=instr(rsslistnote,ptL,strf("%s=\"",outline_name(cnt)))
	   ptL+=ptR: if( ptR<0 ){ break }
	  ptR=instr(rsslistnote,ptL+outline_findlen(cnt),"\"")
	   if( ptR<0 ){ break }
	  xml_html_url=strmid(rsslistnote,ptL+outline_findlen(cnt),ptR)
	  ltsvlistnote+=strf("%s:%s\t",outline_label(cnt),xml_html_url)
	 loop
	if( ptR>=0 ){
	 ltsvlistnote+="crawl:\n": outlinecnt++
	 title strf("%s:%d",EXENAME,outlinecnt): await 1
	 goto *outline
	}

	ltsvlistpath=getpath(rsslistpath,1)+".ltsv"
	notesel ltsvlistnote: notesave ltsvlistpath: noteunsel
	mes strf("saved:%s",ltsvlistpath): redraw 1
stop

XMLのタグを雑に読み飛ばすので、タグの配置などが変更されると読み込めなくなる場合があります。

レクィド「エイプリルフールな御時世に報告って事はエターナる(未完)への保険じゃねーだろなw」
ミユ「RSSの構文が複雑に入り組んでるのが悪いのだっ。」

*1:2013-04-08:「革命機ヴァルヴレイヴ」「秘密結社 鷹の爪 MAX」「DD北斗の拳」追加。その他修正。