;
chomp $aid;
print "album id is '$aid'\n";
}
my $a=Album163->new;
#my $num=$a->get_info('galaxyangel', '54569921');
my $num=$a->get_info($uid, $aid);
my $dir=$a->get_album_info("title");
mkdir $dir;
print "will get $num files in '$dir'\n";
foreach (0 .. $num-1) {
$a->save_image($_,$dir) and
print "get part $_ OK\n";
}
1;
# end of file
文件Album163.pm的内容:
# Copyright (C) 2006 reiv@rygh
#
# This library is free software; you can redistribute it and/or modify it under
# the terms of the GNU Library General Public License as published by the Free
# Software Foundation
package Album163;
use strict;
use LWP::UserAgent;
use Encode;
use Data::Dumper;
sub new
{
my $class=shift;
my $uid=shift if @_;
my $aid=shift if @_;
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy();
my $self = {
UA => $ua,
ALBUM => undef,
INFO => undef,
};
bless $self,$class;
}
# uid and aid
sub get_info($$)
{
my $self=shift;
my ($uid, $aid)=@_;
my $ua=$self->{UA};
my $re=$ua->get("http://photo.163.com/js/photosinfo.php?user=$uid&aid=$aid");
my $js=encode('utf8',decode('gbk',$re->content));
my @a = split /\r?\n/, $js;
my %album_info;
my @id=();
my @data=();
foreach (@a) {
chomp;
next unless $_;
my $tmp;
# get Album info
if (/var\s+gAlbumInfo\s*=\s*{(.+)}\s*/) {
$tmp=$1;
next unless $tmp;
while ($tmp=~m/\s*'(.+?)':(\"?)(.+?)\2,?/g) {
# print $1," => ",$3,"\n";
my ($key,$val)=($1,$3);
$val=~s/^\s+//;
$val=~s/\s+$//;
$album_info{$key}=$val;
}
} elsif (/var\s+gPhotosIds\s*=\s*\[(.*)\]\s*;/) {
$tmp=$1;
next unless $tmp;
while ($tmp=~m/(\d+),?/g) {
push @id, $1 if $1;
}
} elsif (/var\s+datas\s*=\s*\[(.*)]\s*\;/) {
$tmp=$1;
next unless $tmp;
while ($tmp=~m/\[(.+?),(.+?),\"(.+?)\",\"(.+?)\"\],?/g) {
push @data, [$1, $2, $3, $4];
}
}
}
return if (($#id != $#data) or ($#id == 0));
$self->{ALBUM}=\%album_info;
my @info=();
foreach (0 .. $#id) {
my $sid=$data[$_]->[0];
my $ext=$data[$_]->[1]?"jpg":"gif";
my $pid=$id[$_];
my $url="http://img$sid.photo.163.com/$uid/$aid/$pid.$ext";
push @info, [ $url, @{$data[$_]} ];
}
$self->{INFO}=\@info;
print Dumper(\%album_info);
# print Dumper(\@info);
$#info+1;
}
# 1: the index of image, from 0~max
# 2: the path to save, optional
# 3: the file name to save, optional
sub save_image
{
my $self=shift;
return undef unless defined $self->{INFO};
return undef unless @_;
my $idx=shift;
my $url=$self->get_url($idx) or return 0;
my ($path, $name)=(".", $self->{INFO}[$idx][4]);
$path = shift if @_;
$name = shift if @_;
my $ua=$self->{UA};
$ua->get($url, ":content_file" => $path."/".$name);
}
sub get_album_info($)
{
my $self=shift;
my $key=shift;
$self->{ALBUM}{$key};
}
# get url of image
sub get_url($)
{
my $self=shift;
return unless defined $self->{INFO};
my $idx=shift;
return undef if ($idx<0 or $idx>$#{$self->{INFO}});
$self->{INFO}[$idx][0];
}
1;
# end of file
eakn@2006-09-05 15:03
剛好逛到這貼
也貼一個自己發現的東西給各位作者吧
這和某逆天樓中發現的謎之相簿有關.
[SP]
要從那個相簿要抓東西的話,
只要把抓取位址列表的檔案
h ttp://photo.163.com/js/photosinfo.php?user=使用者&aid=目錄
的最後面加上 &level=2 就可以抓到列表了.
也就是會變成
h ttp://photo.163.com/js/photosinfo.php?user=使用者&aid=目錄&level=2
不過由於那個相簿無法產生相簿列表, 可能要請使用者自行填入目錄的數字代碼.
這個位置是163在看單獨圖的頁面裡所使用的位置.
註: 不過目前我除了那個相簿之外, 還沒看過哪個相簿非用這招不可...
[/SP]
takabe@2006-09-06 11:54
这个问题,貌似我在前一个版本已经添加了,可能没有上传上去?
唯大@2006-09-06 13:30
我用这个下载感觉速度不快的说,汗。
不过感谢,辛苦了。
Skybow@2006-09-12 08:01
搜索真赞,楼主你是救苦救难的观世音菩萨……
可是每次都要输入验证码……抓狂
shippou2003@2006-09-12 08:08
引用
最初由 Skybow 发布
搜索真赞,楼主你是救苦救难的观世音菩萨……
可是每次都要输入验证码……抓狂
我在我的签名里放了至少2个星期了,这个搜索的网址
还有一些人来问我相册密码,我明明放在签名里了
话说签名这么不明显么?
Skybow@2006-09-12 09:51
这样啊……签名还是会留意的,但一般不可能每次都去注意你的签名,而且你的签名内容太多,重点不突出,什么时候做过修改很难察觉啊-_-b,另外就是那几个字是蓝色的,我选用的是黑色风格,蓝色最容易被忽视orz
shippou2003@2006-09-12 10:27
引用
最初由 Skybow 发布
这样啊……签名还是会留意的,但一般不可能每次都去注意你的签名,而且你的签名内容太多,重点不突出,什么时候做过修改很难察觉啊-_-b,另外就是那几个字是蓝色的,我选用的是黑色风格,蓝色最容易被忽视orz
黑色风格啊~
原来如此
签名内容
没办法
已经尽量缩减了
whlex@2006-09-15 18:39
引用
最初由 shippou2003 发布
我在我的签名里放了至少2个星期了,这个搜索的网址
还有一些人来问我相册密码,我明明放在签名里了
话说签名这么不明显么?
偶通常沒開簽名[/KH]
«123»共3页
| TOP