Chinaunix首页 | 论坛 | 博客
  • 博客访问: 125358
  • 博文数量: 28
  • 博客积分: 2431
  • 博客等级: 大尉
  • 技术积分: 321
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-29 18:40
文章分类

全部博文(28)

文章存档

2011年(3)

2010年(6)

2009年(7)

2008年(12)

分类:

2010-01-24 22:10:41

 

额,我差不多每天都要看动漫,杯具啊,新番啊,很多,还有一些长篇,唉,浪费青春啊,每天上网看有没有更新,真的很杯具,而且校园网又慢,真杯具,所以,写了一个小脚本,每天都自动的下载今天更新的动漫,以来不用自己上网找,二来,可以练练手,一举两得的说···呵呵··

写得比较粗,可以用就行了,或者以后有时间就在写清晰点···

用法:在脚本的目录下,新建一个文本,重命名为web.txt,里边放网址

例子:(文本内容)

#守护猫娘绯鞠

*.net/view/1085.html

ps:脚本是调用迅雷下载的,在win下通过。动漫下载的网址是X旅(具体就不说了)



 

#!/usr/bin/perl -w

#BY Weigun http://blog.chinaunix.net/u2/70443/

use strict;
use LWP::Simple;
use Win32::OLE;
use Data::Dumper;
my $r_urls=&get_url_list; #hash

my $r_file_name = get_content($r_urls);    #hash

&is_new($r_urls,$r_file_name);
my $r_dlurls=&parse($r_file_name);    #hash

#print Dumper $r_dlurls,"\n";

my $thunder = Win32::OLE->new('ThunderAgent.Agent.1');
for my $key(keys %$r_dlurls)
{
    &dl_by_xl($thunder,$r_dlurls,$key);
}
print "press any key to exit\n";
<STDIN>;
sub get_url_list
{
    my $list = 'web.txt';
    #my @urls;

    my $h_urls={};
    my $i=0;
    open IN,"<",$list;
    while(<IN>)
    {
        chomp;
        next if /^#/;

        next if /^\s+$/;
        #push @urls,$_;

        $h_urls->{++$i}=$_;
    }
    close IN;
    #return \@urls;    

    return $h_urls;
}

sub get_content
{
    my $r_urls=shift;
    my $i=0;
    my $name_hash={};
    mkdir 'web',oct(0777) unless -e 'web' and -d _;
    chdir 'web' or die "can't chdir:$!\n";
    for(keys %$r_urls)
    {
        warn "get $_ error:$!\n" if getstore($r_urls->{$_},$_.'.html') != 200;
        $name_hash->{$_}=$_.'.html';
    }
    return $name_hash;
}

sub parse
{
    my $file_name = shift;
    my $dlurl_hash={};
    my $i=0;
    for my $key(keys %$file_name)
    {
        open IN,"<",$file_name->{$key};
        while(<IN>)
        {
            s/\s+//;
            #chomp;

            if(/.*a href=\'(.*)\'.*>(.*)<\/a><\/li><\/ul>/)
            {
                $dlurl_hash->{++$i}=$1;
                #print $url_hash->{$2},"\n";
                last;
            }
            else
            {
                next;
            }
        }
    }
    close IN;
    return $dlurl_hash;
}

#my $code = mirror('
http://www.yahoo.com.cn','/path/file.html');
#
#mirror函数将比较远程和本地文件的一致性,然后返回一个状态号,比如文件相同
#将返回304,如果本地文件同步成功将返回200。
#更新时间:2010-1-22 8:55:10 下载次数:加载中
sub is_new
{
    my ($r_url,$r_name)=@_;
    for my $key(keys %$r_name)
    {
        my $mod_time = &parse_date($r_name->{$key});
        if($mod_time ne &get_date)
        {
            delete $r_name->{$key};
            next;
        }
    }
}

sub parse_date
{
    my $name=shift;
    my $time;
    open FH,"<",$name;
    while()
    {
        if(/.*更新时间.*?\/b>(.*?)\s.*/)
        {
            $time=$1;
            last;
        }
    }
    close FH;
    return $time;
}
sub get_date
{
     my($day,$mon,$year)=(localtime)[3..5];
     $day = ($day < 10)? "0$day":$day;
     $mon = ($mon < 9)? ($mon+1):($mon+1);
     $year += 1900;
   return $year.'
-'.$mon.'-'.$day;
}
sub dl_by_xl
{
    my ($obj,$r_name,$key)=@_;
    #下面是迅雷AddTask()的参数,我只用了3个,$url $filename $path
    #my ($url,$filename,$comments,$refer_url,$start_mode,$only_from_origin,$origin_thread_count);
    my ($url,$filename);
    $url=$r_name->{$key};
    ($filename)=$url=~/.*\/(.*\..*)/;
    #print $filename,"\n";
    my $path='
f:\\movies\\';
    $obj->AddTask($url,$filename,$path,$url,$url,1,0,5) ;
    $obj-> CommitTasks2(1);
    print '
Task Commit

}


阅读(1572) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-04-10 00:28:16

哦哦,效果如何?能下载到吗?不过......还是看不明.....VB后半段在睡觉和赶作业....杯具的浪费掉了...现在800K的速度不错啊~~用115下的就是不同~ 弄了个迅雷会员发现其实作用不大....虽然现在每天也跟你一样杯具的做着相同的事啦~~ 最近发现红旅的不是很清晰啊.....难道最近高清看多了?贪婪的种子找不到...是前些时间禁BT就没啦~~? 下载13G+ 《** 0079》中~~~就快了~~