X

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

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

http://www.ninnin.net/

※perlとwgetが必要です。
※Windows,Macでは動きません。
NGNG
XV って未だに使い方よくわかんない…
メンドーなので、なんでもかんでも ImageMagick …
NGNG
>>70
既出
NGNG
GQviewとか。
NGNG
キーボードマクロで+mamiするのをcronでまわしておくと、
便利というか迷惑というか。
75名無しさん@お腹いっぱい。
垢版 |
NGNG
便利と思うがなんであがらないのかな?
ということで定期あげ。
NGNG
ところで、画像集めた後の話だが、
同じ様な画像がたーくさんディスクの肥しになって
欝にならないか?

そんな時は、dupmerge
http://people.qualcomm.com/karn/code/dupmerge/
(QualcommのPhilip Karn作)

洩れは、
find . -name "*.[GgJj][IiPp][FfEeGg]*" -o -name "*.[Mm][Pp][EeGg]*" | dupmerge
みたいにして使ってるよ。
NGNG
>>76
sambaでwinにmountしているんだけれども、
この手のツールはwinのほうが充実していないでしょうか。
NGNG
shell で書けるからね。
NGNG
>> 76
どうせなら iname 使え
NGNG
そりでは修正
find . -iname "*.[gjm][ip][feg]*" | dupmerge
NGNG
>>77
最近のwindowsは、ハードリンク出来るの?
消すんじゃなくてハードリンクする所が
ミソなんだけど
NGNG
>>81
使えるわけないじゃん
NGNG
>>82 >> 77
じゃ、充実してないじゃん
NGNG
どうせ焼く時は使わない
85名無しさん@お腹いっぱい。
垢版 |
NGNG
あげます、あげます
86名無しさん@お腹いっぱい。
垢版 |
NGNG
お前ら、最近どうですか?
87名無しさん@お腹いっぱい。
垢版 |
NGNG
どの板も、途中でDLが止まってしまうのだよ。なんでだ??
88名無しさん@お腹いっぱい。
垢版 |
NGNG
>>81-82
Windowsでもハードリンク使えるみたい

CreateHardLink
これをMSDNかなんかでしらべれ

Unixと全く関係ないが、サゲたら忘れそうなのでアゲ
NGNG
FAT でどうやって hardlink 作るんだ?
NGNG
確か2000以降だっけかな、忘れた
NGNG
NTFSならhard linkもsymbolic linkもできるよ。
あんまり使われてないのはFATだと使えないからかも。
NGNG
symbolic linkをjunctionという、らしい。
ただこいつを使うと、WindowsのExplorerでさえ
摩訶不思議な挙動を示すことがあるというくらい、
ろくに使われてない機能。
NGNG
思いつきとしか思えない機能追加が多いからな。
だったら DOS のころから linkfile をサポートしといてほしい。
NGNG
DOSでFATでもハードリンク作れるYO!
ただし、chkdsk.exeにクロスリンクと言われてしまう、諸刃の剣。
素人にはお勧めできない。ってやつだ。
95名無しさん@お腹いっぱい。
垢版 |
NGNG
こえーーー
NGNG
>>94
確かに間違いでは無いな(笑)
NGNG
age て みた
98名無しさん@お腹いっぱい。
垢版 |
NGNG
やっぱり前回履歴に対応して欲しいなぁ。
毎日cronで走らせたいヨ。
NGNG
>>92
俺使ってる。でもあれってsymlinkというのは詐欺だろう。
join(DOS)とかFreeBSDのunion fs & mountみたいのと言った方が正確
かな。で、俺が見つけてる不具合は

1.Explorerやインストーラの空き容量計算がmountに対応できてないので、
 インストーラで(空きがあっても)「ねーよ」と弾かれたりする
2.MoveFile() APIがmountを考慮してないので、src/destが同じドライブ
 名だけど別ボリュームの場合、ファイル移動に失敗する(API直/cmd.exe
 Explorer全滅)

だな。
一応どっちも回避方法があるし、従来アプリは1.に対応できんというのは
仕方がない所でもあるんだが、2.はどう考えても(仕様変更への)追従ミス。

# 同一ボリューム内の移動の場合、ディレクトリエントリだけの書き換え
# で高速化してるんだが、同一ボリュームかどうかの判定にsrc/destの
# ドライブ文字しか見てないという。アホ。
100名無しさん@お腹いっぱい。
垢版 |
NGNG
100

101名無しさん@お腹いっぱい。
垢版 |
NGNG
ある板のある日の<a href="...">を一括表示してくれるようなサイトない?
つくろうかな…。
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落ちするかとおもったけど
なんかまたあがってきてるんで
ひさびさにバージョンアップしようかな

というか、つかってる人(使う人)とかいるんでしょうか?
レスを投稿する

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

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