• R/O
  • HTTP
  • SSH
  • HTTPS

NicoBrowser: Commit

NicoBrowserリポジトリ


Commit MetaInfo

Revision9c955562d47b37ecd555a5c3bbd5328e324cc503 (tree)
Time2009-11-13 00:59:07
Authoryuki <yuki@bdf3...>
Commiteryuki

Log Message

リリース ver.0.1
著作者情報の永続化

git-svn-id: http://192.168.11.7/svn/repository/NicoBrowser/tags/release_20091113_ver_0_1@213 bdf3b611-c98c-6041-8292-703d9c9adbe7

Change Summary

Incremental Difference

--- /dev/null
+++ b/README.html
@@ -0,0 +1,2 @@
1+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2+<html lang="ja"><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>README</title></head><body><p></p><ul class="readonly" id="mozToc"><!--mozToc h2 1 h3 2--><li><a href="#mozTocId600802">&#27231;&#33021;&#12539;&#29305;&#24500;</a></li><li><a href="#mozTocId344177">&#20351;&#12356;&#26041;&#12398;&#19968;&#20363;</a></li><li><a href="#mozTocId180645">&#25805;&#20316;&#26041;&#27861;</a></li><li><a href="#mozTocId136534">&#12496;&#12540;&#12472;&#12519;&#12531;&#12450;&#12483;&#12503;&#12395;&#38306;&#12377;&#12427;&#27880;&#24847;&#20107;&#38917;</a><ul><li><a href="#mozTocId920310">2009/05/24&#29256;&#20197;&#21069;&#12434;&#20351;&#29992;&#12375;&#12390;&#12356;&#12383;&#22580;&#21512;&#12398;&#27880;&#24847;&#20107;&#38917;</a></li><li><a href="#mozTocId116237">2009/03/23&#29256;&#20197;&#21069;&#12434;&#20351;&#29992;&#12375;&#12390;&#12356;&#12383;&#22580;&#21512;&#12398;&#27880;&#24847;&#20107;&#38917;</a></li></ul></li><li><a href="#mozTocId730811">nicobrowser.properties&#12398;&#35500;&#26126;</a></li><li><a href="#mozTocId935686">feedurl.txt&#12398;&#35500;&#26126;</a></li><li><a href="#mozTocId627544">&#26410;&#35299;&#27770;&#12398;&#35506;&#38988;</a></li><li><a href="#mozTocId130181">&#26356;&#26032;&#23653;&#27508;</a></li></ul><h2><a class="mozTocH2" name="mozTocId600802"></a>&#27231;&#33021;&#12539;&#29305;&#24500;</h2><ul><li>&#12491;&#12467;&#12491;&#12467;&#21205;&#30011;&#12395;&#25237;&#31295;&#12373;&#12428;&#12383;&#21205;&#30011;&#12398;&#33258;&#21205;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;</li><ul><li>&#12521;&#12531;&#12461;&#12531;&#12464;&#12398;&#19978;&#20301;&#12363;&#12425;&#33258;&#21205;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;</li><li>&#25351;&#23450;&#12375;&#12383;&#12510;&#12452;&#12522;&#12473;&#12488;&#12363;&#12425;&#33258;&#21205;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;</li></ul><li>&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#23653;&#27508;&#31649;&#29702;</li><ul><li>&#19968;&#24230;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#12375;&#12383;&#21205;&#30011;&#12399;&#37325;&#35079;&#12375;&#12390;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#12373;&#12428;&#12394;&#12356;</li><li>&#12456;&#12467;&#12494;&#12511;&#12540;&#12514;&#12540;&#12489;&#12391;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#12375;&#12390;&#12356;&#12383;&#22580;&#21512;&#12391;&#12418;&#12289;&#39640;&#30011;&#36074;&#12501;&#12449;&#12452;&#12523;&#12364;&#21462;&#24471;&#12391;&#12365;&#12427;&#12398;&#12391;&#12354;&#12428;&#12400;&#20877;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#12377;&#12427;</li></ul><li>Pure Java&#12391;&#12354;&#12427;&#12383;&#12417;&#12289;Windows, MacOS, Linux&#19978;&#12391;&#21205;&#20316;&#21487;&#33021;</li></ul><h2><a class="mozTocH1" name="mozTocId344177"></a>&#20351;&#12356;&#26041;&#12398;&#19968;&#20363;</h2><p><a href="http://feather.cocolog-nifty.com/weblog/2008/03/post_7d4b.html">http://feather.cocolog-nifty.com/weblog/2008/03/post_7d4b.html</a></p><p><br></p><h2><a class="mozTocH1" name="mozTocId180645"></a>&#25805;&#20316;&#26041;&#27861;</h2><p>&#12467;&#12510;&#12531;&#12489;&#12521;&#12452;&#12531;&#12391;&#20197;&#19979;&#12434;&#23455;&#34892;&#12290;</p><p style="font-weight: bold;"><code>java -jar NicoBrowser.jar</code></p><p>1&#22238;&#30446;&#12398;&#36215;&#21205;&#12391;&#12467;&#12531;&#12501;&#12451;&#12464;&#12501;&#12449;&#12452;&#12523;&#12364;&#12450;&#12503;&#12522;&#12465;&#12540;&#12471;&#12519;&#12531;&#12487;&#12451;&#12524;&#12463;&#12488;&#12522;&#12395;&#20316;&#25104;&#12373;&#12428;&#12427;&#12290;Windows&#12391;&#12354;&#12428;&#12400;&#12289;&#20363;&#12360;&#12400;&#20197;&#19979;&#12398;&#12487;&#12451;&#12524;&#12463;&#12488;&#12522;&#12290;</p><p>C:\Documents and Settings\user\.nicobrowser</p><p>nicobrowser.properties&#12434;&#38283;&#12365;&#12289;ID&#12392;&#12497;&#12473;&#12527;&#12540;&#12489;&#12434;&#35373;&#23450;&#12377;&#12427;&#12290;</p><p>&#35373;&#23450;&#24460;&#12289;&#20877;&#24230;&#23455;&#34892;&#12377;&#12428;&#12400;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#38283;&#22987;&#12290;</p><h2><a class="mozTocH2" name="mozTocId136534"></a>&#12496;&#12540;&#12472;&#12519;&#12531;&#12450;&#12483;&#12503;&#12395;&#38306;&#12377;&#12427;&#27880;&#24847;&#20107;&#38917;</h2><h3><a class="mozTocH3" name="mozTocId920310"></a>2009/05/24&#29256;&#20197;&#21069;&#12434;&#20351;&#29992;&#12375;&#12390;&#12356;&#12383;&#22580;&#21512;&#12398;&#27880;&#24847;&#20107;&#38917;</h3><p>&#12450;&#12483;&#12503;&#12487;&#12540;&#12488;&#24460;(&#12388;&#12414;&#12426;&#20170;&#22238;&#12398;&#12501;&#12449;&#12452;&#12523;&#12391;&#19978;&#26360;&#12365;&#12375;&#12383;&#24460;)&#12289;1&#22238;&#30446;&#12398;&#36215;&#21205;&#21069;&#12395;&#20197;&#19979;&#12398;&#12467;&#12510;&#12531;&#12489;&#12434;&#23455;&#34892;&#12377;&#12427;&#24517;&#35201;&#12364;&#12354;&#12427;&#12290;&#23455;&#34892;&#12375;&#12394;&#12356;&#12392;DB&#38306;&#36899;&#12398;&#12456;&#12521;&#12540;&#12392;&#12394;&#12426;&#20966;&#29702;&#12364;&#32153;&#32154;&#12391;&#12365;&#12394;&#12356;&#12290;</p><p style="font-weight: bold;"><code>java -jar NicoBrowser.jar sync</code></p><p>(&#24341;&#25968;&#12395;sync&#12434;&#12388;&#12369;&#12390;&#23455;&#34892;&#12377;&#12427;)</p><h3><a class="mozTocH2" name="mozTocId116237"></a>2009/03/23&#29256;&#20197;&#21069;&#12434;&#20351;&#29992;&#12375;&#12390;&#12356;&#12383;&#22580;&#21512;&#12398;&#27880;&#24847;&#20107;&#38917;</h3><p>nicobrowser.properties&#12398;&#20114;&#25563;&#24615;&#12399;&#28961;&#12356;&#12383;&#12417;&#12289;&#19968;&#26086;&#12522;&#12493;&#12540;&#12512;(or &#21066;&#38500;)&#12375;&#12390;&#12363;&#12425;<br>&#23455;&#34892;&#12377;&#12427;&#24517;&#35201;&#12364;&#12354;&#12427;&#12290;&#12371;&#12358;&#12377;&#12427;&#12371;&#12392;&#12391;&#12289;&#26032;&#12375;&#12356;nicobrowser.properties&#12364;&#20316;&#25104;&#12373;&#12428;&#12427;&#12290;</p><p>path.db&#12398;&#35373;&#23450;&#12399;&#12289;&#24467;&#26469;&#12399;"&#12501;&#12449;&#12452;&#12523;&#21517;"&#12398;&#25351;&#23450;&#12384;&#12387;&#12383;&#12364;&#12289;&#29694;&#22312;&#12399;"&#12487;&#12451;&#12524;&#12463;&#12488;&#12522;&#21517;"&#12398;&#25351;&#23450;&#12395;&#22793;&#12431;&#12387;&#12390;&#12356;&#12427;&#12371;&#12392;&#12395;&#27880;&#24847;&#12290;</p><p>&#26412;&#20307;lib&#12487;&#12451;&#12524;&#12463;&#12488;&#12522;&#20197;&#19979;&#12395;&#12388;&#12356;&#12390;&#12289;&#27083;&#25104;&#12364;&#22823;&#12365;&#12367;&#22793;&#12431;&#12387;&#12390;&#12356;&#12427;&#12383;&#12417;&#12289;lib&#12399;&#19978;&#26360;&#12365;&#12391;&#12394;&#12367;&#32622;&#25563;&#12377;&#12427;&#12371;&#12392;&#12434;&#25512;&#22888;&#12290;</p><h2><a class="mozTocH2" name="mozTocId730811"></a>nicobrowser.properties&#12398;&#35500;&#26126;</h2><p>path.db=<br>&#23653;&#27508;&#31649;&#29702;DB&#12434;&#20445;&#23384;&#12377;&#12427;&#12487;&#12451;&#12524;&#12463;&#12488;&#12522;&#12290;&#26085;&#26412;&#35486;&#21517;&#19981;&#21487;&#12290;</p><p>path.savefile=<br>&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#12375;&#12383;flv&#12501;&#12449;&#12452;&#12523;&#12434;&#20445;&#23384;&#12377;&#12427;&#12487;&#12451;&#12524;&#12463;&#12488;&#12522;&#12290;&#26085;&#26412;&#35486;&#21517;&#19981;&#21487;&#12290;</p><p>encoding=<br>feedurl.txt&#12398;&#25991;&#23383;&#12456;&#12531;&#12467;&#12540;&#12487;&#12451;&#12531;&#12464;&#12290;</p><p>nicovideo.mail=<br>&#12491;&#12467;&#12491;&#12467;&#21205;&#30011;&#12398;&#12513;&#12540;&#12523;&#12450;&#12489;&#12524;&#12473;(ID)&#12290;</p><p>nicovideo.password=<br>&#12491;&#12467;&#12491;&#12467;&#21205;&#30011;&#12398;&#12497;&#12473;&#12527;&#12540;&#12489;&#12290;</p><p>download.mylist=<br>&#25351;&#23450;&#12375;&#12383;&#20844;&#38283;&#12510;&#12452;&#12522;&#12473;&#12488;&#12395;&#30331;&#37682;&#12373;&#12428;&#12390;&#12356;&#12427;&#12467;&#12531;&#12486;&#12531;&#12484;&#12434;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#23550;&#35937;&#12395;&#21547;&#12417;&#12427;&#12290;</p><p>&#20363;&#12360;&#12400;<br>http://www.nicovideo.jp/mylist/4573744<br>http://www.nicovideo.jp/mylist/739988/1395449<br>&#19978;&#35352;2&#20491;&#12398;&#12510;&#12452;&#12522;&#12473;&#12488;&#12434;&#23550;&#35937;&#12392;&#12377;&#12427;&#22580;&#21512;&#12289;<br>download.mylist=<span style="font-weight: bold;">4573744,739988/1395449</span><br>&#12392;&#12289;URL&#12398; mylist/ &#20197;&#19979;&#12434;&#12459;&#12531;&#12510;&#12391;&#21306;&#20999;&#12387;&#12390;&#25351;&#23450;&#12377;&#12427;&#12290;</p><h2><a class="mozTocH2" name="mozTocId935686"></a>feedurl.txt&#12398;&#35500;&#26126;</h2><p>1&#34892;&#12372;&#12392;&#12395;&#12289;&#23550;&#35937;&#12392;&#12377;&#12427;RSS&#12501;&#12451;&#12540;&#12489;&#12398;URL&#12392;&#25277;&#20986;&#25968;&#12434;&#12459;&#12531;&#12510;&#21306;&#20999;&#12426;&#12391;&#35373;&#23450;&#12377;&#12427;&#12290;<br>&#26360;&#24335;&#12395;&#12388;&#12356;&#12390;&#12399;&#12501;&#12449;&#12452;&#12523;&#20869;&#12398;&#12467;&#12513;&#12531;&#12488;&#21442;&#29031;&#12290;</p><h2><a class="mozTocH2" name="mozTocId627544"></a>&#26410;&#35299;&#27770;&#12398;&#35506;&#38988;</h2><p>web&#12469;&#12452;&#12488;&#21442;&#29031;&#12290;</p><h2><a class="mozTocH2" name="mozTocId130181"></a>&#26356;&#26032;&#23653;&#27508;</h2><p>2009/11/13 ver.0.1<br>&#27704;&#32154;&#21270;&#12377;&#12427;&#24773;&#22577;&#12395;&#20316;&#32773;(&#25237;&#31295;&#32773;)&#24773;&#22577;&#12434;&#36861;&#21152;&#12290;ipum&#29992;&#12398;&#23550;&#24540;&#12290;</p><p>2009/05/24<br>&#12487;&#12452;&#12522;&#12540;&#12521;&#12531;&#12461;&#12531;&#12464;&#20197;&#22806;&#12398;&#12501;&#12451;&#12540;&#12489;&#12408;&#23550;&#24540;&#12290;<br>&#19968;&#37096;&#12398;swf&#12395;&#23550;&#12375;&#12390;&#12450;&#12463;&#12475;&#12473;&#12391;&#12365;&#12394;&#12356;&#21839;&#38988;&#12398;&#23550;&#24540;(&#26032;&#12503;&#12524;&#12452;&#12516;&#23550;&#24540;)&#12290;<br>&#12525;&#12464;&#20986;&#21147;&#12398;&#35211;&#30452;&#12375;&#12290;</p><p>2009/03/23<br>&#21205;&#30011;&#12501;&#12449;&#12452;&#12523;&#21462;&#24471;&#26178;403&#12434;&#12418;&#12425;&#12387;&#12383;&#22580;&#21512;&#12289;&#12501;&#12449;&#12452;&#12523;&#12434;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#12375;&#12394;&#12356;&#12424;&#12358;&#12395;&#23550;&#24540;&#12290;</p><p>2009/01/11<br>&#35222;&#32884;&#27177;&#38480;&#12364;&#28961;&#12356;&#21205;&#30011;&#12434;&#21462;&#24471;&#12375;&#12424;&#12358;&#12392;&#12375;&#12383;&#22580;&#21512;&#12395;&#12450;&#12503;&#12522;&#12465;&#12540;&#12471;&#12519;&#12531;&#12364;&#32066;&#20102;&#12375;&#12390;&#12375;&#12414;&#12358;&#21839;&#38988;&#12434;&#20462;&#27491;&#12290;</p><p>2008/08/03<br>&#12521;&#12531;&#12461;&#12531;&#12464;&#12398;RSS&#12434;zio&#12373;&#12435;&#20316;&#12491;&#12467;RSS<br>http://zio3.net/nicoRss/Handler.ashx<br>&#12363;&#12425;&#26412;&#23478;<br>http://www.nicovideo.jp/ranking/mylist/daily/all?rss=atom<br>&#12395;&#22793;&#26356;&#12375;&#12383;&#12290;</p><p>2008/04/09<br>&#21069;&#22238;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#35201;&#27714;&#12363;&#12425;5&#31186;&#24453;&#12387;&#12390;&#12363;&#12425;&#27425;&#12398;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#35201;&#27714;&#12434;&#34892;&#12358;&#12424;&#12358;&#12454;&#12455;&#12452;&#12488;&#20966;&#29702;&#12434;&#36861;&#21152;&#12375;&#12383;&#12290;<br>&#12479;&#12540;&#12466;&#12483;&#12488;&#12434;JDK6&#12363;&#12425;JDK5&#12395;&#22793;&#26356;&#12375;&#12383;&#12290;</p><p>2008/03/21<br>&#20844;&#38283;&#12510;&#12452;&#12522;&#12473;&#12488;&#12434;&#25351;&#23450;&#12375;&#12383;&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#12434;&#21487;&#33021;&#12392;&#12375;&#12383;&#12290;</p><p>2008/03/15<br>&#12480;&#12454;&#12531;&#12525;&#12540;&#12489;&#12377;&#12427;&#26368;&#20302;&#12521;&#12531;&#12461;&#12531;&#12464;&#12434;&#25351;&#23450;&#21487;&#33021;&#12392;&#12375;&#12383;&#12290;<br>&#12501;&#12449;&#12452;&#12523;&#21517;&#12395;&#12489;&#12483;&#12488;&#12364;&#20837;&#12387;&#12390;&#12356;&#12383;&#22580;&#21512;&#12395;&#12418;&#12450;&#12531;&#12480;&#12540;&#12496;&#12540;&#12395;<br>&#32622;&#25563;&#12377;&#12427;&#12424;&#12358;&#32622;&#25563;&#35215;&#21063;&#12434;&#36861;&#21152;(Craving Explorer&#12395;&#21512;&#12431;&#12379;&#12383;)&#12290;</p></body></html>
\ No newline at end of file
--- a/README_sjis.txt
+++ /dev/null
@@ -1,93 +0,0 @@
1-●運用方法の一例
2-http://feather.cocolog-nifty.com/weblog/2008/03/post_7d4b.html
3-
4-●操作方法:
5-コマンドラインで以下を実行。
6-java -jar NicoBrowser.jar
7-
8-1回目の起動でコンフィグファイルがアプリケーションディレクトリに作成される。
9-Windowsであれば、例えば以下のディレクトリ。
10-C:\Documents and Settings\user\.nicobrowser
11-
12-nicobrowser.propertiesを開き、IDとパスワードを設定する。
13-
14-設定後、再度実行すればダウンロード開始。
15-
16-
17-●20090323版以前を使用していた場合の注意事項:
18-nicobrowser.propertiesの互換性は無いため、一旦リネーム(or 削除)してから
19-実行する必要がある。こうすることで、新しいnicobrowser.propertiesが作成される。
20-
21-path.dbの設定は、従来は"ファイル名"の指定だったが、
22-現在は"ディレクトリ名"の指定に変わっていることに注意。
23-
24-本体libディレクトリ以下について、構成が大きく変わっているため、libは上書きでなく
25-置換することを推奨。
26-
27-
28-●nicobrowser.propertiesの説明:
29-
30-path.db=
31-履歴管理DBを保存するディレクトリ。日本語名不可。
32-
33-path.savefile=
34-ダウンロードしたflvファイルを保存するディレクトリ。日本語名不可。
35-
36-encoding=
37-feedurl.txtの文字エンコーディング。
38-
39-nicovideo.mail=
40-ニコニコ動画のメールアドレス(ID)。
41-
42-nicovideo.password=
43-ニコニコ動画のパスワード。
44-
45-download.mylist=
46-指定した公開マイリストに登録されているコンテンツをダウンロード対象に含める。
47-例えば
48-http://www.nicovideo.jp/mylist/4573744
49-http://www.nicovideo.jp/mylist/739988/1395449
50-上記2個のマイリストを対象とする場合、
51-download.mylist=4573744,739988/1395449
52-と、URLの mylist/ 以下をカンマで区切って指定する。
53-
54-
55-●feedurl.txtの説明:
56-1行ごとに、対象とするRSSフィードのURLと抽出数をカンマ区切りで設定する。
57-書式についてはファイル内のコメント参照。
58-
59-
60-●未解決の課題:
61-webサイト参照。
62-
63-
64-●更新履歴
65-2009/05/24
66-デイリーランキング以外のフィードへ対応。
67-一部のswfに対してアクセスできない問題の対応(新プレイヤ対応)。
68-ログ出力の見直し。
69-
70-2009/03/23
71-動画ファイル取得時403をもらった場合、ファイルをダウンロードしないように対応。
72-
73-2009/01/11
74-視聴権限が無い動画を取得しようとした場合にアプリケーションが終了してしまう問題を修正。
75-
76-2008/08/03
77-ランキングのRSSをzioさん作ニコRSS
78-http://zio3.net/nicoRss/Handler.ashx
79-から本家
80-http://www.nicovideo.jp/ranking/mylist/daily/all?rss=atom
81-に変更した。
82-
83-2008/04/09
84-前回ダウンロード要求から5秒待ってから次のダウンロード要求を行うようウェイト処理を追加した。
85-ターゲットをJDK6からJDK5に変更した。
86-
87-2008/03/21
88-公開マイリストを指定したダウンロードを可能とした。
89-
90-2008/03/15
91-ダウンロードする最低ランキングを指定可能とした。
92-ファイル名にドットが入っていた場合にもアンダーバーに
93-置換するよう置換規則を追加(Craving Explorerに合わせた)。
--- a/README_utf8.txt
+++ /dev/null
@@ -1,93 +0,0 @@
1-●運用方法の一例
2-http://feather.cocolog-nifty.com/weblog/2008/03/post_7d4b.html
3-
4-●操作方法:
5-コマンドラインで以下を実行。
6-java -jar NicoBrowser.jar
7-
8-1回目の起動でコンフィグファイルがアプリケーションディレクトリに作成される。
9-Windowsであれば、例えば以下のディレクトリ。
10-C:\Documents and Settings\user\.nicobrowser
11-
12-nicobrowser.propertiesを開き、IDとパスワードを設定する。
13-
14-設定後、再度実行すればダウンロード開始。
15-
16-
17-●20090323版以前を使用していた場合の注意事項:
18-nicobrowser.propertiesの互換性は無いため、一旦リネーム(or 削除)してから
19-実行する必要がある。こうすることで、新しいnicobrowser.propertiesが作成される。
20-
21-path.dbの設定は、従来は"ファイル名"の指定だったが、
22-現在は"ディレクトリ名"の指定に変わっていることに注意。
23-
24-本体libディレクトリ以下について、構成が大きく変わっているため、libは上書きでなく
25-置換することを推奨。
26-
27-
28-●nicobrowser.propertiesの説明:
29-
30-path.db=
31-履歴管理DBを保存するディレクトリ。日本語名不可。
32-
33-path.savefile=
34-ダウンロードしたflvファイルを保存するディレクトリ。日本語名不可。
35-
36-encoding=
37-feedurl.txtの文字エンコーディング。
38-
39-nicovideo.mail=
40-ニコニコ動画のメールアドレス(ID)。
41-
42-nicovideo.password=
43-ニコニコ動画のパスワード。
44-
45-download.mylist=
46-指定した公開マイリストに登録されているコンテンツをダウンロード対象に含める。
47-例えば
48-http://www.nicovideo.jp/mylist/4573744
49-http://www.nicovideo.jp/mylist/739988/1395449
50-上記2個のマイリストを対象とする場合、
51-download.mylist=4573744,739988/1395449
52-と、URLの mylist/ 以下をカンマで区切って指定する。
53-
54-
55-●feedurl.txtの説明:
56-1行ごとに、対象とするRSSフィードのURLと抽出数をカンマ区切りで設定する。
57-書式についてはファイル内のコメント参照。
58-
59-
60-●未解決の課題:
61-webサイト参照。
62-
63-
64-●更新履歴
65-2009/05/24
66-デイリーランキング以外のフィードへ対応。
67-一部のswfに対してアクセスできない問題の対応(新プレイヤ対応)。
68-ログ出力の見直し。
69-
70-2009/03/23
71-動画ファイル取得時403をもらった場合、ファイルをダウンロードしないように対応。
72-
73-2009/01/11
74-視聴権限が無い動画を取得しようとした場合にアプリケーションが終了してしまう問題を修正。
75-
76-2008/08/03
77-ランキングのRSSをzioさん作ニコRSS
78-http://zio3.net/nicoRss/Handler.ashx
79-から本家
80-http://www.nicovideo.jp/ranking/mylist/daily/all?rss=atom
81-に変更した。
82-
83-2008/04/09
84-前回ダウンロード要求から5秒待ってから次のダウンロード要求を行うようウェイト処理を追加した。
85-ターゲットをJDK6からJDK5に変更した。
86-
87-2008/03/21
88-公開マイリストを指定したダウンロードを可能とした。
89-
90-2008/03/15
91-ダウンロードする最低ランキングを指定可能とした。
92-ファイル名にドットが入っていた場合にもアンダーバーに
93-置換するよう置換規則を追加(Craving Explorerに合わせた)。
--- a/createDDL.jdbc
+++ /dev/null
@@ -1,3 +0,0 @@
1-CREATE TABLE NICOCONTENT (ID NUMBER(19) NOT NULL, CONVERTEDMP4 NUMBER(1) NOT NULL, PAGELINK VARCHAR(255), FILENAME VARCHAR(255), CONVERTEDMP3 NUMBER(1) NOT NULL, TITLE VARCHAR(255), FAILTIMES NUMBER(10), VERSION NUMBER(19), NICOID VARCHAR(255) NOT NULL, STATUS NUMBER(10) NOT NULL, PRIMARY KEY (ID))
2-CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT NUMBER(19), PRIMARY KEY (SEQ_NAME))
3-INSERT INTO SEQUENCE(SEQ_NAME, SEQ_COUNT) values ('SEQ_GEN', 1)
--- a/dropDDL.jdbc
+++ /dev/null
@@ -1,2 +0,0 @@
1-DROP TABLE NICOCONTENT
2-DELETE FROM SEQUENCE WHERE SEQ_NAME = 'SEQ_GEN'
--- a/nbproject/genfiles.properties
+++ b/nbproject/genfiles.properties
@@ -1,11 +1,11 @@
11 build.xml.data.CRC32=d1b53a37
22 build.xml.script.CRC32=02aac843
3-build.xml.stylesheet.CRC32=958a1d3e@1.26.0.45
3+build.xml.stylesheet.CRC32=958a1d3e@1.26.2.45
44 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
55 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
66 nbproject/build-impl.xml.data.CRC32=d1b53a37
77 nbproject/build-impl.xml.script.CRC32=64e0e087
8-nbproject/build-impl.xml.stylesheet.CRC32=5c621a33@1.26.0.45
8+nbproject/build-impl.xml.stylesheet.CRC32=5c621a33@1.26.2.45
99 nbproject/groovy-build.xml.data.CRC32=d1b53a37
1010 nbproject/groovy-build.xml.script.CRC32=6721cc58
11-nbproject/groovy-build.xml.stylesheet.CRC32=ad2b7201@1.7
11+nbproject/groovy-build.xml.stylesheet.CRC32=ad2b7201@1.7.1
--- a/nbproject/project.properties
+++ b/nbproject/project.properties
@@ -21,6 +21,7 @@ dist.jar=${dist.dir}/NicoBrowser.jar
2121 dist.javadoc.dir=${dist.dir}/javadoc
2222 excludes=
2323 file.reference.commons-io-1.4.jar=F:\\data\\java\\commons\\commons-io-1.4\\commons-io-1.4.jar
24+file.reference.liquibase-1.9.5.jar=F:\\data\\java\\liquibase-1.9.5\\liquibase-1.9.5.jar
2425 includes=**
2526 jar.compress=false
2627 javac.classpath=\
@@ -28,11 +29,13 @@ javac.classpath=\
2829 ${libs.Rome.classpath}:\
2930 ${libs.H2_DB.classpath}:\
3031 ${libs.toplink.classpath}:\
31- ${libs.HttpClient4.classpath}:\
32+ ${libs.Log4J1.2.14.classpath}:\
3233 ${libs.Log4J.classpath}:\
34+ ${libs.HttpClient4.0.classpath}:\
3335 ${libs.NekoHtml.classpath}:\
3436 ${file.reference.commons-io-1.4.jar}:\
35- ${libs.groovy-all.classpath}
37+ ${libs.groovy-all.classpath}:\
38+ ${file.reference.liquibase-1.9.5.jar}
3639 # Space-separated list of extra javac options
3740 javac.compilerargs=
3841 javac.deprecation=false
@@ -67,9 +70,6 @@ libs.Codec.classpath=../../../java/commons/commons-codec-1.3/commons-codec-1.3.j
6770 # Property libs.H2_DB.classpath is set here just to make sharing of project simpler.
6871 # The library definition has always preference over this property.
6972 libs.H2_DB.classpath=../../../java/h2-2008-02-02/h2/bin/h2.jar
70-# Property libs.HttpClient4.classpath is set here just to make sharing of project simpler.
71-# The library definition has always preference over this property.
72-libs.HttpClient4.classpath=../../../java/commons/httpcomponents-client-4.0-alpha3-bin-with-dependencies/httpcomponents-client-4.0-alpha3/lib/commons-io-1.2.jar;../../../java/commons/httpcomponents-client-4.0-alpha3-bin-with-dependencies/httpcomponents-client-4.0-alpha3/lib/httpclient-4.0-alpha3.jar;../../../java/commons/httpcomponents-client-4.0-alpha3-bin-with-dependencies/httpcomponents-client-4.0-alpha3/lib/httpcore-4.0-beta1.jar;../../../java/commons/httpcomponents-client-4.0-alpha3-bin-with-dependencies/httpcomponents-client-4.0-alpha3/lib/httpmime-4.0-alpha3.jar
7373 # Property libs.Log4J.classpath is set here just to make sharing of project simpler.
7474 # The library definition has always preference over this property.
7575 libs.Log4J.classpath=../../../java/commons/commons-logging-1.1/commons-logging-adapters-1.1.jar;../../../java/commons/commons-logging-1.1/commons-logging-api-1.1.jar
--- a/src/META-INF/persistence.xml
+++ b/src/META-INF/persistence.xml
@@ -8,7 +8,6 @@
88 <property name="toplink.jdbc.password" value=""/>
99 <property name="toplink.jdbc.url" value="jdbc:h2:db/NicoDB"/>
1010 <property name="toplink.jdbc.driver" value="org.h2.Driver"/>
11- <property name="toplink.ddl-generation" value="create-tables"/>
1211 </properties>
1312 </persistence-unit>
1413 </persistence>
--- /dev/null
+++ b/src/nicobrowser/GetFlvResult.groovy
@@ -0,0 +1,15 @@
1+/** $Id$ */
2+
3+package nicobrowser
4+
5+import nicobrowser.entity.NicoContent.Status
6+
7+class GetFlvResult{
8+ final Status status
9+ final String author
10+
11+ GetFlvResult(status, author){
12+ this.status = status
13+ this.author = author
14+ }
15+}
--- a/src/nicobrowser/NicoHttpClient.java
+++ b/src/nicobrowser/NicoHttpClient.java
@@ -476,7 +476,7 @@ public class NicoHttpClient extends DefaultHttpClient {
476476 */
477477 public URL getFlvUrl(String videoID) throws IOException {
478478 String accessUrl = GET_FLV_INFO + videoID;
479- if(videoID.startsWith("nm")){
479+ if (videoID.startsWith("nm")) {
480480 accessUrl += "?as3=1";
481481 }
482482 log.debug("アクセス: " + accessUrl);
@@ -523,19 +523,28 @@ public class NicoHttpClient extends DefaultHttpClient {
523523 * @return この処理を行った後の, 対象ファイルのステータス.
524524 * @throws java.io.IOException ファイル取得失敗. 権限の無いファイルを取得しようとした場合も.
525525 */
526- public Status getFlvFile(String videoID, String fileName, Status nowStatus, boolean mp4ExtIsMp4) throws IOException,
526+ public GetFlvResult getFlvFile(String videoID, String fileName, Status nowStatus, boolean mp4ExtIsMp4) throws
527+ IOException,
527528 URISyntaxException, HttpException, InterruptedException {
528529 byte[] buffer = new byte[1024 * 32];
529530 final String watchUrl = "http://www.nicovideo.jp/watch/" + videoID;
530531 log.debug("アクセス: " + watchUrl);
531532 HttpGet get = new HttpGet(watchUrl);
532533 HttpResponse response = execute(get);
534+ final String userId = Util.getUserId(response.getEntity().getContent());
535+ response.getEntity().consumeContent();
536+
537+ final String userUrl = "http://www.nicovideo.jp/user/" + userId;
538+ log.debug("アクセス: " + watchUrl);
539+ get = new HttpGet(userUrl);
540+ response = execute(get);
541+ final String userName = Util.getUserName(response.getEntity().getContent());
533542 response.getEntity().consumeContent();
534543
535544 URL url = getFlvUrl(videoID);
536545 if (nowStatus == Status.GET_LOW && url.toString().contains("low")) {
537546 log.info("lowファイル取得済みのためスキップ" + videoID + ":" + fileName);
538- return nowStatus;
547+ return new GetFlvResult(nowStatus, userName);
539548 }
540549
541550 get = new HttpGet(url.toURI());
@@ -546,7 +555,7 @@ public class NicoHttpClient extends DefaultHttpClient {
546555 if ("text/plain".equals(contentType) || "text/html".equals(contentType)) {
547556 log.error("取得できませんでした. サーバが混みあっている可能性があります: " + videoID + ":" + fileName);
548557 response.getEntity().consumeContent();
549- return Status.GET_INFO;
558+ return new GetFlvResult(Status.GET_INFO, userName);
550559 }
551560 String ext = Util.getExtention(contentType);
552561 if (!mp4ExtIsMp4) {
@@ -576,9 +585,9 @@ public class NicoHttpClient extends DefaultHttpClient {
576585 out.close();
577586 in.close();
578587 if (url.toString().contains("low")) {
579- return Status.GET_LOW;
588+ return new GetFlvResult(Status.GET_LOW, userName);
580589 }
581- return Status.GET_FILE;
590+ return new GetFlvResult(Status.GET_FILE, userName);
582591 }
583592
584593 /**
@@ -588,7 +597,8 @@ public class NicoHttpClient extends DefaultHttpClient {
588597 * @return この処理を行った後の, 対象ファイルのステータス.
589598 * @throws java.io.IOException ファイル取得失敗. 権限の無いファイルを取得しようとした場合も.
590599 */
591- public Status getFlvFile(String videoID, String fileName) throws IOException, URISyntaxException, HttpException,
600+ public GetFlvResult getFlvFile(String videoID, String fileName) throws IOException, URISyntaxException,
601+ HttpException,
592602 InterruptedException {
593603 return getFlvFile(videoID, fileName, Status.GET_INFO, true);
594604 }
@@ -600,7 +610,7 @@ public class NicoHttpClient extends DefaultHttpClient {
600610 * @return この処理を行った後の, 対象ファイルのステータス.
601611 * @throws java.io.IOException ファイル取得失敗. 権限の無いファイルを取得しようとした場合も.
602612 */
603- public Status getFlvFile(String videoID) throws IOException, URISyntaxException, HttpException,
613+ public GetFlvResult getFlvFile(String videoID) throws IOException, URISyntaxException, HttpException,
604614 InterruptedException {
605615 return getFlvFile(videoID, videoID, Status.GET_INFO, true);
606616 }
--- a/src/nicobrowser/entity/NicoContent.java
+++ b/src/nicobrowser/entity/NicoContent.java
@@ -29,6 +29,7 @@ public class NicoContent implements java.io.Serializable {
2929 private int failTimes;
3030 private boolean convertedMp3;
3131 private boolean convertedMp4;
32+ private String author;
3233
3334 @Id
3435 @GeneratedValue(strategy = GenerationType.AUTO)
@@ -138,6 +139,14 @@ public class NicoContent implements java.io.Serializable {
138139 this.convertedMp4 = convertedMp4;
139140 }
140141
142+ public String getAuthor() {
143+ return author;
144+ }
145+
146+ public void setAuthor(String author) {
147+ this.author = author;
148+ }
149+
141150 @Override
142151 public int hashCode() {
143152 int hash = 0;
--- a/src/nicobrowser/main/Main.java
+++ b/src/nicobrowser/main/Main.java
@@ -1,6 +1,7 @@
11 /*$Id$*/
22 package nicobrowser.main;
33
4+import nicobrowser.update.DBUpdater;
45 import java.io.File;
56 import java.io.IOException;
67 import java.util.ArrayList;
@@ -14,6 +15,7 @@ import javax.persistence.EntityTransaction;
1415 import javax.persistence.Persistence;
1516 import javax.persistence.Query;
1617 import nicobrowser.Config;
18+import nicobrowser.GetFlvResult;
1719 import nicobrowser.Config.NicoFeed;
1820 import nicobrowser.NicoHttpClient;
1921 import nicobrowser.entity.NicoContent;
@@ -32,6 +34,13 @@ public class Main {
3234 return;
3335 }
3436
37+ DBUpdater updater = new DBUpdater();
38+ if (args.length > 0 && "sync".equals(args[0])) {
39+ updater.sync();
40+ return;
41+ }
42+ updater.update();
43+
3544 new Main().start();
3645 }
3746
@@ -118,11 +127,12 @@ public class Main {
118127 prevDate = Calendar.getInstance().getTime();
119128 File saveLocation = new File(config.getSrcSaveDir(), c.getFileName());
120129 log.info("ファイルを取得します: " + c.getNicoId() + " " + c.getTitle());
121- Status status;
122130 try {
123- status = instance.getFlvFile(c.getNicoId(),
131+ GetFlvResult result = instance.getFlvFile(c.getNicoId(),
124132 saveLocation.getCanonicalPath(), c.getStatus(),
125133 true);
134+ c.setAuthor(result.getAuthor());
135+ Status status = result.getStatus();
126136 c.setStatus(status);
127137 if (status == Status.GET_INFO) {
128138 c.setFailTimes(c.getFailTimes() + 1);
--- /dev/null
+++ b/src/nicobrowser/update/DBUpdater.java
@@ -0,0 +1,94 @@
1+/** */
2+package nicobrowser.update;
3+
4+import java.io.BufferedInputStream;
5+import java.io.BufferedOutputStream;
6+import java.io.File;
7+import java.io.FileOutputStream;
8+import java.io.IOException;
9+import java.io.InputStream;
10+import java.util.logging.Level;
11+import java.util.logging.Logger;
12+import liquibase.commandline.Main;
13+import liquibase.exception.CommandLineParsingException;
14+import nicobrowser.Config;
15+import org.apache.commons.logging.Log;
16+import org.apache.commons.logging.LogFactory;
17+
18+public class DBUpdater {
19+
20+ private static Log log = LogFactory.getLog(DBUpdater.class);
21+ private static final String UPDATE_FILE = "db_update_script.xml";
22+ private static final String SYNC_FILE = "db_for_sync_script.xml";
23+
24+ public void sync() throws IOException {
25+ File updateFile = new File(new File(Config.getInstance().getDbFile()).getParent(), UPDATE_FILE);
26+ InputStream resource = ClassLoader.getSystemResourceAsStream("resources/" + SYNC_FILE);
27+
28+ createFile(resource, updateFile);
29+
30+ String[] args = new String[]{
31+ "--driver=org.h2.Driver",
32+ "--changeLogFile=" + updateFile.toString(),
33+ "--url=jdbc:h2:" + Config.getInstance().getDbFile(),
34+ "--username=sa",
35+ "changeLogSync"};
36+ try {
37+ Main.main(args);
38+
39+ log.info("DBのアップデートが終了しました.");
40+ } catch (CommandLineParsingException ex) {
41+ log.fatal("DBのアップデートに失敗しました.", ex);
42+ throw new IOException(ex);
43+ }
44+ }
45+
46+ public void update() throws IOException {
47+ File updateFile = new File(new File(Config.getInstance().getDbFile()).getParent(), UPDATE_FILE);
48+ InputStream resource = ClassLoader.getSystemResourceAsStream("resources/" + UPDATE_FILE);
49+
50+ createFile(resource, updateFile);
51+
52+ String[] args = new String[]{
53+ "--driver=org.h2.Driver",
54+ "--changeLogFile=" + updateFile.toString(),
55+ "--url=jdbc:h2:" + Config.getInstance().getDbFile(),
56+ "--username=sa",
57+ "update"};
58+ try {
59+ Main.main(args);
60+
61+ log.info("DBのアップデートが終了しました.");
62+ } catch (CommandLineParsingException ex) {
63+ log.fatal("DBのアップデートに失敗しました.", ex);
64+ throw new IOException(ex);
65+ }
66+ }
67+
68+ private void createFile(InputStream resource, File updateFile) throws IOException {
69+ BufferedInputStream is = null;
70+ BufferedOutputStream os = null;
71+ try {
72+ is = new BufferedInputStream(resource);
73+ os = new BufferedOutputStream(new FileOutputStream(updateFile));
74+ byte[] b = new byte[1024];
75+ int l;
76+ while ((l = is.read(b)) != -1) {
77+ os.write(b, 0, l);
78+ }
79+ } finally {
80+ try {
81+ if (is != null) {
82+ is.close();
83+ }
84+ } catch (IOException ex) {
85+ }
86+ if (os != null) {
87+ try {
88+ os.close();
89+ } catch (IOException ex) {
90+ }
91+ }
92+ }
93+ }
94+}
--- /dev/null
+++ b/src/nicobrowser/util/UserInfo.groovy
@@ -0,0 +1,28 @@
1+/*
2+ * To change this template, choose Tools | Templates
3+ * and open the template in the editor.
4+ */
5+
6+package nicobrowser.util
7+import org.cyberneko.html.parsers.SAXParser
8+
9+/**
10+ *
11+ * @author yuki
12+ */
13+class UserInfo {
14+ String getUserId(InputStream is){
15+ def html = new XmlSlurper(new SAXParser()).parse(is)
16+ def res = html.'**'.find{it.attributes()['href']?.startsWith '/user/'}
17+
18+ return res.attributes()['href'].replaceAll('/user/','').toString()
19+ }
20+
21+ String getUserName(InputStream is){
22+ def html = new XmlSlurper(new SAXParser()).parse(is)
23+ def title = html.'HEAD'.'TITLE'.text()
24+ def i = title.indexOf('さんのユーザーページ')
25+ return title.substring(0,i)
26+ }
27+}
28+
--- a/src/nicobrowser/util/Util.java
+++ b/src/nicobrowser/util/Util.java
@@ -7,6 +7,7 @@ import java.util.List;
77 public class Util {
88
99 static ResultParse rp = new ResultParse();
10+ static UserInfo ui = new UserInfo();
1011
1112 public static String getExtention(String contentType) {
1213 if ("video/flv".equals(contentType) || "video/x-flv".equals(contentType)) {
@@ -26,4 +27,22 @@ public class Util {
2627 public static String getNextPage(InputStream is) {
2728 return rp.getNextPage(is);
2829 }
30+
31+ /**
32+ * ユーザIDを取得する
33+ * @param is ニコニコ動画のウォッチページストリーム.
34+ * @return ユーザID.
35+ */
36+ public static String getUserId(InputStream is) {
37+ return ui.getUserId(is);
38+ }
39+
40+ /**
41+ * ユーザ名を取得する.
42+ * @param is ユーザページのストリーム.
43+ * @return ユーザ名.
44+ */
45+ public static String getUserName(InputStream is) {
46+ return ui.getUserName(is);
47+ }
2948 }
--- /dev/null
+++ b/src/resources/db_for_sync_script.xml
@@ -0,0 +1,39 @@
1+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">
3+ <changeSet author="yuki (generated)" id="1258025189836-1">
4+ <createTable schemaName="PUBLIC" tableName="NICOCONTENT">
5+ <column name="ID" type="DECIMAL(19,0)">
6+ <constraints nullable="false" primaryKey="true" primaryKeyName="PRIMARY_KEY_4"/>
7+ </column>
8+ <column name="CONVERTEDMP4" type="DECIMAL(1,0)">
9+ <constraints nullable="false"/>
10+ </column>
11+ <column name="NICOID" type="VARCHAR(255)">
12+ <constraints nullable="false"/>
13+ </column>
14+ <column name="FILENAME" type="VARCHAR(255)"/>
15+ <column name="CONVERTEDMP3" type="DECIMAL(1,0)">
16+ <constraints nullable="false"/>
17+ </column>
18+ <column name="TITLE" type="VARCHAR(255)"/>
19+ <column name="PAGELINK" type="VARCHAR(255)"/>
20+ <column name="VERSION" type="DECIMAL(19,0)"/>
21+ <column name="FAILTIMES" type="DECIMAL(10,0)"/>
22+ <column name="STATUS" type="DECIMAL(10,0)">
23+ <constraints nullable="false"/>
24+ </column>
25+ </createTable>
26+ </changeSet>
27+ <changeSet author="yuki (generated)" id="1258025189836-2">
28+ <createTable schemaName="PUBLIC" tableName="SEQUENCE">
29+ <column name="SEQ_NAME" type="VARCHAR(50)">
30+ <constraints nullable="false" primaryKey="true" primaryKeyName="PRIMARY_KEY_7"/>
31+ </column>
32+ <column name="SEQ_COUNT" type="DECIMAL(19,0)"/>
33+ </createTable>
34+ <insert schemaName="PUBLIC" tableName="SEQUENCE">
35+ <column name="SEQ_NAME" value="SEQ_GEN"/>
36+ <column name="SEQ_COUNT" valueNumeric="1"/>
37+ </insert>
38+ </changeSet>
39+</databaseChangeLog>
--- /dev/null
+++ b/src/resources/db_update_script.xml
@@ -0,0 +1,44 @@
1+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">
3+ <changeSet author="yuki (generated)" id="1258025189836-1">
4+ <createTable schemaName="PUBLIC" tableName="NICOCONTENT">
5+ <column name="ID" type="DECIMAL(19,0)">
6+ <constraints nullable="false" primaryKey="true" primaryKeyName="PRIMARY_KEY_4"/>
7+ </column>
8+ <column name="CONVERTEDMP4" type="DECIMAL(1,0)">
9+ <constraints nullable="false"/>
10+ </column>
11+ <column name="NICOID" type="VARCHAR(255)">
12+ <constraints nullable="false"/>
13+ </column>
14+ <column name="FILENAME" type="VARCHAR(255)"/>
15+ <column name="CONVERTEDMP3" type="DECIMAL(1,0)">
16+ <constraints nullable="false"/>
17+ </column>
18+ <column name="TITLE" type="VARCHAR(255)"/>
19+ <column name="PAGELINK" type="VARCHAR(255)"/>
20+ <column name="VERSION" type="DECIMAL(19,0)"/>
21+ <column name="FAILTIMES" type="DECIMAL(10,0)"/>
22+ <column name="STATUS" type="DECIMAL(10,0)">
23+ <constraints nullable="false"/>
24+ </column>
25+ </createTable>
26+ </changeSet>
27+ <changeSet author="yuki (generated)" id="1258025189836-2">
28+ <createTable schemaName="PUBLIC" tableName="SEQUENCE">
29+ <column name="SEQ_NAME" type="VARCHAR(50)">
30+ <constraints nullable="false" primaryKey="true" primaryKeyName="PRIMARY_KEY_7"/>
31+ </column>
32+ <column name="SEQ_COUNT" type="DECIMAL(19,0)"/>
33+ </createTable>
34+ <insert schemaName="PUBLIC" tableName="SEQUENCE">
35+ <column name="SEQ_NAME" value="SEQ_GEN"/>
36+ <column name="SEQ_COUNT" valueNumeric="1"/>
37+ </insert>
38+ </changeSet>
39+ <changeSet author="yuki" id="1">
40+ <addColumn schemaName="PUBLIC" tableName="NICOCONTENT">
41+ <column name="AUTHOR" type="VARCHAR(255)"/>
42+ </addColumn>
43+ </changeSet>
44+</databaseChangeLog>
--- /dev/null
+++ b/test/nicobrowser/update/UpdaterTest.java
@@ -0,0 +1,22 @@
1+/** $Id$ */
2+package nicobrowser.update;
3+
4+import java.io.IOException;
5+import org.junit.Test;
6+
7+public class UpdaterTest {
8+
9+ @Test
10+ public void testUpdate() throws IOException {
11+ System.out.println("update");
12+ DBUpdater instance = new DBUpdater();
13+ instance.update();
14+ }
15+
16+ @Test
17+ public void testSyncAndUpdate() throws IOException {
18+ DBUpdater updater = new DBUpdater();
19+ updater.sync();
20+ updater.update();
21+ }
22+}
--- a/test/nicobrowser/util/UtilTest.java
+++ b/test/nicobrowser/util/UtilTest.java
@@ -5,17 +5,6 @@ import java.io.FileInputStream;
55 import java.io.FileNotFoundException;
66 import java.io.InputStream;
77 import java.net.MalformedURLException;
8-import java.net.URISyntaxException;
9-import java.net.URL;
10-import java.util.List;
11-import nicobrowser.NicoHttpClient;
12-import nicobrowser.entity.NicoContent;
13-import nicobrowser.util.Result;
14-import org.apache.http.HttpException;
15-import org.junit.After;
16-import org.junit.AfterClass;
17-import org.junit.Before;
18-import org.junit.BeforeClass;
198 import org.junit.Test;
209 import static org.junit.Assert.*;
2110
@@ -24,25 +13,6 @@ public class UtilTest {
2413 static final String OK_MAIL = "niconico.senyou@live.jp";
2514 static final String OK_PASS = "piyopiyo";
2615
27- public UtilTest() {
28- }
29-
30- @BeforeClass
31- public static void setUpClass() throws Exception {
32- }
33-
34- @AfterClass
35- public static void tearDownClass() throws Exception {
36- }
37-
38- @Before
39- public void setUp() {
40- }
41-
42- @After
43- public void tearDown() {
44- }
45-
4616 /**
4717 * Test of getExtention method, of class Util.
4818 */
@@ -86,4 +56,18 @@ public class UtilTest {
8656 result = Util.getNextPage(is);
8757 assertNull(result);
8858 }
89-}
\ No newline at end of file
59+
60+ @Test
61+ public void testGetUserId() throws FileNotFoundException {
62+ InputStream is = new FileInputStream("testdata/sm8769630.html");
63+ String id = Util.getUserId(is);
64+ assertEquals("336619", id);
65+ }
66+
67+ @Test
68+ public void testGetUserName() throws FileNotFoundException {
69+ InputStream is = new FileInputStream("testdata/user_336619.html");
70+ String name = Util.getUserName(is);
71+ assertEquals("ZAKO2012", name);
72+ }
73+}
--- /dev/null
+++ b/testdata/sm8769630.html
@@ -0,0 +1,603 @@
1+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2+"http://www.w3.org/TR/html4/loose.dtd">
3+<html>
4+<head>
5+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6+<meta http-equiv="Content-Script-Type" content="text/javascript">
7+<meta http-equiv="Content-Style-Type" content="text/css">
8+<meta name="copyright" content="&copy; niwango, Inc.">
9+
10+<!---->
11+<meta name="keywords" content="ゲーム,RPGツクール,高橋邦子,川越ではよくあること,決戦のバトル・フィールド,またお前か,坂田家の日常,イイハナシダナー,煙幕系シューティング,ショットガン最強説">
12+<meta name="description" content=" 2009 年作の第 21 作目。 RPGツクールVX...">
13+<meta http-equiv="Pragma" content="no-cache">
14+<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate, post-check=0, pre-check=0">
15+<meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT">
16+
17+<!---->
18+<link rel="canonical" href="/watch/sm8769630">
19+
20+<!---->
21+<title>妹が作った痛い RPG「えろえろスク水ダンジョン」‐ニコニコ動画(9)</title>
22+
23+<base href="http://www.nicovideo.jp/">
24+
25+<!---->
26+<link rel="shortcut icon" href="http://res.nimg.jp/img/favicon.ico">
27+<link rel="stylesheet" type="text/css" charset="utf-8" href="http://res.nimg.jp/css/common.css?091106">
28+<link rel="stylesheet" type="text/css" charset="utf-8" href="http://res.nimg.jp/css/watch.css?091105">
29+
30+<!---->
31+<script type="text/javascript" src="http://res.nimg.jp/js/lib/prototype.js?1.5.1.1_2"></script>
32+<script type="text/javascript" src="http://res.nimg.jp/js/common.js?090905"></script>
33+<script type="text/javascript" src="http://res.nimg.jp/js/swfobject.js?4"></script>
34+<script type="text/javascript" src="http://res.nimg.jp/js/nicolib.js?091110"></script>
35+<script type="text/javascript" src="http://res.nimg.jp/js/ads.js?091030"></script>
36+<script type="text/javascript" src="http://res.nimg.jp/js/__utm.js?080117"></script>
37+<script type="text/javascript" src="http://res.nimg.jp/js/nicommons.js?1" charset="utf-8"></script>
38+<script type="text/javascript" src="http://res.nimg.jp/js/nicopedia.js?12" charset="utf-8"></script>
39+<script type="text/javascript" src="http://res.nimg.jp/js/tag_edit.js?091109" charset="utf-8"></script>
40+<script type="text/javascript" src="http://res.nimg.jp/js/swfmacmousewheel.js?090706" charset="utf-8"></script>
41+<script type="text/javascript" src="http://res.nimg.jp/js/watch.js?091102" chatset="utf-8"></script>
42+
43+
44+<script type="text/javascript"><!--
45+
46+var User = { id: 335912, isPremium: false, isOver18: true, isMan: true };
47+var q = "";
48+var country = "jp";
49+
50+
51+
52+Event.observe(document, "keydown", function (event) {
53+ if (event.keyCode != 116) return;
54+ document.write('<p style="font-size:12px; text-align:center;">キー操作制限:ブラウザの「戻る」ボタンでお戻りください</p>');
55+ Event.stop(event);
56+}.bindAsEventListener(window));
57+
58+
59+--></script>
60+</head>
61+
62+<body id="PAGETOP" class="mode_2">
63+<div id="PAGEHEADER">
64+<!---->
65+<div class="bg_headmenu" onmouseout="hideOBJ('headmenu_g1'); hideOBJ('headmenu_g2'); return false;">
66+<div class="headmenu_width">
67+
68+<table height="28" border="0" cellpadding="4" cellspacing="0" summary="" class="headmenu" style="float:left;" >
69+<tr>
70+<td><a href="http://www.nicovideo.jp/">ニコニコ動画</a> |
71+<a href="http://live.nicovideo.jp/">生放送</a> |
72+<a href="http://ch.nicovideo.jp/">チャンネル</a>
73+…</td>
74+<td>
75+<div id="headmenu_g1" style="position:relative; display:none;">
76+ <div class="headmenu_group" onmouseover="showOBJ('headmenu_g1'); return false;" onmouseout="hideOBJ('headmenu_g1'); return false;">
77+ <table border="0" cellpadding="0" cellspacing="4" class="font12">
78+ <tr><td nowrap>
79+ <a href="http://dic.nicovideo.jp/">大百科</a> | <a href="http://ichiba.nicovideo.jp/">市場</a> | <a href="http://www.niconicommons.jp/">コモンズ</a><br>
80+ <a href="http://ch.nicovideo.jp/com_top">コミュ二ティ</a> | <a href="http://uad.nicovideo.jp/">ニコニ広告</a>
81+ <div class="line"><a href="http://jk.nicovideo.jp/">ニコニコ実況( 試験中 )</a></div>
82+ </td></tr>
83+ </table>
84+ </div>
85+</div>
86+<a onmouseover="showOBJ('headmenu_g1');" href="#">その他▼</a>
87+</td>
88+</tr>
89+</table>
90+
91+<table height="28" border="0" cellpadding="4" cellspacing="0" summary="" class="headmenu" style="float:right;">
92+<tr>
93+<td>
94+<div id="headmenu_g2" style="position:relative; display:none;">
95+ <div class="headmenu_group" onmouseover="showOBJ('headmenu_g2'); return false;" onmouseout="hideOBJ('headmenu_g2'); return false;">
96+ <table border="0" cellpadding="0" cellspacing="4" class="font12">
97+ <tr><td nowrap>
98+ <a href="my/mylist">マイリスト</a><br>
99+ <a href="my/watchlist">ウオッチリスト</a><br>
100+ <a href="my/video">投稿動画</a>
101+ <div class="line"><a href="history">視聴履歴</a></div>
102+ <div class="line"><a href="https://secure.nicovideo.jp/secure/logout">ログアウト</a></div>
103+ </td></tr>
104+ </table>
105+ </div>
106+</div>
107+<a onmouseover="showOBJ('headmenu_g2');" href="#">一般会員
108+yamamoto five さん▼</a> - <a href="/?p=premium_top&sec=bar" style="color:#3CC;">プレミアム会員登録</a></td>
109+<td>…
110+<a href="my/top">マイページ</a> |
111+<a href="http://www.smilevideo.jp/" target="_blank">動画を投稿</a> |
112+<a href="/ranking" id="menu-ranking">ランキング</a> |
113+<a href="migiue" title="これがそれです。">右上</a>
114+</td>
115+<td id="menu_switch">
116+<a href="#" title="追従(クリックで固定)" id="menu_switch_fixed" onclick="$(document.body).removeClassName('mode_2').addClassName('mode_1'); Cookie.set('nofix', 1, 1000*60*60*24*365, '.nicovideo.jp', '/'); return false;"><img src="http://res.nimg.jp/img/base/headmenu/mode_2.png" alt="追従"></a>
117+<a href="#" title="固定(クリックで追従)" id="menu_switch_scroll" onclick="$(document.body).removeClassName('mode_1').addClassName('mode_2'); Cookie.remove('nofix', '.nicovideo.jp', '/'); return false;"><img src="http://res.nimg.jp/img/base/headmenu/mode_1.png" alt="固定"></a>
118+</td>
119+</tr>
120+</table>
121+
122+</div>
123+</div>
124+<!---->
125+<div class="body_984">
126+<table width="984" border="0" cellspacing="0" cellpadding="4" summary="" style="clear:both;">
127+<tr>
128+
129+<td>
130+<!----><a href="related_tag/%E4%BF%AE%E7%BE%85"><img alt="修羅" src="http://res.nimg.jp/img/base/head/icon/nico/370.gif"></a><!---->
131+</td>
132+<td><a href="/" target="_top"><img src="http://res.nimg.jp/img/base/head/logo/nine.png" alt="ニコニコ動画"></a></td>
133+<td width="100%">
134+<form id="head_search_form" action="/search" method="get" onsubmit="submitSearch(this.action, false); return false;"><input type="hidden" name="ref"><a href="#" class="search_sw_1" onclick="submitSearch('/search', this); return false;" ><img src="http://res.nimg.jp/img/_.gif" style="width:57px; height:22px;" alt="キーワード"></a><a href="#" class="search_sw_0" onclick="submitSearch('/tag', this); return false;" ><img src="http://res.nimg.jp/img/_.gif" style="width:31px; height:22px; background-position:-57px 0; margin:0 2px;" alt="タグ"></a><a href="#" class="search_sw_0" onclick="submitSearch('/related_tag', this); return false;"><img src="http://res.nimg.jp/img/_.gif" style="width:97px; height:22px; background-position:-88px 0;" alt="キーワードを含むタグ"></a><table border="0" cellpadding="0" cellspacing="0" summary=""><tr><td><input type="text" name="s" id="bar_search" value="" class="head_search"></td><td style="padding-left:4px;"><input name="submit" type="image" src="http://res.nimg.jp/img/base/head/submit_search.png" alt="検索"></td></tr></table></form>
135+<script type="text/javascript"><!--
136+function submitSearch(p, e) {
137+ var f = $('head_search_form'), s = String.interpret(f.s.value).strip().replace(/%20/g, '+');
138+ if (s != '') location.href = p + "/" + encodeURIComponent(s);
139+ else if (e) { f.down('a.search_sw_1').className = 'search_sw_0'; e.className = 'search_sw_1'; f.action = p; f.s.focus(); }
140+}
141+//--></script>
142+</td>
143+<td><div class="ads_468"><!--↓表示してもよい↓-->
144+
145+<!--↓視聴(watch)↓-->
146+<div style="position:relative;">
147+<div id="rotation_anime_container" style="position:absolute; right:0; top:0; width:100%; height:100%; z-index:1000;"></div>
148+<div id="web_pc_watch"></div>
149+</div>
150+<script type="text/javascript"><!--
151+
152+var so = new SWFObject("http://res.nimg.jp/swf/rotationad.swf?081027", "rotation_anime", "100%", "100%");
153+so.addParam("allowScriptAccess", "always");
154+so.addParam("wmode", "transparent");
155+so.addVariable("noButtons", "1");
156+so.write("rotation_anime_container");
157+delete so;
158+
159+getRotationAdsFor468x60({
160+ category: 'game',
161+ a: '59',
162+ s: '0',
163+ pref: '北海道',
164+ user: '335912',
165+ video: 'sm8769630',
166+ location: 'web_pc_watch'
167+}, {
168+}, 'これがそれです。');
169+
170+--></script>
171+<!--↑視聴(watch)↑-->
172+
173+<!--↑表示してもよい↑-->
174+
175+</div></td>
176+</tr>
177+</table>
178+
179+<div id="cookie_container"></div>
180+<script type="text/javascript"><!--
181+flashCookie.write("cookie_container");
182+--></script>
183+</div>
184+</div>
185+
186+<div class="body_984">
187+<div id="PAGEBODY">
188+<div id="WATCHHEADER">
189+
190+
191+
192+
193+
194+
195+
196+<!--↓省略モード↓-->
197+<div id="des_1" style="display:none;">
198+ <p style="float:right; padding:4px;"><a href="#" onclick="showOBJ('des_2'); hideOBJ('des_1'); Cookie.set('desopen', '1', 1000*60*60*24*365, '.nicovideo.jp', '/'); loadVideoArticleSummary(); return false;"><img src="http://res.nimg.jp/img/_.gif" alt="表示" class="btn_info_open"></a></p>
199+ <div style="padding:4px;">
200+ <p style="font-size:16px; line-height:1.2;"><a href="http://www.smilevideo.jp/view/8769630/335912" target="_blank" class="video">妹が作った痛い RPG「えろえろスク水ダンジョン」</a></p>
201+ <p class="font12"> 2009 年作の第 21 作目。 RPGツクールVX で製作したようです。 その他投稿動画。  myvideo/336619 <a href="#" onclick="showOBJ('des_2'); hideOBJ('des_1'); Cookie.set('desopen', '1', 1000*60*60*24*365, '.nicovideo.jp', '/'); loadVideoArticleSummary(); return false;" style="color:#069;"> ( 続きを読む )</a></p>
202+ </div>
203+</div>
204+<!--↑省略モード↑-->
205+<!--↓詳細モード↓-->
206+<div id="des_2" style="display:block;">
207+
208+<table width="984" border="0" cellpadding="4" cellspacing="0">
209+<tr valign="top">
210+<td><img src="http://res.nimg.jp/img/watch/chcom_img_blank.gif" alt="未登録" class="img_w64h64"></td>
211+<td width="100%">
212+
213+<p style="margin:0 0 4px 4px; float:right;"><a href="#" onclick="showOBJ('des_1'); hideOBJ('des_2'); Cookie.set('desopen', '0', 1000*60*60*24*365, '.nicovideo.jp', '/'); return false;"><img src="http://res.nimg.jp/img/_.gif" alt="隠す" class="btn_info_close"></a></p>
214+
215+<p class="font12">
216+<strong>2009年11月10日 20:08:03</strong> に投稿されたユーザー動画
217+<span style="color:#CCC;">…
218+ <a href="/user/336619">投稿者プロフィールへ</a> |
219+ </span>
220+</p>
221+
222+<h1 style="margin:2px 0;"><a href="http://www.smilevideo.jp/view/8769630/335912" target="_blank" class="video">妹が作った痛い RPG「えろえろスク水ダンジョン」</a></h1>
223+
224+<p class="font12"><strong>この動画は</strong> <span style="color:#CCC;">…</span>
225+<!---->
226+ <a href="http://ch.nicovideo.jp/post/sm8769630">コミュニティへの登録ができます</a>
227+ <!---->
228+<span style="color:#CCC;">|
229+<span id="nicommons"></span>
230+</span>
231+</p>
232+
233+<p class="font12" style="color:#CCC; margin-top:2px;">
234+<strong style="color:#C00;">ゲーム</strong> <span style="color:#333;">カテゴリでの前日総合順位:<strong>3位</strong>( <a href="ranking_graph/fav/daily/game/sm8769630">過去最高:3位</a> )</span> |
235+<a href="http://uad.nicovideo.jp/main/history/index.html?vid=sm8769630">宣伝履歴</a> |
236+<a href="openlist/sm8769630">登録マイリスト</a> |
237+<a href="/mylistcomment/video/sm8769630">マイリストコメント</a> |
238+</p>
239+</td>
240+</tr>
241+</table>
242+
243+<table width="976" border="0" cellpadding="4" cellspacing="0" summary="" style="border:solid 2px #CCC; margin:4px;">
244+<tr>
245+<td style="background:#CCC;"><img src="http://res.nimg.jp/img/_.gif" alt="動画の説明文" class="video_des_tit"></td>
246+<td width="100%" style="background:#F9F9F9;"><p class="font12"> 2009 年作の第 21 作目。 RPGツクールVX で製作したようです。 その他投稿動画。 <a href="http://www.nicovideo.jp/myvideo/336619">myvideo/336619</a></p></td>
247+</tr>
248+</table>
249+
250+
251+<!--↓大百科↓-->
252+
253+<table width="976" border="0" cellpadding="4" cellspacing="0" summary="" style="border:solid 2px #FD9; margin:4px;">
254+<tr>
255+<td style="background:#FD9;"><img src="http://res.nimg.jp/img/_.gif" alt="大百科の記事" class="pedia_des_tit"></td>
256+<td width="100%" style="background:#FFFFF6;"><p class="font12" id="nicopedia_video_des">大百科の記事を読み込んでいます…</p>
257+<script type="text/javascript"><!--
258+
259+
260+function loadVideoArticleSummary() {
261+ if (arguments.callee.loaded) return;
262+ arguments.callee.loaded = true;
263+ Nicopedia.Article
264+ .get("sm8769630", "v")
265+ .loadSummary(function (article) {
266+ if (article.written && article.summary) {
267+ var summary = article.summary.substring(0, 72) + "…";
268+ summary += ' <a href="' + article.getURL() + '" target="_blank">&gt;&gt;続きを読む</a>';
269+ $("nicopedia_video_des").update(summary);
270+ } else {
271+ $("nicopedia_video_des").update('この動画に関する大百科の記事は書かれていません。'
272+ + '<a href="' + article.getURL() + '" target="_blank">記事を書いてみませんか?</a>'
273+
274+ );
275+ }
276+ });
277+}
278+
279+
280+Nico.onReady(loadVideoArticleSummary);
281+--></script>
282+</td>
283+</tr>
284+</table>
285+<!--↑大百科↑-->
286+
287+
288+
289+
290+<!--↓メニュー↓-->
291+<form action="/mymemory_register?top_general" method="post" id="mymemory_add_form" name="mymemory_register">
292+<input type="hidden" name="thread_id" value="1257851281">
293+<input type="hidden" name="date" value="">
294+</form>
295+<p class="font12" style="color:#CCC; margin:4px;"><strong style="color:#333;">この動画を</strong> …
296+<img src="http://res.nimg.jp/img/_.gif" alt="" class="icon_4"><a href="/mymemory_register?top_general" onClick="document.mymemory_register.submit(); return false;">マイメモリーに保存する</a> |
297+<img src="http://res.nimg.jp/img/_.gif" alt="" class="icon_2"><a href="/embed/sm8769630" target="_blank">ブログサイトに貼り付ける</a> |
298+<script type="text/javascript" charset="utf-8" src="http://res.nimg.jp/js/p4live/imthis.js?1.0.1"></script>
299+ <img src="http://res.nimg.jp/img/_.gif" alt="" class="icon_3"><a href="http://clk.atdmt.com/GBL/go/112829625/direct/01/" target="_blank" onclick="Nicovideo.launchP4('sm8769630'); return false;">ニコニコメッセで視聴する</a> |
300+</p>
301+<!--↑メニュー↑-->
302+
303+
304+</div>
305+<!--↑詳細モード↑-->
306+
307+
308+<table width="984" border="0" cellpadding="4" cellspacing="0" summary="">
309+<tr>
310+<td><img src="http://res.nimg.jp/img/watch/mid_tag.png" alt="登録タグ"></td>
311+<td width="100%">
312+<!--↓登録タグ↓-->
313+<div id="video_controls"><div id="video_tags">
314+ <p class="font12">
315+ <nobr><img src="http://res.nimg.jp/img/watch/ctg.png" alt="カテゴリ" style="vertical-align:middle; margin-right:2px;"><a href="tag/%E3%82%B2%E3%83%BC%E3%83%A0" rel="tag" class="nicopedia">ゲーム</a>&nbsp;</nobr>
316+ <nobr><a href="tag/RPG%E3%83%84%E3%82%AF%E3%83%BC%E3%83%AB" rel="tag" class="nicopedia">RPGツクール</a>&nbsp;</nobr>
317+ <nobr><a href="tag/%E9%AB%98%E6%A9%8B%E9%82%A6%E5%AD%90" rel="tag" class="nicopedia">高橋邦子</a>&nbsp;</nobr>
318+ <nobr><a href="tag/%E5%B7%9D%E8%B6%8A%E3%81%A7%E3%81%AF%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8" rel="tag" class="nicopedia">川越ではよくあること</a>&nbsp;</nobr>
319+ <nobr><a href="tag/%E6%B1%BA%E6%88%A6%E3%81%AE%E3%83%90%E3%83%88%E3%83%AB%E3%83%BB%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89" rel="tag" class="nicopedia">決戦のバトル・フィールド</a>&nbsp;</nobr>
320+ <nobr><a href="tag/%E3%81%BE%E3%81%9F%E3%81%8A%E5%89%8D%E3%81%8B" rel="tag" class="nicopedia">またお前か</a>&nbsp;</nobr>
321+ <nobr><a href="tag/%E5%9D%82%E7%94%B0%E5%AE%B6%E3%81%AE%E6%97%A5%E5%B8%B8" rel="tag" class="nicopedia">坂田家の日常</a>&nbsp;</nobr>
322+ <nobr><a href="tag/%EF%BD%B2%EF%BD%B2%EF%BE%8A%EF%BE%85%EF%BD%BC%EF%BE%80%EF%BE%9E%EF%BE%85%EF%BD%B0" rel="tag" class="nicopedia">イイハナシダナー</a>&nbsp;</nobr>
323+ <nobr><a href="tag/%E7%85%99%E5%B9%95%E7%B3%BB%E3%82%B7%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0" rel="tag" class="nicopedia">煙幕系シューティング</a>&nbsp;</nobr>
324+ <nobr><a href="tag/%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%E3%82%AC%E3%83%B3%E6%9C%80%E5%BC%B7%E8%AA%AC" rel="tag" class="nicopedia">ショットガン最強説</a>&nbsp;</nobr>
325+ <nobr><a href="javascript:startTagEdit('http://www.nicovideo.jp/tag_edit/sm8769630');" style="color:#C00;">【編集】</a>&nbsp;</nobr> </p>
326+ </div></div>
327+<script type="text/javascript"><!--
328+Nicopedia.WRITTEN_LINK.template =
329+'<a href="#{link}" target="_blank" title="大百科 #{title} の記事を読む"><img alt="" class="txticon" src="http://res.nimg.jp/img/common/icon/dic_on.gif"></a>';
330+Nicopedia.NONEXIST_LINK.template =
331+'<a href="#{link}" target="_blank" title="大百科 #{title} の記事を書く"><img alt="" class="txticon" src="http://res.nimg.jp/img/common/icon/dic_off.gif"></a>';
332+--></script>
333+<!--↑登録タグ↑-->
334+</td>
335+<td valign="bottom">
336+<div style="position:relative;">
337+ <div id="MSG_deflist" style="display:none;">
338+ <p id="MSG_deflist_loading" style="background-color:#666;">登録中です…</p>
339+ <p id="MSG_deflist_success" style="background-color:#666;"><a href="/my/mylist" style="color:#FFF;">「とりあえずマイリスト」 に登録しました</a></p>
340+ <p id="MSG_deflist_error" style="background-color:#900;"></p>
341+ </div>
342+</div>
343+
344+ <table border="0" cellpadding="0" cellspacing="0" summary="">
345+ <tr>
346+ <td><a href="http://uad.nicovideo.jp/main/set/video.html?vid=sm8769630" target="_blank"><img src="http://res.nimg.jp/img/watch/btn_user_uad.png" alt="ニコニ広告で宣伝"></a></td>
347+ <td><a href="/mylist_add/video/sm8769630" target="_blank" onclick="return !window.open('/mylist_add/video/sm8769630', 'nicomylistadd', 'width=500,height=360');"><img src="http://res.nimg.jp/img/watch/btn_user_mylist.png" alt="マイリスト登録"></a></td>
348+ <td><a href="javascript:void(0);" id="BTN_add_deflist" onclick="addVideoToDeflist(1257851281, '335912-1258115575-b529f96fa866abed5bb2db365c80aea5c0a9de6e'); return false;"><img src="http://res.nimg.jp/img/watch/btn_user_defaultmylist.png" alt="とりあえず一発登録"></a></td>
349+ </tr>
350+ </table>
351+</td>
352+</tr>
353+</table>
354+
355+</div>
356+
357+
358+<!----><script type="text/javascript"><!--
359+
360+var Video = {
361+ v: 'sm8769630',
362+ id: 'sm8769630',
363+ tags: ['\u30b2\u30fc\u30e0','RPG\u30c4\u30af\u30fc\u30eb','\u9ad8\u6a4b\u90a6\u5b50','\u5ddd\u8d8a\u3067\u306f\u3088\u304f\u3042\u308b\u3053\u3068','\u6c7a\u6226\u306e\u30d0\u30c8\u30eb\u30fb\u30d5\u30a3\u30fc\u30eb\u30c9','\u307e\u305f\u304a\u524d\u304b','\u5742\u7530\u5bb6\u306e\u65e5\u5e38','\uff72\uff72\uff8a\uff85\uff7c\uff80\uff9e\uff85\uff70','\u7159\u5e55\u7cfb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0','\u30b7\u30e7\u30c3\u30c8\u30ac\u30f3\u6700\u5f37\u8aac'],
364+ lockedTags: ['\u30b2\u30fc\u30e0','RPG\u30c4\u30af\u30fc\u30eb','\u9ad8\u6a4b\u90a6\u5b50'],
365+ title: '\u59b9\u304c\u4f5c\u3063\u305f\u75db\u3044 RPG\u300c\u3048\u308d\u3048\u308d\u30b9\u30af\u6c34\u30c0\u30f3\u30b8\u30e7\u30f3\u300d',
366+ description: '\u30002009 \u5e74\u4f5c\u306e\u7b2c 21 \u4f5c\u76ee\u3002\u3000RPG\u30c4\u30af\u30fc\u30ebVX \u3067\u88fd\u4f5c\u3057\u305f\u3088\u3046\u3067\u3059\u3002\u3000\u305d\u306e\u4ed6\u6295\u7a3f\u52d5\u753b\u3002\u3000<a href=\"http:\/\/www.nicovideo.jp\/myvideo\/336619\">myvideo\/336619<\/a>',
367+ thumbnail: 'http:\/\/tn-skr3.smilevideo.jp\/smile?i=8769630',
368+ postedAt: '2009/11/10 20:08:03',
369+ length: 1236,
370+ viewCount: 78712,
371+ mylistCount: 2131,
372+ mainCommunityId: null,
373+ communityId: null,
374+ channelId: null,
375+ isDeleted: false,
376+ isMymemory: false,
377+ isMonetized: false,
378+ isR18: false
379+};
380+
381+--></script>
382+
383+<div id="old_flash_player_warning" style="display:none;">
384+<h3 style="color:#F30; text-align:center; padding:4px;">
385+ご利用されている Adobe Flash Player のバージョンではニコニコプレーヤーが正常に動作しない場合がございます。<br>
386+お手数ですが <a href="http://www.adobe.com/go/getflashplayer" style="color:#F30;">最新のバージョンにアップデート</a> してください。
387+</h3>
388+</div>
389+
390+
391+<div id="flvplayer_container" style="height:512px;">
392+<h3 style="color:#F30; text-align:center;">
393+<script type="text/javascript"><!--
394+document.write('最新の <a href="http://www.adobe.com/go/getflashplayer" style="color:#F30;">Adobe Flash Player</a> にアップデートしてください');
395+--></script>
396+<noscript>JavaScriptが無効になっているためプレイヤーを表示できません</noscript>
397+</h3>
398+</div>
399+
400+<script type="text/javascript"><!--
401+ var so = new SWFObject("http://www.nicovideo.jp/swf/player/nicoplayer.swf?ts=1258006446", "flvplayer", "952", "512", 9, "#FFFFFF");
402+ so.addVariable("v", "sm8769630");
403+ so.addVariable("videoId", "sm8769630");
404+ so.addVariable("deleted", "0");
405+ so.addVariable("mylist_counter", "2131");
406+ so.addVariable("movie_type", "mp4");
407+ so.addVariable("thumbImage", "http://tn-skr3.smilevideo.jp/smile?i=8769630");
408+ so.addVariable("userSex", "0");
409+ so.addVariable("userAge", "59");
410+ so.addVariable("us", "0");
411+ so.addVariable("ad", "web_pc_player_marquee");
412+ so.addVariable("communityPostURL", "http://ch.nicovideo.jp/post/sm8769630?player_icon");
413+ so.addVariable("dicArticleURL", "http://dic.nicovideo.jp/v/sm8769630");
414+ so.addVariable("blogEmbedURL", "/embed/sm8769630?player_icon");
415+ so.addVariable("uadAdvertiseURL", "http://uad.nicovideo.jp/main/set/video.html?vid=sm8769630&player_icon");
416+ so.addVariable("useChecklistCache", "1");
417+ so.addVariable("category", "ゲーム");
418+ so.addVariable("wv_id", "sm8769630");
419+ so.addVariable("wv_title", "%E5%A6%B9%E3%81%8C%E4%BD%9C%E3%81%A3%E3%81%9F%E7%97%9B%E3%81%84%20RPG%E3%80%8C%E3%81%88%E3%82%8D%E3%81%88%E3%82%8D%E3%82%B9%E3%82%AF%E6%B0%B4%E3%83%80%E3%83%B3%E3%82%B8%E3%83%A7%E3%83%B3%E3%80%8D");
420+ so.addVariable("wv_code", "5db8b5d7");
421+ so.addVariable("wv_time", "1258029175");
422+ so.addVariable("button_threshold", "0");
423+ so.addVariable("thumbTitle", "%E5%A6%B9%E3%81%8C%E4%BD%9C%E3%81%A3%E3%81%9F%E7%97%9B%E3%81%84%20RPG%E3%80%8C%E3%81%88%E3%82%8D%E3%81%88%E3%82%8D%E3%82%B9%E3%82%AF%E6%B0%B4%E3%83%80%E3%83%B3%E3%82%B8%E3%83%A7%E3%83%B3%E3%80%8D");
424+ so.addVariable("thumbDescription", "%E3%80%802009%20%E5%B9%B4%E4%BD%9C%E3%81%AE%E7%AC%AC%2021%20%E4%BD%9C%E7%9B%AE%E3%80%82%E3%80%80RPG%E3%83%84%E3%82%AF%E3%83%BC%E3%83%ABVX%20%E3%81%A7%E8%A3%BD%E4%BD%9C%E3%81%97%E3%81%9F%E3%82%88%E3%81%86%E3%81%A7...");
425+ so.addVariable("videoTitle", "%E5%A6%B9%E3%81%8C%E4%BD%9C%E3%81%A3%E3%81%9F%E7%97%9B%E3%81%84%20RPG%E3%80%8C%E3%81%88%E3%82%8D%E3%81%88%E3%82%8D%E3%82%B9%E3%82%AF%E6%B0%B4%E3%83%80%E3%83%B3%E3%82%B8%E3%83%A7%E3%83%B3%E3%80%8D");
426+ so.addVariable("weather1", "%E6%99%B4");
427+ so.addVariable("conjunction", "");
428+ so.addVariable("weather2", "");
429+ so.addVariable("highest_temperature", "24.4");
430+ so.addVariable("lowest_temperature", "12.0");
431+ so.addVariable("chance_of_rain", "10");
432+ so.addVariable("player_version_xml", "1258025243");
433+ so.addVariable("player_info_xml", "1258019219");
434+ so.addVariable("marqueeVersion", "1258006125");
435+ so.addVariable("userPrefecture", "1");
436+ so.addVariable("csrfToken", "335912-1258115575-b529f96fa866abed5bb2db365c80aea5c0a9de6e");
437+
438+ so.addParam("allowScriptAccess", "always");
439+ so.addParam("allowFullScreen", "true");
440+ so.write("flvplayer_container");
441+
442+ function onNicoPlayerReady() {
443+ Event.observe("flvplayer_container", "mousewheel", handleOnWheel, false);
444+ Event.observe("flvplayer_container", "DOMMouseScroll", handleOnWheel, false); // Firefox
445+ new SWFMacMouseWheel(so);
446+ }
447+
448+
449+
450+ if (navigator.userAgent.indexOf('PLAYSTATION') == -1) {
451+ var playerVersion = deconcept.SWFObjectUtil.getPlayerVersion();
452+ var requiredVersion = new deconcept.PlayerVersion([10, 0, 0]);
453+ if (!playerVersion.versionIsValid(requiredVersion)) {
454+ $("old_flash_player_warning").show();
455+ }
456+ }
457+
458+--></script>
459+
460+
461+
462+<div id="WATCHFOOTER">
463+
464+<!---->
465+<p class="font12" style="color:#CCC; margin:4px;">
466+
467+<a href="http://help.nicovideo.jp/cat21/post.html" target="_blank">使い方</a> |
468+<a href="http://bbs.nicovideo.jp/delete/comment/" target="_blank">不適切なコメントを通報</a> |
469+ <a href="http://www.smilevideo.jp/view/8769630/335912" target="_blank">この動画を違反通報</a> |
470+
471+ <a href="http://help.nicovideo.jp/faq/post_87.html">プレーヤーが表示されない方</a> |
472+
473+ <!---->
474+ <!---->
475+
476+</p>
477+<!---->
478+
479+
480+<!---->
481+<!---->
482+
483+
484+<!---->
485+
486+
487+
488+
489+
490+
491+
492+
493+
494+
495+
496+
497+
498+
499+
500+
501+
502+
503+
504+
505+
506+<!---->
507+
508+<!---->
509+
510+<!----><div style="padding:4px;">
511+<p><img src="http://res.nimg.jp/img/_.gif" alt="" class="ichiba_frm_top"></p>
512+<table width="976" border="0" cellpadding="0" cellspacing="0"><tr><td class="ichiba_frm_bg">
513+
514+<script type="text/javascript"><!--
515+var user_id = User.id.toString();
516+var video_id = 'sm8769630';
517+--></script>
518+<script type="text/javascript" charset="utf-8" defer="defer" src="http://res.nimg.jp/js/ichiba.js?rev=20090420"></script>
519+
520+<div id="ichiba_placeholder" style="width:944px;">
521+</div>
522+
523+</td></tr></table>
524+<p><a href="http://ichiba.nicovideo.jp/" target="_blank"><img src="http://res.nimg.jp/img/_.gif" alt="" class="ichiba_frm_btm"></a></p>
525+</div>
526+
527+
528+
529+<div class="mb16p4">
530+<!--↓情報↓-->
531+<p class="font10"><strong>2009年11月10日 20:08:03</strong> 投稿</p>
532+<p class="font12"><strong>妹が作った痛い RPG「えろえろスク水ダンジョン」</strong></p>
533+<p class="font10"> 2009 年作の第 21 作目。 RPGツクールVX で製作したようです。 その他投稿動画。  myvideo/336619 </p>
534+<!--↑情報↑-->
535+ </div>
536+
537+
538+<!---->
539+<!--↓視聴↓--><!--↑視聴↑-->
540+
541+
542+<!---->
543+
544+</div>
545+</div>
546+<div id="PAGEFOOTER">
547+<div class="foot_pagetop">
548+<p><a href="JavaScript:ANCHOR('PAGETOP')"><img src="http://res.nimg.jp/img/base/foot/btn_pagetop_7.gif" alt="ページトップ"></a></p>
549+<noscript><p class="font12" style="color:#F30; margin-top:4px;">Javascriptが無効になっていると、サイト内の一部機能がご利用いただけません</p></noscript>
550+</div>
551+
552+<table width="976" border="0" cellpadding="0" cellspacing="0" summary="" style="font-size:12px; color:#9AA; margin:4px 4px 0;">
553+<tr valign="bottom">
554+<td width="100%">
555+<a href="http://www.nicovideo.jp/">トップ</a> …
556+<a target="_blank" href="static/base/phishing.html" style="color:#C00;">フィッシング詐欺にご注意!</a> |
557+<a target="_blank" href="static/base/rule.html">利用規約</a> |
558+<a target="_blank" href="static/base/declaration.html">宣言</a> |
559+<a target="_blank" href="static/base/award.html">受賞</a> |
560+<a target="_blank" href="static/base/rss.html">RSS</a> |
561+<a target="_blank" href="http://bbs.nicovideo.jp/">掲示板</a> |
562+<a target="_blank" href="http://help.nicovideo.jp/">ヘルプ</a> |
563+<a target="_blank" href="http://www.smilevideo.jp/static/www/handbook/">動画投稿ハンドブック</a>
564+</td>
565+<td style="padding-left:4px;">
566+<p><img src="http://res.nimg.jp/img/base/foot/www.png" alt="WWW" usemap="#WORLDWIDE"></p>
567+<map name="WORLDWIDE">
568+<area shape="rect" coords="0,0,18,15" href="http://www.nicovideo.jp/" alt="Japan">
569+<area shape="rect" coords="20,0,38,15" href="http://tw.nicovideo.jp/" alt="Taiwan">
570+<area shape="rect" coords="40,0,58,15" href="http://es.nicovideo.jp/" alt="Spain">
571+<area shape="rect" coords="60,0,78,15" href="http://de.nicovideo.jp/" alt="German">
572+</map>
573+</td>
574+</tr>
575+</table>
576+
577+
578+<table width="984" border="0" cellpadding="0" cellspacing="4" style="margin:0 0 8px;">
579+<tr><td class="foot_bg" height="28">
580+<div style="float:left;">
581+動画:<strong>3,269,168</strong>/再生:<strong>13,396,250,472</strong>/コメント:<strong>2,194,632,763</strong>
582+</div>
583+<div style="float:right; padding-left:8px;">
584+<a style="color:#FFF;" href="https://secure.nicovideo.jp/secure/ads_form">広告出稿に関するお問い合わせ</a>
585+</div>
586+</td></tr>
587+<tr><td class="font12" style="color:#666;">
588+<strong style="color:#222;">推奨環境…</strong>
589+<nobr style="color:#444;">OS:</nobr>Windows XP, Vista, 7 &amp; Mac OS X Leopard, Snow Leopard /
590+<nobr style="color:#444;">ブラウザ:</nobr>Internet Explorer, Firefox, Safari, 各最新版 /
591+<nobr style="color:#444;">プラグイン:</nobr>Adobe Flash Player 10以降 /
592+<nobr style="color:#444;">その他:</nobr>クッキー( cookie )制限をしている場合は nicovideo.jp を許可
593+</td></tr>
594+<tr><td><p class="dot_1"><img src="http://res.nimg.jp/img/_.gif" alt=""></p></td></tr>
595+<tr><td style="text-align:center;"><a href="http://niwango.jp/" target="_blank"><img src="http://res.nimg.jp/img/base/foot/incorporated.gif" alt="&copy; niwango, Inc."></a></td>
596+</tr>
597+</table>
598+
599+</div>
600+</div>
601+
602+</body>
603+</html>
\ No newline at end of file
--- /dev/null
+++ b/testdata/user_336619.html
@@ -0,0 +1,575 @@
1+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2+"http://www.w3.org/TR/html4/loose.dtd">
3+<html>
4+<head>
5+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6+<meta http-equiv="Content-Script-Type" content="text/javascript">
7+<meta http-equiv="Content-Style-Type" content="text/css">
8+<meta name="copyright" content="&copy; niwango, Inc.">
9+
10+<!---->
11+<meta name="keywords" content="ニコニコ動画,ニコニコ市場,動画,コメント">
12+<meta name="description" content="ニコニコ動画は、音楽・お笑い・アニメ・ゲーム・グラビアなどの動画再生中にリアルタイムでコメントを付けられる「動画コミュニティサイト」です">
13+
14+<!---->
15+<link rel="alternate" charset="utf-8" type="application/rss+xml" title="ZAKO2012さんの投稿動画" href="/myvideo/336619?rss=2.0">
16+
17+<!---->
18+<title>ZAKO2012さんのユーザーページ‐ニコニコ動画(9)</title>
19+
20+<base href="http://www.nicovideo.jp/">
21+
22+<!---->
23+<link rel="shortcut icon" href="http://res.nimg.jp/img/favicon.ico">
24+<link rel="stylesheet" type="text/css" charset="utf-8" href="http://res.nimg.jp/css/common.css?091106">
25+
26+<!---->
27+<script type="text/javascript" src="http://res.nimg.jp/js/lib/prototype.js?1.5.1.1_2"></script>
28+<script type="text/javascript" src="http://res.nimg.jp/js/common.js?090905"></script>
29+<script type="text/javascript" src="http://res.nimg.jp/js/swfobject.js?4"></script>
30+<script type="text/javascript" src="http://res.nimg.jp/js/nicolib.js?091110"></script>
31+<script type="text/javascript" src="http://res.nimg.jp/js/ads.js?091030"></script>
32+<script type="text/javascript" src="http://res.nimg.jp/js/__utm.js?080117"></script>
33+
34+
35+<script type="text/javascript"><!--
36+
37+var User = { id: 335912, isPremium: false, isOver18: true, isMan: true };
38+var q = "";
39+var country = "jp";
40+
41+
42+
43+
44+
45+--></script>
46+</head>
47+
48+<body id="PAGETOP" class="mode_2">
49+<div id="PAGEHEADER">
50+<!---->
51+<div class="bg_headmenu" onmouseout="hideOBJ('headmenu_g1'); hideOBJ('headmenu_g2'); return false;">
52+<div class="headmenu_width">
53+
54+<table height="28" border="0" cellpadding="4" cellspacing="0" summary="" class="headmenu" style="float:left;" >
55+<tr>
56+<td><a href="http://www.nicovideo.jp/">ニコニコ動画</a> |
57+<a href="http://live.nicovideo.jp/">生放送</a> |
58+<a href="http://ch.nicovideo.jp/">チャンネル</a>
59+…</td>
60+<td>
61+<div id="headmenu_g1" style="position:relative; display:none;">
62+ <div class="headmenu_group" onmouseover="showOBJ('headmenu_g1'); return false;" onmouseout="hideOBJ('headmenu_g1'); return false;">
63+ <table border="0" cellpadding="0" cellspacing="4" class="font12">
64+ <tr><td nowrap>
65+ <a href="http://dic.nicovideo.jp/">大百科</a> | <a href="http://ichiba.nicovideo.jp/">市場</a> | <a href="http://www.niconicommons.jp/">コモンズ</a><br>
66+ <a href="http://ch.nicovideo.jp/com_top">コミュ二ティ</a> | <a href="http://uad.nicovideo.jp/">ニコニ広告</a>
67+ <div class="line"><a href="http://jk.nicovideo.jp/">ニコニコ実況( 試験中 )</a></div>
68+ </td></tr>
69+ </table>
70+ </div>
71+</div>
72+<a onmouseover="showOBJ('headmenu_g1');" href="#">その他▼</a>
73+</td>
74+</tr>
75+</table>
76+
77+<table height="28" border="0" cellpadding="4" cellspacing="0" summary="" class="headmenu" style="float:right;">
78+<tr>
79+<td>
80+<div id="headmenu_g2" style="position:relative; display:none;">
81+ <div class="headmenu_group" onmouseover="showOBJ('headmenu_g2'); return false;" onmouseout="hideOBJ('headmenu_g2'); return false;">
82+ <table border="0" cellpadding="0" cellspacing="4" class="font12">
83+ <tr><td nowrap>
84+ <a href="my/mylist">マイリスト</a><br>
85+ <a href="my/watchlist">ウオッチリスト</a><br>
86+ <a href="my/video">投稿動画</a>
87+ <div class="line"><a href="history">視聴履歴</a></div>
88+ <div class="line"><a href="https://secure.nicovideo.jp/secure/logout">ログアウト</a></div>
89+ </td></tr>
90+ </table>
91+ </div>
92+</div>
93+<a onmouseover="showOBJ('headmenu_g2');" href="#">一般会員
94+yamamoto five さん▼</a> - <a href="/?p=premium_top&sec=bar" style="color:#3CC;">プレミアム会員登録</a></td>
95+<td>…
96+<a href="my/top">マイページ</a> |
97+<a href="http://www.smilevideo.jp/" target="_blank">動画を投稿</a> |
98+<a href="/ranking" id="menu-ranking">ランキング</a> |
99+<a href="migiue" title="これがそれです。">右上</a>
100+</td>
101+<td id="menu_switch">
102+<a href="#" title="追従(クリックで固定)" id="menu_switch_fixed" onclick="$(document.body).removeClassName('mode_2').addClassName('mode_1'); Cookie.set('nofix', 1, 1000*60*60*24*365, '.nicovideo.jp', '/'); return false;"><img src="http://res.nimg.jp/img/base/headmenu/mode_2.png" alt="追従"></a>
103+<a href="#" title="固定(クリックで追従)" id="menu_switch_scroll" onclick="$(document.body).removeClassName('mode_1').addClassName('mode_2'); Cookie.remove('nofix', '.nicovideo.jp', '/'); return false;"><img src="http://res.nimg.jp/img/base/headmenu/mode_1.png" alt="固定"></a>
104+</td>
105+</tr>
106+</table>
107+
108+</div>
109+</div>
110+<!---->
111+<div class="body_984">
112+<table width="984" border="0" cellspacing="0" cellpadding="4" summary="" style="clear:both;">
113+<tr>
114+
115+<td>
116+<!----><a href="related_tag/%E6%B0%B4%E8%89%B2"><img alt="水色" src="http://res.nimg.jp/img/base/head/icon/nico/775.gif"></a><!---->
117+</td>
118+<td><a href="/" target="_top"><img src="http://res.nimg.jp/img/base/head/logo/nine.png" alt="ニコニコ動画"></a></td>
119+<td width="100%">
120+<form id="head_search_form" action="/search" method="get" onsubmit="submitSearch(this.action, false); return false;"><input type="hidden" name="ref"><a href="#" class="search_sw_1" onclick="submitSearch('/search', this); return false;" ><img src="http://res.nimg.jp/img/_.gif" style="width:57px; height:22px;" alt="キーワード"></a><a href="#" class="search_sw_0" onclick="submitSearch('/tag', this); return false;" ><img src="http://res.nimg.jp/img/_.gif" style="width:31px; height:22px; background-position:-57px 0; margin:0 2px;" alt="タグ"></a><a href="#" class="search_sw_0" onclick="submitSearch('/related_tag', this); return false;"><img src="http://res.nimg.jp/img/_.gif" style="width:97px; height:22px; background-position:-88px 0;" alt="キーワードを含むタグ"></a><table border="0" cellpadding="0" cellspacing="0" summary=""><tr><td><input type="text" name="s" id="bar_search" value="" class="head_search"></td><td style="padding-left:4px;"><input name="submit" type="image" src="http://res.nimg.jp/img/base/head/submit_search.png" alt="検索"></td></tr></table></form>
121+<script type="text/javascript"><!--
122+function submitSearch(p, e) {
123+ var f = $('head_search_form'), s = String.interpret(f.s.value).strip().replace(/%20/g, '+');
124+ if (s != '') location.href = p + "/" + encodeURIComponent(s);
125+ else if (e) { f.down('a.search_sw_1').className = 'search_sw_0'; e.className = 'search_sw_1'; f.action = p; f.s.focus(); }
126+}
127+//--></script>
128+</td>
129+<td><div class="ads_468"><!--↓表示してもよい↓-->
130+
131+<div id="web_pc_top"></div>
132+<script type="text/javascript"><!--
133+
134+getAds('web_pc_top');
135+
136+
137+--></script>
138+
139+<!--↑表示してもよい↑-->
140+
141+</div></td>
142+</tr>
143+</table>
144+
145+<div id="cookie_container"></div>
146+<script type="text/javascript"><!--
147+flashCookie.write("cookie_container");
148+--></script>
149+</div>
150+</div>
151+
152+<div class="body_984">
153+<div id="PAGEBODY">
154+<style type="text/css"><!--
155+@import url("http://res.nimg.jp/css/user.css?090908");
156+@import url("http://res.nimg.jp/css/my/mylist.css?090908");
157+--></style>
158+
159+<script type="text/javascript" src="http://res.nimg.jp/js/lib/jquery/jquery-1.3.min.js"></script>
160+<script type="text/javascript"><!--
161+jQuery.noConflict();
162+--></script>
163+<script type="text/javascript" src="http://res.nimg.jp/js/my3.js"></script>
164+<script type="text/javascript"><!--
165+Globals.hash = '335912-1258033930-4b06ee4de653b14eccbeedce50d6877f3b3f65ee';
166+
167+--></script>
168+
169+<!---->
170+<div id="SYS_SPINNER_WATCHLIST" style="display:none;">
171+<p class="font12">読み込み中です…</p>
172+</div>
173+<!---->
174+
175+
176+<!--↓プロフィール+メニュー↓-->
177+<div style="padding:4px;">
178+<p><img src="http://res.nimg.jp/img/common/profile/menu/frm_top.png" alt=""></p>
179+<div class="prof_bg">
180+<table width="952" border="0" cellpadding="4" cellspacing="0" summary="">
181+<tr valign="top">
182+<td><a href="user/336619"><img src="http://res.nimg.jp/img/user/thumb/blank.jpg" alt="ZAKO2012" class="prof_image"></a></td>
183+<td width="100%">
184+ <!--↓ウオッチ情報↓-->
185+ <div id="SYS_WATCHLIST_BUTTON_RELOAD" class="watchlist_info">
186+ <p class="font12" style="margin:0 0 4px;">ウオッチリストに登録しているユーザーは <strong style="color:#C00;">310人</strong> です</p> <p><a href="#" onClick="add_watchitem_on_header('336619'); return false;"><img src="http://res.nimg.jp/img/_.gif" alt="このユーザーをウオッチリストに登録する" class="add_watchlist"></a></p>
187+ </div>
188+ <!--↑ウオッチ情報↑-->
189+
190+<p class="font12">
191+ID:<strong>336619(γ)</strong> <span style="color:#999;">-</span> プレミアム会員<br>
192+<strong style="font-size:18px; line-height:1;">ZAKO2012</strong> さん<br>
193+<span style="color:#999;">性別:<span style="color:#C00;">非公開</span>/生年月日:<span style="color:#C00;">非公開</span>/お住まいの地域:<span style="color:#C00;">非公開</span></span>
194+</p>
195+
196+<!--↓自己紹介↓-->
197+<div class="prof_txt">
198+
199+<p class="font12" id="prof_txt_1" style="display:block;">
200+
201+</p>
202+
203+
204+</div>
205+<!--↑自己紹介↑-->
206+</td></tr>
207+</table>
208+</div>
209+
210+ <div class="prof_menu">
211+ <table border="0" cellpadding="0" cellspacing="0">
212+ <tr>
213+ <td><a href="user/336619/" ><img src="http://res.nimg.jp/img/_.gif" class="on" alt="トップ"></a></td>
214+ <td><a href="user/336619/watchlist"><img src="http://res.nimg.jp/img/_.gif" class="off" alt="ウオッチリスト" style="background-position:0 -120px;"></a></td>
215+ <td><a href="user/336619/community"><img src="http://res.nimg.jp/img/_.gif" class="off" alt="コミュニティ" style="background-position:0 -160px;"></a></td>
216+ <td><a href="user/336619/channel" ><img src="http://res.nimg.jp/img/_.gif" class="off" alt="チャンネル" style="background-position:0 -200px;"></a></td>
217+ </tr>
218+ </table>
219+ </div>
220+
221+</div>
222+<!--↑プロフィール+メニュー↑-->
223+
224+
225+
226+<!--↓コンテンツ表示↓-->
227+
228+
229+
230+<div class="content_192">
231+<!--↓左列↓-->
232+
233+
234+<!--↓ニコレポカレンダー↓-->
235+<div class="mb8p4">
236+ <p class="font12" style="background:#677; color:#FFF; padding:4px; text-align:center;"><strong>ニコレポカレンダー</strong></p>
237+ <div style="border:solid 2px #677; padding:2px;" id="1257001200">
238+ <table width="168" border="0" cellpadding="0" cellspacing="4" style="font-size:12px; color:#CCC; margin:0 auto;">
239+ <tr align="center">
240+ <td width="50%">
241+ <a href="javascript:onclick=showOBJ(1254322800);hideOBJ(1257001200);">&lt;前</a>
242+ </td>
243+ <td nowrap><strong style="color:#333;">2009年11月</strong></td>
244+ <td width="50%">
245+ 次&gt;
246+ </td>
247+ </tr>
248+ </table>
249+ <table border="0" cellpadding="0" cellspacing="1" summary="" class="calendar">
250+ <tr>
251+ <th width="24">日</th>
252+ <th width="24">月</th>
253+ <th width="24">火</th>
254+ <th width="24">水</th>
255+ <th width="24">木</th>
256+ <th width="24">金</th>
257+ <th width="24">土</th>
258+ </tr>
259+ <tr>
260+ <td><a href="user/336619/top/20091101">1</a></td>
261+ <td class="nodata">2</td>
262+ <td class="nodata">3</td>
263+ <td class="nodata">4</td>
264+ <td class="nodata">5</td>
265+ <td class="nodata">6</td>
266+ <td><a href="user/336619/top/20091107">7</a></td>
267+ </tr><tr> <td class="nodata">8</td>
268+ <td class="nodata">9</td>
269+ <td><a href="user/336619/top/20091110">10</a></td>
270+ <td><a href="user/336619/top/20091111">11</a></td>
271+ <td><a href="user/336619">12</a></td>
272+ <td class="nodata">13</td>
273+ <td class="nodata">14</td>
274+ </tr><tr> <td class="nodata">15</td>
275+ <td class="nodata">16</td>
276+ <td class="nodata">17</td>
277+ <td class="nodata">18</td>
278+ <td class="nodata">19</td>
279+ <td class="nodata">20</td>
280+ <td class="nodata">21</td>
281+ </tr><tr> <td class="nodata">22</td>
282+ <td class="nodata">23</td>
283+ <td class="nodata">24</td>
284+ <td class="nodata">25</td>
285+ <td class="nodata">26</td>
286+ <td class="nodata">27</td>
287+ <td class="nodata">28</td>
288+ </tr><tr> <td class="nodata">29</td>
289+ <td class="nodata">30</td>
290+ <td class="blank">&nbsp;</td>
291+ <td class="blank">&nbsp;</td>
292+ <td class="blank">&nbsp;</td>
293+ <td class="blank">&nbsp;</td>
294+ <td class="blank">&nbsp;</td>
295+ </tr><tr> </tr>
296+ </table>
297+ </div>
298+ <script language="javascript">hideOBJ(1257001200);</script>
299+ <div style="border:solid 2px #677; padding:2px;" id="1254322800">
300+ <table width="168" border="0" cellpadding="0" cellspacing="4" style="font-size:12px; color:#CCC; margin:0 auto;">
301+ <tr align="center">
302+ <td width="50%">
303+ &lt;前
304+ </td>
305+ <td nowrap><strong style="color:#333;">2009年10月</strong></td>
306+ <td width="50%">
307+ <a href="javascript:onclick=showOBJ(1257001200);hideOBJ(1254322800);">次&gt;</a>
308+ </td>
309+ </tr>
310+ </table>
311+ <table border="0" cellpadding="0" cellspacing="1" summary="" class="calendar">
312+ <tr>
313+ <th width="24">日</th>
314+ <th width="24">月</th>
315+ <th width="24">火</th>
316+ <th width="24">水</th>
317+ <th width="24">木</th>
318+ <th width="24">金</th>
319+ <th width="24">土</th>
320+ </tr>
321+ <tr>
322+ <td class="blank">&nbsp;</td>
323+ <td class="blank">&nbsp;</td>
324+ <td class="blank">&nbsp;</td>
325+ <td class="blank">&nbsp;</td>
326+ <td class="nodata">1</td>
327+ <td class="nodata">2</td>
328+ <td class="nodata">3</td>
329+ </tr><tr> <td class="nodata">4</td>
330+ <td class="nodata">5</td>
331+ <td class="nodata">6</td>
332+ <td class="nodata">7</td>
333+ <td class="nodata">8</td>
334+ <td class="nodata">9</td>
335+ <td class="nodata">10</td>
336+ </tr><tr> <td class="nodata">11</td>
337+ <td class="nodata">12</td>
338+ <td class="nodata">13</td>
339+ <td class="nodata">14</td>
340+ <td class="nodata">15</td>
341+ <td class="nodata">16</td>
342+ <td><a href="user/336619/top/20091017">17</a></td>
343+ </tr><tr> <td class="nodata">18</td>
344+ <td class="nodata">19</td>
345+ <td class="nodata">20</td>
346+ <td class="nodata">21</td>
347+ <td><a href="user/336619/top/20091022">22</a></td>
348+ <td><a href="user/336619/top/20091023">23</a></td>
349+ <td><a href="user/336619/top/20091024">24</a></td>
350+ </tr><tr> <td class="nodata">25</td>
351+ <td class="nodata">26</td>
352+ <td><a href="user/336619/top/20091027">27</a></td>
353+ <td><a href="user/336619/top/20091028">28</a></td>
354+ <td><a href="user/336619/top/20091029">29</a></td>
355+ <td class="nodata">30</td>
356+ <td><a href="user/336619/top/20091031">31</a></td>
357+ </tr><tr> <td class="blank">&nbsp;</td>
358+ <td class="blank">&nbsp;</td>
359+ <td class="blank">&nbsp;</td>
360+ <td class="blank">&nbsp;</td>
361+ <td class="blank">&nbsp;</td>
362+ <td class="blank">&nbsp;</td>
363+ <td class="blank">&nbsp;</td>
364+ </tr><tr> </tr>
365+ </table>
366+ </div>
367+ <script language="javascript">hideOBJ(1254322800);</script>
368+</div>
369+<script language="javascript">showOBJ(1257001200);</script>
370+<!--↑ニコレポカレンダー↑-->
371+
372+
373+
374+
375+<!--↓コミュニティ↓-->
376+<div style="padding:4px;">
377+<p><img src="http://res.nimg.jp/img/_.gif" alt="" class="frm_192w_cts"></p>
378+ <div class="bg_w_cts">
379+ <div style="padding:4px; text-align:center;">
380+ <p class="cts_mid">コミュニティ</p>
381+ </div>
382+ <p class="font12" style="text-align:center; padding:4px;">非公開です</p>
383+
384+ </div>
385+<p><img src="http://res.nimg.jp/img/_.gif" alt="" class="frm_192w_cts" style="background-position:0 -8px;"></p>
386+</div>
387+<!--↑コミュニティ↑-->
388+
389+
390+<!--↓チャンネル↓-->
391+<div class="mb16p4">
392+<p><img src="http://res.nimg.jp/img/_.gif" alt="" class="frm_192w_cts"></p>
393+ <div class="bg_w_cts">
394+ <div style="padding:4px; text-align:center;">
395+ <p class="cts_mid">チャンネル</p>
396+ </div>
397+ <p class="font12" style="text-align:center; padding:4px;">非公開です</p>
398+
399+ </div>
400+<p><img src="http://res.nimg.jp/img/_.gif" alt="" class="frm_192w_cts" style="background-position:0 -8px;"></p>
401+</div>
402+<!--↑チャンネル↑-->
403+
404+
405+<!--↑左列↑-->
406+</div>
407+<div class="content_480">
408+<!--↓中列↓-->
409+
410+
411+<!--↓ニコレポ↓-->
412+<div class="mb8p4">
413+<h2>ZAKO2012さんのニコレポ</h2>
414+</div>
415+
416+<div class="mb16p4">
417+<p class="font12">ZAKO2012さんはニコレポを公開していません。</p>
418+</div>
419+<!--↑ニコレポ↑-->
420+
421+
422+<!--↑中列↑-->
423+</div>
424+<div class="content_312">
425+<!--↓右列↓-->
426+
427+
428+
429+
430+
431+<!--↓公開マイリスト↓-->
432+<div class="mb8p4">
433+<p><img src="http://res.nimg.jp/img/_.gif" alt="" class="frm_320w_cts"></p>
434+ <div class="bg_w_cts">
435+ <div style="padding:4px; text-align:center;">
436+ <p class="cts_mid">公開マイリスト</p>
437+ </div>
438+ <p class="font12" style="text-align:center; padding:4px;">非公開です</p>
439+
440+ </div>
441+<p><img src="http://res.nimg.jp/img/_.gif" alt="" class="frm_320w_cts" style="background-position:0 -8px;"></p>
442+</div>
443+<!--↑公開マイリスト↑-->
444+
445+
446+<!---->
447+
448+
449+<table width="100%" border="0" cellpadding="0" cellspacing="4" summary="" style="margin:0 0 8px;">
450+<tr><td colspan="2" style="background:url('http://res.nimg.jp/img/ads/line_uneune.gif') repeat-x;"><img alt="" src="http://res.nimg.jp/img/_.gif" width="4" height="4"></td></tr>
451+
452+<tr id="web_pc_megatext"></tr>
453+<tr><td colspan="2" style="background:url('http://res.nimg.jp/img/ads/line_uneune.gif') repeat-x;"><img alt="" src="http://res.nimg.jp/img/_.gif" width="4" height="4"></td></tr>
454+
455+</table>
456+<textarea style="display:none;" id="web_pc_megatext_tpl">
457+<td><a href="#url#" target="_blank"><img src="#image#" class="web_pc_megatext"></a></td>
458+<td width="100%">
459+<p style="margin:0 0 2px;"><img src="http://res.nimg.jp/img/ads/pr_flag.gif" alt="PR"></p>
460+<p class="font12"><a href="#url#" target="_blank">#text#</a></p>
461+</td>
462+</textarea>
463+
464+<script type="text/javascript"><!--
465+
466+getAds("web_pc_megatext", {
467+ template: function (data) {
468+ data.text = data.text.replace(/\r?\n/g, "<br>");
469+ var tpl = new Template($F("web_pc_megatext_tpl"), /(^|.|\r|\n)(#(\w+)#)/);
470+ return tpl.evaluate(data);
471+ }
472+});
473+
474+--></script>
475+
476+
477+<!--↓投稿動画↓-->
478+<div class="mb16p4">
479+<p><img src="http://res.nimg.jp/img/_.gif" alt="" class="frm_320w_cts"></p>
480+ <div class="bg_w_cts">
481+ <div style="padding:4px; text-align:center;">
482+ <p class="cts_mid">投稿動画</p>
483+ </div>
484+ <p class="font12" style="text-align:center; padding:4px;">非公開です</p>
485+
486+ </div>
487+<p><img src="http://res.nimg.jp/img/_.gif" alt="" class="frm_320w_cts" style="background-position:0 -8px;"></p>
488+</div>
489+<!--↑投稿動画↑-->
490+
491+
492+<!--↑右列↑-->
493+</div>
494+
495+
496+<!--↓貼付↓-->
497+<table border="0" cellpadding="0" cellspacing="4" summary="paste" class="font12" style="margin:0 auto 16px; clear:both;">
498+<tr>
499+<td><strong>【ブログ貼付】</strong></td>
500+<td>&lt;iframe&gt;タグ:</td>
501+<td><form name="form_iframe"><input readonly="true" type="text" class="paste" name="input_iframe" onclick="javascript:document.form_iframe.input_iframe.focus(); document.form_iframe.input_iframe.select();" value='&lt;iframe width=&quot;320&quot; height=&quot;160&quot; src=&quot;http://ext.nicovideo.jp/thumb_user/336619&quot; scrolling=&quot;no&quot; style=&quot;border:solid 1px #CCC;&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;'></form>
502+</td>
503+<td>&lt;a&gt;タグ:</td>
504+<td><form name="form_link"><input readonly="true" type="text" class="paste" name="input_link" onclick="javascript:document.form_link.input_link.focus(); document.form_link.input_link.select();" value='&lt;a target=&quot;_blank&quot; href=&quot;http://www.nicovideo.jp/user/336619&quot;&gt;ZAKO2012さんのプロフィール&lt;/a&gt;'></form>
505+</td>
506+</tr>
507+</table>
508+<!--↑貼付↑-->
509+
510+
511+<div style="padding:4px;"><p class="dot_2"><img src="http://res.nimg.jp/img/_.gif" alt=""></p></div>
512+<div class="mb16p4" style="text-align:center;"><p class="font12"><a href="http://bbs.nicovideo.jp/delete/comment/" target="_blank">このユーザーを違反通報</a></div>
513+<!--↑コンテンツ表示↑-->
514+
515+
516+<!---->
517+</div>
518+<div id="PAGEFOOTER">
519+<div class="foot_pagetop">
520+<p><a href="JavaScript:ANCHOR('PAGETOP')"><img src="http://res.nimg.jp/img/base/foot/btn_pagetop_7.gif" alt="ページトップ"></a></p>
521+<noscript><p class="font12" style="color:#F30; margin-top:4px;">Javascriptが無効になっていると、サイト内の一部機能がご利用いただけません</p></noscript>
522+</div>
523+
524+<table width="976" border="0" cellpadding="0" cellspacing="0" summary="" style="font-size:12px; color:#9AA; margin:4px 4px 0;">
525+<tr valign="bottom">
526+<td width="100%">
527+<a href="http://www.nicovideo.jp/">トップ</a> …
528+<a target="_blank" href="static/base/phishing.html" style="color:#C00;">フィッシング詐欺にご注意!</a> |
529+<a target="_blank" href="static/base/rule.html">利用規約</a> |
530+<a target="_blank" href="static/base/declaration.html">宣言</a> |
531+<a target="_blank" href="static/base/award.html">受賞</a> |
532+<a target="_blank" href="static/base/rss.html">RSS</a> |
533+<a target="_blank" href="http://bbs.nicovideo.jp/">掲示板</a> |
534+<a target="_blank" href="http://help.nicovideo.jp/">ヘルプ</a> |
535+<a target="_blank" href="http://www.smilevideo.jp/static/www/handbook/">動画投稿ハンドブック</a>
536+</td>
537+<td style="padding-left:4px;">
538+<p><img src="http://res.nimg.jp/img/base/foot/www.png" alt="WWW" usemap="#WORLDWIDE"></p>
539+<map name="WORLDWIDE">
540+<area shape="rect" coords="0,0,18,15" href="http://www.nicovideo.jp/" alt="Japan">
541+<area shape="rect" coords="20,0,38,15" href="http://tw.nicovideo.jp/" alt="Taiwan">
542+<area shape="rect" coords="40,0,58,15" href="http://es.nicovideo.jp/" alt="Spain">
543+<area shape="rect" coords="60,0,78,15" href="http://de.nicovideo.jp/" alt="German">
544+</map>
545+</td>
546+</tr>
547+</table>
548+
549+
550+<table width="984" border="0" cellpadding="0" cellspacing="4" style="margin:0 0 8px;">
551+<tr><td class="foot_bg" height="28">
552+<div style="float:left;">
553+動画:<strong>3,269,168</strong>/再生:<strong>13,396,250,472</strong>/コメント:<strong>2,194,632,763</strong>
554+</div>
555+<div style="float:right; padding-left:8px;">
556+<a style="color:#FFF;" href="https://secure.nicovideo.jp/secure/ads_form">広告出稿に関するお問い合わせ</a>
557+</div>
558+</td></tr>
559+<tr><td class="font12" style="color:#666;">
560+<strong style="color:#222;">推奨環境…</strong>
561+<nobr style="color:#444;">OS:</nobr>Windows XP, Vista, 7 &amp; Mac OS X Leopard, Snow Leopard /
562+<nobr style="color:#444;">ブラウザ:</nobr>Internet Explorer, Firefox, Safari, 各最新版 /
563+<nobr style="color:#444;">プラグイン:</nobr>Adobe Flash Player 10以降 /
564+<nobr style="color:#444;">その他:</nobr>クッキー( cookie )制限をしている場合は nicovideo.jp を許可
565+</td></tr>
566+<tr><td><p class="dot_1"><img src="http://res.nimg.jp/img/_.gif" alt=""></p></td></tr>
567+<tr><td style="text-align:center;"><a href="http://niwango.jp/" target="_blank"><img src="http://res.nimg.jp/img/base/foot/incorporated.gif" alt="&copy; niwango, Inc."></a></td>
568+</tr>
569+</table>
570+
571+</div>
572+</div>
573+
574+</body>
575+</html>
\ No newline at end of file
Show on old repository browser