2ちゃん画像落としまくりスクリプト

11
垢版 |
NGNG
2ちゃんねるに貼ってある画像リンクを追い、
jpgをかき集めるスクリプトを作ってみました。

http://www.ninnin.net/

※perlとwgetが必要です。
※Windows,Macでは動きません。
102名無しさん@お腹いっぱい。
垢版 |
NGNG
>>101
作って!
NGNG
>102
つくりはじめた。rawmodeを使おうかとも思ったけど、index.htmlをtidyでXHTMLに
変換してからXSLTで加工(XHTML to XML)して、XMLで日別にサーバ側に蓄積して、
CGIでXML選んでXSLTかまして(XML to HTML4)出力、みたいな感じにすることにした。
なんとなく。

とりあえず最初のXSLTまで書けましたわ。
104名無しさん@お腹いっぱい。
垢版 |
NGNG
age
NGNG
>103
すばらしいあげ
106101
垢版 |
NGNG
>>105
ども。マ板でもちょっと書いたんだけど、できました。
2ちゃんねるの 技術系/ニュース系 板の、URL流し読みサイト。

これ http://moso.borogrammers.net/newlin/ なんだけどどうかしら?

表示例↓
http://moso.borogrammers.net/newlin/read.cgi?board=news&yyyy=2002&mm=01&dd=23
107名無しさん@お腹いっぱい。
垢版 |
NGNG
祭り監視に良いNE >>106

NGNG
>>106
面白いね
ちょっと遊んでみるよ

でもsage
109名無しさん@お腹いっぱい。
垢版 |
NGNG
スレがばらばらに表示されるので、日付順、スレ順などのソートがあると嬉しいです。
110109
垢版 |
NGNG
あと、大量のリストを眺める作業になるので、スレタイトルは左揃えにしたほうが
視点の移動が少なくて良いんじゃないかと思います。
111名無しさん@お腹いっぱい。
垢版 |
NGNG
.datの形式変わった?
112106
垢版 |
NGNG
本業でヘロヘロになってました。109さんご意見どうも。

>スレがばらばらに表示されるので、日付順、スレ順などのソートがあると嬉しいです。
トップ画面に「発言日が最近のURLほど上に表示する」と「スレッド番号+発言番号
でソートして表示する」というラジオボタンをつけました。

>あと、大量のリストを眺める作業になるので、スレタイトルは左揃えにしたほうが
>視点の移動が少なくて良いんじゃないかと思います。
確かにそうですね。左揃えにしました。スレッドでソートした場合、かなり見易くなったの
ではないかと思います。

URLは相変わらず http://moso.borogrammers.net/newlin/ です。
113106
垢版 |
NGNG
新しい表示例:
http://moso.borogrammers.net/newlin/read.cgi?board=newsplus&yyyy=2002&mm=02&dd=21&abone=on&exclude=on&exclude_text=2ch.net%2F&ext_text=swf&thr_sort=yes
114名無しさん@お腹いっぱい。
垢版 |
NGNG
>>113のURLはなんか妙な表示になる気もするけど、良くなったと思います。
てーか誰か画面のデザインしてやれ。地味すぎるよ


NGNG
>>111
datは>>106のviewerには無関係と思われ
NGNG
>>1のスクリプトは、いまや改造しないとそのままでは使えないですね。
117名無しさん@お腹いっぱい。
垢版 |
NGNG
>>116
改造キボンヌ
118
垢版 |
NGNG
>>116,117
2ch のシステムはよく知らないんだけど現在では subject.txt と .dat
は直接見れないんだよね? read.cgi から raw モードで取得するのかな。
その辺りを書き換えればオッケー。
NGNG
monazilla ML 入るが吉。
NGNG
使えなくなってるね…
121116
垢版 |
NGNG
>>117
118が書いてるように、今は $ita/subject.txt が見られないようだから、
まずオリジナルスクリプトの subject.txt は subback.html にでも
しないといけない。
また、subback.html を参照するようにしたら、データナンバーの取り出し方も
変えないといけないね。いろいろなやり方があるだろうが、例えば
http://love.2ch.net/morningcoffee/subback.html
だったら
<a href="1014421686/l50">6: 中澤裕子ファン倶楽部 96 (977)</a>
みたいなスレッドのリストが得られて、要はこの中の 1014421686 を
切り出したいわけだから、38行目と60行目
($data_no) = split /\<\>/ , $_;
は、
@data = split /\//;
$data_no = $data[0];
$data_no =~ s%\D%%g;
とでもすれば $data_no に 1014421686 が入って、
あと、40行目の $target は、conf.txt に
$host = 'http://love.2ch.net/';
$categ = '/morningcoffee/';
を追加しといて
$target = "$host"."test/read.cgi"."$categ"."$data_no";
として使っているが、もっとエレガントなやり方があったら誰か教えて著。
NGNG
>>1 のサイト、アクセスできなかったんですけど
件のスクリプトを落とせるところは他にありませんか
123名無しさん@お腹いっぱい。
垢版 |
NGNG
  
124名無しさん@お腹いっぱい。
垢版 |
NGNG
wgetでダウンロードしたファイルを
ダウンロードしたYYYYMMDDという形式で
保存するにはどうすればいいのでしょう。

同じ名前でファイルが毎週更新されるので
cronでそのままで回すのでは上書きされて
しまいます。
125名無しさん@Emacs
垢版 |
NGNG
% wget http://xxx.xxx.xxx/???.jpg -P `date +%y%m%d`
ってのはダメ?
大量に引っこ抜くならこれでいいと思うけど。
NGNG
-O --output-document=FILE FILE に文書を出力します。
NGNG
>>125
> ってのはダメ?

それでもかまわないのですがファイルは1つなので
ディレクトリは作らずYYYYMMDD.jpgというファイル名
で保存したいのですが。
NGNG
>>128

% wget http://xxx.xxx.xxx/???.jpg -O `date +%Y%m%d`.jpg

(´-`).。oO(>>127 がすでに答えてくれているけど…なんでだろう?)
NGNG
>>128

> (´-`).。oO(>>127 がすでに答えてくれているけど…なんでだろう?)

あの書き込みはヒントだったのですね。
ドキュメントと書いてあったので他の事かと思っていました。
ありがとう。>>ALL
NGNG
ほしゅ
NGNG
捕手
NGNG
なんとなく
NGNG
ほしゅ
NGNG
どるどれい?
NGNG
sage
NGNG
おーい
137名無しさん@お腹いっぱい。
垢版 |
NGNG
ある日付以降の書きこみに書かれているURLのみを
落としたいとかできるでしょうか?
138名無しさん@お腹いっぱい。
垢版 |
NGNG
あげとこう
NGNG
さげとこう
NGNG
一個のディレクトリに画像ファイル1400個置いてますが
gimvでみるときに極端に速度が遅いです
数が多いとよくないんですね
どーにかなりませんか?
NGNG
何が悪いかをつきとめて、それを直す。
NGNG
>>140
UNIXのファイルシステムは
一つのディレクトリにファイルがいっぱいあると遅いと
聞いたことがあるな
(だからメールキューは複数のディレクトリに分かれてるらしい)

1400個くらいなら関係ないのかもしれんけどね
詳しい人フォローレスたのむ
NGNG
>142
(だから2chのスレッドは足切り制限があるらしい)
(1つの板に数千のスレがあった時代は重かったなぁ…)
脱線スマソ
144名無しさん@お腹いっぱい。
垢版 |
NGNG
age
145名無しさん@お腹いっぱい。
垢版 |
NGNG
うーん、誰も保守しようとか言う気はないの?



ないよね。
NGNG
>>142
ext2fsやオリジナルのufsは遅いが、たとえばufsでもUFS_DIRHASH入りものなら速い。
xfsあたりなら、なんもせんと速い。

結論: OSと、選んだファイルシステムによる。
147名無しさん@お腹いっぱい。
垢版 |
NGNG
チョトおしえてください。
IEからなら
http://pc.2ch.net/test/read.cgi/unix/1003833552/
が見えるんですけど、wgetを使ってこのページをダウンロードしようとしても、
できないんです。どうやればいいんですか?
NGNG
wget http://pc.2ch.net/test/read.cgi/unix/1003833552/
でできるが…?
149名無しさん@お腹いっぱい。
垢版 |
NGNG
て優香、wget使わなくても、httpget使えば便利じゃない?
と思って、httpget落とそうとしたけど、内部エラーで落とせない・・・
http://www.onicos.com/staff/iz/release/
NGNG
>>1さんが作ったやつをちと効率的に収集できるように改造したけど、
どっかにうpしようかな?
NGNG
どうせやるなら、以前にもちょっと話出てたけど、一人が落としたファイルをどっかの鯖に
キャッシュしといて他の人はそっちから落とせるようなの作ろうよ。そうすれば2ちゃんの
負荷も減るし、うpろだの負荷も減るし、ソッコーで消されたファイルもキャッシュに残って
るしで、うっはうはーじゃん。
NGNG
どうせなら落としたファイルがP2Pで共有されるようにするとか
NGNG
>>147
普通はdatファイルを直接落とそうとするのでは無いの?

>>151
それやろうかな...
今はdatファイルを貯めているんだけど。
154名無しさん@お腹いっぱい。
垢版 |
NGNG
>>150

複数ファイル(.mpgとか.rmとかの動画)も同時に落せるヤシキモンヌ
NGNG
>>154
もちろんそういう仕様にしてあるよ。てかできたけど。
けどrm,ramはすっかりわすれてたというか、そんなのにちゃんで見たことないのだが。
NGNG
>>153
て優香、datファイルを落とせるならそうしたいんだけど、やりかた
教えてーな。
たしかどっかでdatファイルは落とせなくなったとか聞いたような気がしたんで、
htmlをそのまま落としてマッチングしてるんだけど・・・
157153
垢版 |
NGNG
>>156
http://pc.2ch.net/test/read.cgi/unix/1003833552/
だったら
http://pc.2ch.net/unix/dat/1003833552.dat
でいけるのではないと?

>たしかどっかでdatファイルは落とせなくなったとか聞いたような気がしたんで、
>htmlをそのまま落としてマッチングしてるんだけど・・・
これは俺も聞いたことあるけど、閉鎖騒動の時あたりじゃないの?
俺はそれよりあとに2ch来たからよく知らないけど、
read.cgiにアクセスするより、datファイルに直接アクセスしたほうが、負荷は減るらしい、と聞いたこともある。
158153
垢版 |
NGNG
>>156
とりあえず、俺の作ったdatファイルだけ落とすスクリプトも張っておこう。
粗末なシェルスクリプトだが...

#!/bin/sh

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
DATE=`date +%Y%m%d_%H%M%S`

if [ "$1" ] && [ "$2" ] && [ "$3" ] && [ "$4" ] ;then
:
else
echo "useage: ./get.sh [dat|subject] [dir] [host] [ita] [waittime] [wget-flag]"
exit
fi

HOMEDIR=/home/hoge/documents/data
TARGET=$1
DIR=$2
HOST=$3
ITA=$4
LOGFILE=./wget_log.txt

if [ "$5" ];then
WAIT=$5
else
WAIT=3
fi
159153
垢版 |
NGNG
# -c tuchuukara
# -N time stamp
WGETFLAG="-t 3 -a${LOGFILE} -P./dat -U "Hogella/1.0" -nd $6"

if ! [ -d ${HOMEDIR}/${DIR} ] ;then
echo ${HOMEDIR}/${DIR} no such directry\!
exit
fi
/bin/test -d ${HOMEDIR}/${DIR}/dat || mkdir ${HOMEDIR}/${DIR}/dat
/bin/test -d ${HOMEDIR}/${DIR}/old_dat || mkdir ${HOMEDIR}/${DIR}/old_dat
/bin/test -d ${HOMEDIR}/${DIR}/subject || mkdir ${HOMEDIR}/${DIR}/subject

cd ${HOMEDIR}/${DIR}
test -f ${LOGFILE} || touch ${LOGFILE}
printf "###\n###\n### DATE=${DATE} \n### args=$* \n###\n###\n" >> ${LOGFILE}


if [ ${TARGET} = subject ];then

rm -f subject.txt
wget -a${LOGFILE} -U "Hogella/1.0" http://${HOST}/${ITA}/subject.txt
cp subject.txt ./subject/subject.${DATE}.txt
160153
垢版 |
NGNG
elif [ ${TARGET} = dat ];then
echo "---> DATE = ${DATE}"
mkdir old_dat/${DATE}

rm -f subject.txt
wget -a${LOGFILE} http://${HOST}/${ITA}/subject.txt
echo "---> got subject file"
sleep 1

echo -n "---> dat file... "
for DAT in `cat ./subject.txt | cut -f1 -d.` ;do
echo "--->TARGET is ${DAT}" >> ${LOGFILE}
echo -n "${DAT}"
wget ${WGETFLAG} http://${HOST}/${ITA}/dat/${DAT}.dat
if [ -f ./dat/${DAT}.dat.1 ];then
echo "---> file moved to old_dat dir" >> ${LOGFILE}
mv ./dat/${DAT}.dat ./old_dat/${DATE}
mv ./dat/${DAT}.dat.1 ./dat/${DAT}.dat
echo -n "_ "
elif [ -f ./dat/${DAT}.dat ];then
echo -n ". "
else
echo -n "X "
fi
sleep ${WAIT}
done
echo " "
echo "---> all done" >>${LOGFILE}
echo "---> all done"
fi
161153
垢版 |
NGNG
HOMEDIR=/home/hoge/documents/data
を適当に書き換えて
mkdir $HOMEDIR/test-dir
./get.sh dat test-dir pc.2ch.net unix 3
で使えると思う(freebsd以外は不明)。
2度目からは
./get.sh dat test-dir pc.2ch.net unix 3 -c
で差分だけとってこれる。
NGNG
あらほんと。
で、にちゃんの鯖に負担かけないように、前回収得した所からの差分だけ
拾いたいんだけど、どうやるの?
NGNG
うーん、
cgiから差分だけ拾うのと、datを全部拾って差分を調べるのとではどっちがいいんだろ?
てか、dat拾う方がいいんだろうなぁ。作りなおしてみるか。
164153
垢版 |
NGNG
>>162
wgetのオプションで俺が使えると思うのは。
-c       ファイルサイズを見て、増加分だけダウンロードする。
-N       タイムスタンプを見て、ファイルが更新されていたら、(ファイルすべて)をダウンロードする。
-nc       ファイルが存在したら、ダウンロードしない。(接続もしない)
-t 3       失敗したときの再トライ回数(デフォルトは20なので、3ぐらいに設定したほうがよいと思う)
-x       ディレクトリを作って、URLを再現する
         (例 http://pc.2ch.net/unix/dat/0000000.dat → ./pc.2ch.net/unix/dat/000000.dat )
-nd      -xの逆、ディレクトリを作らない。(-rは同時に-xが有効になるけど、-ndをつけるとディレクトリを作らない)
-i link.txt  ファイルからURLを読み込んでダウンロードする。     
-nv      ダウンロードメッセージをいくらか静かにする。
-A acclist,
--accept=acclist acclistで指定した拡張子(?)のみダウンロードする。,で区切る(?)
-U "Mozilla/4.0" ユーザーエージェントをちょろまかす。
-P PREFIX


--progress=dot ダウンロード中のメッセージスタイルを変更。
-o hoge.txt   ログファイル(上書きしてしまう)
-a hoge.txt   ログファイル(追加から書く)

-r        リンクをたどり、再起的に取る(ただし、別のホストはダウンロードしない)
-w 3      再起的にとる場合のダウンロードしたときの待ち時間
--no-parent  再起的にダウンロードする際、親ディレクトリから上はダウンロードしない。


-nd

165153
垢版 |
NGNG
>>164
失敗。

wgetのオプションで俺が使えると思うのは。
-c       ファイルサイズを見て、増加分だけダウンロードする。
-N       タイムスタンプを見て、ファイルが更新されていたら、(ファイルすべて)をダウンロードする。
-nc       ファイルが存在したら、ダウンロードしない。(接続もしない)
-t 3       失敗したときの再トライ回数(デフォルトは20なので、3ぐらいに設定したほうがよいと思う)
-x       ディレクトリを作って、URLを再現する
         (例 http://pc.2ch.net/unix/dat/0000000.dat → ./pc.2ch.net/unix/dat/000000.dat )
-nd      -xの逆、ディレクトリを作らない。(-rは同時に-xが有効になるけど、-ndをつけるとディレクトリを作らない)
-i link.txt  ファイルからURLを読み込んでダウンロードする。     
-nv      ダウンロードメッセージをいくらか静かにする。
-A acclist,
--accept=acclist acclistで指定した拡張子(?)のみダウンロードする。,で区切る(?)
-U "Mozilla/4.0" ユーザーエージェントをちょろまかす。
-P PATH  PATHを基準にファイルを保存


--progress=dot ダウンロード中のメッセージスタイルを変更。
-o hoge.txt   ログファイル(上書きしてしまう)
-a hoge.txt   ログファイル(追加から書く)

-r        リンクをたどり、再起的に取る(ただし、別のホストはダウンロードしない)
-w 3      再起的にとる場合のダウンロードしたときの待ち時間
--no-parent  再起的にダウンロードする際、親ディレクトリから上はダウンロードしない。
166153
垢版 |
NGNG
WINDOWSのiriaとか見たいに、帯域制限してダウンロードすることができないか、
は調べたことあるけど、方法が見つからなかった。wgetではできないのでは無いかと思う。
代わりには、-wで制限するか、スクリプトの中にsleepを入れる方法があると思う。

あと画像ファイルを落とすとき、-x と -nc を組み合わせて使ったら、同一のファイルをダウンロードする問題はなくなると思う。

>>158-160の欠点は、あぼーんでlogが詰まったら、不適切なところから、ダウンロードを開始してしまうため、
変なdatファイルを作ってしまう。これは-Nですべてをダウンロードしなおせばいいけど、負荷が増える。

>>163
うーん、-nc -x オプションで、すでにダウンロードしてあるファイルをダウンロードしないようにするか、
もしくはwgetで何バイト目からを指定して、別ファイルにダウンロードすることができるような、オプションがあるかも..
167153
垢版 |
NGNG
>>162
wget -c で増加分をダウンロードできるらしいです。
これは、ダウンロード途中でコネクションが切れたりして、
あとからその続きからダウンロードしたい場合にも使えるようです。
遠くのftpサーバとかに使えます。
NGNG
>>167
さんくすこ。
スレログとらなくても、リンクさえ拾えれば大丈夫だからねぇ、
あぼーんされても大丈夫だと思う。
というわけで、増分だけ拾うようにしますわ。
NGNG
このスレでやるな。
NGNG
>>169
何を?なぜ?
1711
垢版 |
NGNG
dat落ちするかとおもったけど
なんかまたあがってきてるんで
ひさびさにバージョンアップしようかな

というか、つかってる人(使う人)とかいるんでしょうか?
NGNG
つくった。
けど、htmlから拾ってるから効率悪いよ。
http://homepage3.nifty.com/wahya/
NGNG
>>172
君のPCの時計ずれてない?
NGNG
>>173
え?どこ?
さっき作ったばかりだからおかしいところあったら指摘して〜

>>171
>>1さんキタ━━━━━━(゚∀゚)━━━━━━━!!!!!
NGNG
>>171
つか、使うかどうかより、自分で作ってみるのも楽しいのかも。
1さんのも参考にしたいのでオネガイシマス。
NGNG
>>174
いやこんなんでたから。
ゴミレススマソ。
---
get2ch_v006/get2ch.pl
tar: get2ch_v006/get2ch.pl: time stamp Jan 7 21:00 2003 is 85213 s in the future
get2ch_v006/get2chrc.txt
tar: get2ch_v006/get2chrc.txt: time stamp Jan 7 21:00 2003 is 85213 s in the future
get2ch_v006/readme.txt
tar: get2ch_v006/readme.txt: time stamp Jan 7 21:00 2003 is 85213 s in the future
get2ch_v006/subback2subhash.pl
tar: get2ch_v006/subback2subhash.pl: time stamp Jan 7 21:00 2003 is 85213 s in the future
NGNG
>>176
・・・なんかちょうど1日ずれてるような。
NGNG
て優香、wget使わなければforkしなくていいからActivePerlでも使えるようになるし、
Irvineでも使えばwgetよりはるかに効率的に収集できるし。

あーあ、UNIX板で気付いちゃいけないことに気付いちゃったよ。
NGNG
萌え板を監視するスクリプトも( ゚д゚)ホスィ…
NGNG
>>179
萌え板を監視、って具体的に何できればいいんだ?
と優香、萌え板って何?ファイヤーウォールのこと?
NGNG
>>178
soretteCUI?
182179
垢版 |
NGNG
説明不足でした。

こんな感じの掲示板です。
http://www9.xdsl.ne.jp/~w2web/moe/moelinks.html

萌々ぼ〜どって言うのかな?
ソノテの人の画像アップ掲示板として広く使われてるみたいです。

欲しいのは画像をいっきに落とす・・ですが
できたら全てのページをログも含めてHDに保存できるのが好ましいです。
NGNG
>>182
そうか、wgetの-rオプションだけでは画像アップローダーの
2ページ目以降のがとってこれないのか...
うーむ
NGNG
>>182
なるほど。理解した。
VBスクリプトなら、次のページをめくるボタンを押すスクリプトが簡単に書けるけど、
Perlとかだとどうやってやるんだろ?
NGNG
wgetでpostできるようにするパッチあるよ
ttp://pluto.im.uec.ac.jp/~sekita-n/prog/
CGIを激しく呼び出してアク禁喰らっても知らないけど
NGNG
>>184
cgiを読んだら、POSTを送ることでページをめくるようになってた。
perlだったら直接サーバと繋いで、POSTを直接送ればできるのでは?
またはhttp://hoghoge/moemoe.cgi?page=3でページを直接指定して(GETでも)ページを開けるらしい。

ところでwgetでPOSTを送ることってできないよね?(wget厨ですまそ)
187186
垢版 |
NGNG
>>185
リロードしたらみました。
すまそ。試してみます。

wget以外でPOSTを簡単に送れるツールを以前どこかで見たことあったけど。。
NGNG
curl使え
NGNG
>>181
Irvineもコマンドラインから使えるけど。
irvine list.txt で、URLリストを入れられる。
cronで回すのでなければ、Win上でやったほうが簡単かも。
NGNG
⊂⌒~⊃。Д。)⊃
NGNG
その萌え萌えなんちゃらってやつな、moemoe.htmlと同じディレクトリにある
moemoe.logってのがログファイルだからそれ落とせ。画像のURLも載ってるから。
CGI叩くのやめれ。
192名無しさん@お腹いっぱい。
垢版 |
NGNG
>>172
なんかデリられてるみたいなんで差異うpキボンヌ、クレクレ君でスマソ
NGNG
>>187 w3m
NGNG
>>192
ゴメソ。
cgiからゲトーしてるので下手するとアク禁になっちゃうから今消してる。
もうすぐ次バージョンうpするからまってて〜(;´Д`)
NGNG
>>193
それだ!
NGNG
>>192
うpしたよ〜
急いで書いたからちゃんと動くかわからないけど。
NGNG
>>196
さっきの動かなかったから、差し替えますた。
NGNG
>>197
まだ時計がずれてない?(w
勘違いだったらスマソ。

ちょっと読んで気になったのは、
スレッドの差分を取ってくるときのwgetのオプションで-cと-ncの両方を指定しているけど、
これって両方あったらまずくないの?>>165
あと、datファイルを連続してダウンロードしたら、2chの負荷が大きくなってまずいと思うけど..

NGNG
>>198
あらほんと。
-cと-nc一緒に書いちゃってるけど、一応動いてるし、ダウンロードの
速さからして差分だけ落としてるように思ふ。
て優香、汚いソースを丁寧に読んでくれてありがd
datは差分だけ落としてるから連続ダウソも大丈夫かと思ったが、
やっぱヤバイかね?間隔あけた方がいいかな?
NGNG
あと、wgetのダウンロード速度が遅くていらつくんだけど、なんか解決方法
ありませんか?
NGNG
>>199
いや、ちょっとmonazilla関係のスレをよんでたら、
いかにサーバの負荷を減らすかいろいろ考えられていて、
この、datファイルを総ざらいするのも極力避けた方がいいかと思ってきた。
やるとしても、負荷の低い時間帯にかなり間隔を開けて行った方が良いかと...

>ダウンロードの
>速さからして差分だけ落としてるように思ふ。
-ncはすでにファイルが存在したら、ダウンロードしないので、ダウンロードされていない可能性は?
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況