2ちゃんねる忍法帖のレベル上げ
2ちゃんねるでは忍法帖というシステムが導入されています。 レベルによって連投制限・スレ立て制限などがされています。
詳しくは
忍法帖巻物 - いきいき Wiki
http://info.2ch.net/wiki/index.php?%C7%A6%CB%A1%C4%A1%B4%AC%CA%AA
今回はレベル上げスクリプトを作ってみました。とはいってもネット上で拾ったものを少々改変しただけです(この方のスクリプトです→ http://2chbeginner.blog65.fc2.com/blog-entry-19.html )。 パクリになるといけないので全てのソースは載せないことにします。
実行してみたらエラーが出たので要らない部分を削るなど簡略化していったら動くレベルになりました。 今回は「●を扱うモジュール」と「書き込みを扱うモジュール」だけを使用しました。
変更したのは「バグ取り」、 「クッキーに適当な名前を付けて、 autosave=>1」 にするくらいです。 Mopechan.pm,MopeSample.plだけ書き換え、それだけを使用しました。
MopeSample.plの変更部分はここです。
my $times = time(); my $cookie_file="cookies" . $times . ".txt"; $mopechan->setCookieName($cookie_file); $mopechan->write; $mopechan->write; print $mopechan->getResponse, "\n\n"; sleep(121); my $level=0; while($level < 30){ $mopechan->write; print $mopechan->getResponse, "\n\n"; print $mopechan->getCookie, "\n\n"; sleep(910); $level++; }
ちなみにこれは「お試し●」でのレベル上げです。「●」の場合は910の所を185くらいに変えてればいいんじゃないでしょうか。 「お試し●」の場合、7,8時間ほどでレベル30のHAPの完成です。
2ちゃんねる女優板のどんなスレッドが削除されているか調べた
女優板で最近スレッド削除されたものをまとめます。 削除されたスレッドにアクセスした場合、 タイトルが「2ちゃんねる error 3001」で 「datが存在しません。削除されたかURL間違ってますよ。」 と表示されているページに飛ばされるようです。
スレタイを載せるには問題があるスレッドばかりなので、多くを伏字にしています。 「削除ガイドライン5」をGL5、その板の「ローカルルール」をLRと略記することにします。
関連タグ : 2ch,
perlでウェブページのスクリーンショット保存アップロードし一覧にしてhtml出力
perlを使って、ウェブサイトのスクリーンショットを取りそれをアップロードして一覧表示するHTMLを出力します。ブラウザで見るとこんな感じの↓
- Google
http://www.google.co.jp/
- Twitter
http://twitter.com/
- Yahoo! JAPAN
http://yahoo.co.jp
スクリーンショット保存はコマンドライン上からウェブサイトのスクリーンショットが保存できるウィンドウズ向けソフト「SiteShoter」を使いました。ずるですね。たぶん、UNIXもコマンドライン上でそんなことができるソフトきっとあると思います・・・。 以下が雑なソースコードです。動きゃいいんです。
# このプログラムを動かすには SiteShoter.exe を
# サーチパスに通している必要があります。
#!/usr/bin/perl.exe
use utf8;
binmode STDOUT => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
use open IO => ":encoding(cp932)";
use Encode;
use warnings;
use URI::Escape;
use WWW::Mechanize;
$id='***********'; # your id or email address
$password="********"; # password
my $mech = new WWW::Mechanize( autocheck => 1 );
$mech->agent_alias('Windows IE 6');
print "paste URLs:\n ";
@target_url = <>;
@target_url = grep(!/^\s*\n/,@target_url);
print "start[enter]";
<>;
for($j=0; $j <= $#target_url; $j++){
chomp($target_url[$j]);
$title[$j]=gettitle($target_url[$j]);
print "get title\n";
## save screenshot of website
$filename[$j]=scr($target_url[$j], "png");
print "get scr\n";
}
print "edit image. press enter.\n";
<>;
# login fc2.com
&login_fc2($id, $password);
# get upload page
$mech->get('/control.php?mode=control&process=upload');
# upload screenshot
$total=scalar(@filename);
$f_num=0;
while($f_num < $total){
$form=$mech->form_name('upload');
$width_input = $form->find_input('width');
$width_input->value('300');
$height_input = $form->find_input('height');
$height_input->value('500');
$thumb_check = $form->find_input('thumb');
$thumb_check->check;
for($i_num=1; $i_num<=5 && $f_num<$total; $i_num++, $f_num++){
$mech->set_fields( 'upfile[]' => [ $filename[$f_num], $i_num ],);
print "set $filename[$f_num]\n";
}
print "\n";
print "uploading\n";
$mech->submit();
print "uploaded\n\n";
$html=$mech->content();
while ( $html =~ /<span class=\"style_error\">.+?(http:[-_\/a-zA-Z0-9\.]+)<\/span>/g)
{ @list=(@list,$1); }
}
@img_url=reverse(@list);
# print results
print "<ul>\n";
for (my $j=0; $j<$total; $j++ ){
print "<li>";
print $title[$j] . "<br />";
print "<a href=\"" . $target_url[$j] . "\">" . $target_url[$j] . "</a>";
print "<br />";
my $small = $img_url[$j];
$small =~ s/\.(jpg|gif|png)/s\.$1/ ;
print '<a href="' . $img_url[$j] . '">';
print '<img src="' . $small . '">';
print "</a></li>\n";
}
print "</ul>";
###############################################
###############################################
# get title
sub gettitle{
$mech->get($_[0]);
return $mech->title();
}
# login fc2.com
sub login_fc2{
my ($id, $pass) = @_;
$login_page="http://fc2.com/login.php?ref=blog";
$mech->get($login_page);
$mech->submit_form(
form_name => 'form_login',
fields => {
'id' => $id,
'pass' => $pass,
},
);
}
# ウェブページのスクリーンショットを保存しファイル名を返す
sub scr{
my ($url, $type) = @_;
my $filename= $url . "." . $type;
$filename =~ s/\.(?![a-z0-9]+$)|\//_/g;
$filename =~ s/https?://g;
$filename =~ s/\?/_/g;
$filename =~ s/\&/_/g;
$filename =~ s/=/_/g;
$filename =~ s/\%/_/g;
$filename =~ s/^_*//g;
print "$filename\n";
if($type =~ /jpe?g/){
`SiteShoter.exe /URL \"$url\" /Filename $filename /JpegQuality 80 /BrowserAutoSize 1`;
return $filename;
}
else{
`SiteShoter.exe /URL \"$url\" /Filename $filename /BrowserAutoSize 1`;
return $filename;
}
}
URLに半角アンド(アンパサンド?)が含まれているとそれまでをコマンドと見てバックグラウンド処理しちゃうので(UNIXだとこんなコマンドよく使いますよね?→「 firefox &」)「"」で括らなきゃいけなかったのが難所でした。 最大の難所は、アップロードして取得した画像のURLをリストで取得してそれが逆順になってること。 なんでか謎ですが、逆になってるということでreverseしました(笑)とりあえず動けばいいがMOTTOなので・・・。
実行例です。
$ perl tes.pl paste URLs: http://www.google.co.jp/ http://twitter.com/ http://yahoo.co.jp start[enter] get title www_google_co_jp_.png get scr get title twitter_com_.png get scr get title yahoo_co_jp.png get scr edit image. press enter. set www_google_co_jp_.png set twitter_com_.png set yahoo_co_jp.png uploading uploaded <ul> <li>Google<br /><a href="http://www.google.co.jp/">http://www.google.co.jp/</a><br /><a href="http://blog-imgs-45.fc2.com/l/h/l/lhlhlh/www_google_co_jp_.png"><img src="http://blog-imgs-45.fc2.com/l/h/l/lhlhlh/www_google_co_jp_s.png"></a></li> <li>Twitter<br /><a href="http://twitter.com/">http://twitter.com/</a><br /><a href="http://blog-imgs-45.fc2.com/l/h/l/lhlhlh/twitter_com_.png"><img src="http://blog-imgs-45.fc2.com/l/h/l/lhlhlh/twitter_com_s.png"></a></li> <li>Yahoo! JAPAN<br /><a href="http://yahoo.co.jp">http://yahoo.co.jp</a><br /><a href="http://blog-imgs-45.fc2.com/l/h/l/lhlhlh/yahoo_co_jp.png"><img src="http://blog-imgs-45.fc2.com/l/h/l/lhlhlh/yahoo_co_jps.png"></a></li> </ul>
関連タグ : perl,
Web サイトのスクリーンショットを作成するためのコマンドラインツール がウインドウズでも動いた
この方が Web サイトのスクリーンショットを作成するためのコマンドラインツール というのを作ったそうなので使っていました。ウィンドウズ,Cygwinで動作検証します。
まずはXULRunnerをダウンロードします。 自分のOSはウインドウズなので、 Index of /pub/mozilla.org/xulrunner/releases/1.9.2.13/runtimes からxulrunner-1.9.2.13.en-US.win32.zip をダウンロードしました。
xulrunner-1.9.2.13.en-US.win32.zip を 解凍したらxulrunnerというフォルダができているので それを置きたいフォルダに移動させました。 自分は /usr/local/bin/ (ウィンドウズで言えば、C:\cygwin\usr\local\bin ) へコピーし、 /usr/local/bin/xulrunner (xulrunner.exeが入っている)をサーチパスに追加しました。 ここからコマンドライン上で操作します。
export PATH=$PATH:/usr/local/bin/xulrunner
ここに書かれている通りに、作者がつくってくれた web_capture をホームディレクトリにダウンロードしました。
cd ~/ git clone git://github.com/jugyo/web_capture.git
Cloning into web_capture...
remote: Counting objects: 51, done.
remote: Compressing objects: 100% (43/43), done.
remote: Total 51 (delta 16), reused 0 (delta 0)
Receiving objects: 100% (51/51), 6.50 KiB, done.
Resolving deltas: 100% (16/16), done.
gitを始めて使ったけど、 gitが使えなくても、web_capture内のファイルを根こそぎダウンロードすればそれでうまくいきそうな雰囲気。
実行してみます。
xulrunner web_capture/application.ini \ -url http://bit.ly/ -file bit_ly_screenshot.jpg -type jpeg
一瞬、ウェブページの画面が出現しすぐに閉じます。ちゃんと bit_ly_screenshot.jpg の名前でスクリーンショットが撮れていました。
ちなみに、bashやcygwinで使われるような絶対パス /home/xxxx/web_capture/application.ini や ~/web_capture/application.ini で書くとエラーが出ました。 普通に相対パスで書けばOKでした。 絶対パスで書くなら、ウインドウズみたいに "C:\..." で書いたらいいのだろうなと思い、試しみたら出来ました。
xulrunner \ "C:\Documents and Settings\Administrator\My Documents\web_capture\application.ini" \ -url http://google.com -file bit_ly_screenshot.jpg -type jpeg
ウインドウズのをcygiwinに流用してるから当然なのかも。コマンドプロンプトならそれは問題にならないのかも。
perlを使い、 ファイル名に含まれるドット"."やスラッシュ"/"をアンダーバー"_"にしてリネームした
何かをダウンロードしたり、スクリーンショットをとったりすると、 ファイル名にドットがあったり、スラッシュがあることがありませんか? そのときのためにファイル名を変換するプログラムをperlで書きました。短いですが。
#!/usr/bin/perl
use utf8;
use strict;
use warnings;
for my $new (@ARGV){
my $old = $new;
$new =~ s/\.(?![a-z0-9]+$)|\//_/g;
rename $old , $new;
print $old ." => " . $new . "\n" ;
}
実行例です。
$ perl test.pl 1.2.3.txt a.b.ccc.ddd.txt 1.2.3.txt => 1_2_3.txt a.b.ccc.ddd.txt => a_b_ccc_ddd.txt $ ls 1_2_3.txt a_b_ccc_ddd.txt 1_2_3.txt a_b_ccc_ddd.txt
もう一つ実行例。3秒くらいで終わりました。
$ touch 0.{0..10}.{a..z}.txt; perl test.pl 0.{0..10}.{a..z}.txt
0.0.a.txt => 0_0_a.txt
0.0.b.txt => 0_0_b.txt
(省略)
もちろん、*.tar.gz などには対応しておりませんし、上書きチェックも行いません。 そのへんは注意したほうがいいと自分で思いました。でも、ウェブページのスクリーンショットをURL名で 保存したものをfc2ブログにアップできるようにリネームできるようにしたい目的は十分に達せられたと思っています。大量にウェブページのスクリーンショット撮るならscreenshoterが便利です。
本当はperl使うほどじゃないかなとsedですまそうと思っていたんだけど、先読みできないっぽくて無理でした。 たぶん、正規表現メモにも載ってないから できないのだろうと思います。ずっと mv -i $1 `echo $1 | sed 's/\.(?![a-z0-9]+$)|\//_/g'` を実行してなぜできないか悩みました。
perlでツイートしてみた
perlを使ってtwitterでつぶやいてみます。 完全にこのサイトをまねしました。
windows環境下だとだいたい文字コードはshiftjisですよね。 そんなわけで少し書き換えました。
#!/usr/bin/perl
use utf8;
use strict;
binmode STDOUT => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
use open IO => ":encoding(cp932)";
use warnings;
use Encode;
use Net::Twitter;
my $consumer_key='**********************';
my $consumer_secret='********************************';
my $access_token ='**************************************';
my $access_token_secret='*************************************';
my $twit = Net::Twitter->new(
traits => [qw/API::REST OAuth WrapError/],
consumer_key => $consumer_key,
consumer_secret => $consumer_secret,
ssl => 1,
);
$twit->access_token ($access_token);
$twit->access_token_secret($access_token_secret);
for my $tweet (@ARGV){
my $tw_dec= decode('shiftjis', $tweet);
my $tw_len= length($tw_dec);
if($tw_len <= 140){
$twit->update($tw_dec);
print "successed\n";
}
else {
print "failed: your tweet is over 140 letters(", $tw_len, ")\n";
}
}
まだ試してないのですが、 twittershell - search.cpan.org、twpin - search.cpan.orgが便利かも。
関連タグ : perl,
perlでfc2ブログに画像をアップロードしてみた
WWW::Mechanizeを使ってfc2ブログにファイルをアップロードしてみました。プログラム言語はperlです。 それなりに動くと思います。お前の英語はなっとらんとかは見逃してください。
use utf8;
binmode STDOUT => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
use open IO => ":encoding(cp932)";
use Encode;
use warnings;
use URI::Escape;
use WWW::Mechanize;
$id="*********************"; # your id or email address
$password="***************"; # your password
$"="\n";
my $mech = new WWW::Mechanize( autocheck => 1 );
$mech->agent_alias('Windows IE 6');
# login fc2.com
&login_fc2($id, $password);
# get upload page
$mech->get('/control.php?mode=control&process=upload');
# confirm
$total = scalar(@ARGV);
print "tatal: $total file\n";
print "@ARGV\n\n";
# upload
$num=0;
while($num < $total){
for($inum=1; $inum<=5 && $num<$total; $inum++, $num++){
$mech->set_fields( 'upfile[]' => [ $ARGV[$num], $inum ],);
print "set $ARGV[$num]\n";
}
print "\n";
print "uploading\n";
$mech->submit();
print "uploaded\n\n";
@list =(@list,($mech->content() =~ /<span class=\"style_error\">.+?(http:[-_\/a-zA-Z0-9\.]+)<\/span>/g));
}
# print results
for $img_url (@list){
$small = $img_url;
$small =~ s/\.jpg/s\.jpg/ ;
print "<a href=\"" . $img_url . "\"><img src=\"" . $small . "\"><br />\n";
}
# login fc2.com
sub login_fc2{
my ($id, $pass) = @_;
$login_page="http://fc2.com/login.php?ref=blog";
$mech->get($login_page);
$mech->submit_form(
form_name => 'form_login',
fields => {
'id' => $id,
'pass' => $pass,
},
);
}
実行:
$ perl fc2upload.pl *.jpg
結果:
<a href="http://blog-imgs-xx.fc2.com/x/x/x/xxxxxxxxx/1.jpg"><img src="http://blog-imgs-37.fc2.com/x/x/x/xxxxxxxxx/1s.jpg"><br /> <a href="http://blog-imgs-xx.fc2.com/x/x/x/xxxxxxxxx/2.jpg"><img src="http://blog-imgs-37.fc2.com/x/x/x/xxxxxxxxx/2s.jpg"><br />
関連タグ : perl,
flickrが1ヶ月あたり300MB画像アップロード可能になったっぽい(以前は100MB)
英語面倒だからあまりよんでないが、これは正しいですよね?月300MBアップロードできるなんて、flickrの時代の到来の予感。
http://www.flickr.com/help/limits
fc2ブログがファイル容量追加申請ができるようですね。最近気づいた。 一方、フォト蔵は何日か前に画像が表示されないトラブルがありましたね。月1GBとは言っても、安定してるflickrに ぶがあるか。
関連タグ : flickr,
urlエンコードしてwikipediaの記事へのリンクを出力(perl)
use utf8;
binmode STDOUT => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
use open IO => ":encoding(cp932)";
use Encode;
while ($name=<>) {
chomp($name);
print "<a href=\"http://ja.wikipedia.org/wiki/" . my_urlencode_utf8($name) . "\"><strong>" . $name . "</strong></a>\n"
}
sub my_urlencode_utf8
{
my($tmp) = @_;
$tmp = Encode::encode('utf8',$tmp);
$tmp =~ s/([^・・w])/'%'.unpack("H2", $1)/ego;
$tmp =~ tr/ /+/;
$tmp = Encode::decode('utf8',$tmp);
return($tmp);
}
結果: $ perl e.pl ウィキペディア アンサイクロペディア <a href="http://ja.wikipedia.org/wiki/%e3%82%a6%e3%82%a3%e3%82%ad%e3%83%9a%e3%83%87%e3%82%a3%e3%82%a2"><strong>ウィキペディア</strong></a> <a href="http://ja.wikipedia.org/wiki/%e3%82%a2%e3%83%b3%e3%82%b5%e3%82%a4%e3%82%af%e3%83%ad%e3%83%9a%e3%83%87%e3%82%a3%e3%82%a2"><strong>アンサイクロペディア</strong></a>
参考サイト: perlのUTF8プログラミングでのURLエンコード(perl)
関連タグ : perl,
WWW::Mechanize を使ってウェブ魚拓でキャッシュ取得させてみた
WWW::Mechanize を使ってウェブ魚拓でキャッシュ取得させてみました。
use utf8;
binmode STDOUT => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
use open IO => ":encoding(cp932)";
use Encode;
use WWW::Mechanize;
my $webgyotaku='http://megalodon.jp/pc/get_simple/confirm?url=';
my $target_url='http://lhlhlh.blog71.fc2.com/blog-entry-110.html';
my $mech = new WWW::Mechanize( autocheck => 1 );
$mech->agent_alias('Windows IE 6');
$mech->get($webgyotaku.$target_url);
$mech->submit_form(
form_number => 2,
);
@list=$mech->links();
$gyotaku= undef;
for $link (@list){
if($link->text() =~ $target_url ){
$gyotaku=$link->url();
}
}
print "<a href=\"".$target_url."\">".$target_url."</a>";
print "(<a href=\"".$gyotaku."\">cache</a>)\n";
関連タグ : perl,



