【发布时间】:2021-02-17 18:04:13
【问题描述】:
我在网上找到了这个代码 (Source) 来下载必应图片。
这个 perl 脚本下载今天的 Bing 壁纸图片,我如何更改它以向后测试所有可能的日期?什么时候停止都没关系,因为我要手动停止。
我尝试了一些选项,但我不知道 perl,而且有点令人沮丧。
非常感谢!
#!/usr/bin/perl
$\="\n";
use strict;
use warnings;
use Data::Dumper;
use LWP::Simple;
use JSON;
use POSIX qw/strftime/;
my $base_url = "http://www.bing.com/";
my $json_url = "http://www.bing.com/HPImageArchive.aspx?format=js&n=1&mkt=en-US";
my $output_dir = "C:\\Downloads\\Wallpaper";
my $content = get($json_url)
or die "Failed to retrieve $json_url! $! $@";
my $json = from_json($content)
or die "Failed to parse json response! $! $@";
my $image_url = $base_url . $json->{images}[0]->{url};
print "Today's Image: $image_url";
my $date = strftime('%Y_%m_%d',localtime);
my $filename = "$output_dir\\$date.jpg";
print $filename;
my $status = getstore($image_url,$filename);
if($status == 200)
{
print "HTTP Response OK.";
my $size = -s $filename;
if($size > 0)
{
print "Retrieved $size bytes.";
}
elsif($size == 0)
{
print "Seems we have retrieved a zero-byte image.";
}
}
else
{
print "HTTP Response: $status";
}```
【问题讨论】:
-
看看Date::Calc。
-
例如,可以使用
DateTime做到这一点,这将使您能够做得更好。要开始显示,DateTime->today;返回一个设置为今天的对象(您可以将time_zone设置为默认floating,例如设置为local),然后$dt->subtract(days => 1);休息一天。那是你需要的吗?然后,您可以通过多种方式组织它每天循环播放。