分页: 1 / 2

habak的天气

发表于 : 2010-09-01 13:23
eexpress
废弃了cairo2png.pl
nnnnnd

代码: 全选

☛ dog habak-w.pl 
`$ENV{HOME}/bin/weather.pl`;
$logf="/tmp/weather";
$icondir="$ENV{HOME}/媒体/分类主题图片▲/天气/";
chdir $icondir;
open REC,$logf; @_=<REC>; close REC;
$cmd="habak ~/.fvwm/desktop.jpg -mf ~/.fonts/字体/中文字体/方正粗宋简体.ttf -mh 16 ";
$year="";$month="";
$x0=100;$y0=100;$w0=150;$h0=50;
for (@_){
chomp;
($sign,$date,$weather,$temp,$wind)=split "\t",$_;
($y,$m,$d)=split "-",$date;
if($year==""){$year=$y;}elsif($year==$y){$y="";}else{$year=$y;}
if($month==""){$month=$m;}elsif($month==$m){$m="";}else{$month=$m;}
$y.="年" if($y);
$m.="月" if($m);
$d.="日";
if($sign eq ">"){$color="200,200,50,200";}elsif($sign eq "-"){$color="200,200,200,200";}else{$color="50,160,50,200";}
$y1=$y0;
$cmd.="-mc $color -mp $x0,$y1 -ht $m$d ";
$y1+=$h0;
$_=$weather; $x2=$x0+20; $y2=$y1+30;
s/小雨/10-小雨.png/;s/多云/26-多云.png/;s/晴/32-晴.png/;s/转/ -mp $x2,$y2 -hi /;s/阵雨/09-阵雨.png/;
$cmd.="-mp $x0,$y1 -hi $_ ";
$y1+=3.5*$h0; $_=$temp; s/°C/℃/g;
$cmd.="-mp $x0,$y1 -ht $_ ";
$y1+=$h0;
$cmd.="-mp $x0,$y1 -ht $wind ";
$x0+=$w0;
}
print $cmd;
`$cmd`;

Re: habak的天气

发表于 : 2010-09-01 13:28
枫叶饭团
dog. :em05 :em05

Re: habak的天气

发表于 : 2010-09-01 13:32
snowtown86
那个小手,还有以前的小电话,都是怎么弄的呢?

Re: habak的天气

发表于 : 2010-09-01 14:10
qiang_liu8183
8错 :em11

Re: habak的天气

发表于 : 2010-09-01 14:23
xiooli
habak 看起来很好玩的样子,不过 kde 的 plasma-desktop 覆盖了 root 窗口,郁闷 :em20

Re: habak的天气

发表于 : 2010-09-01 21:32
eexpress

代码: 全选

☛ dog weather.pl 
$logf="/tmp/weather";
$term_color_cmd="s/^>/\e[1;33m/;s/^ /\e[0m/;s/^-/\e[32m/;";
@t=localtime(time);$today=($t[5]+1900)."-".($t[4]+1)."-".$t[3];
if(open(REC,$logf)){
@_=<REC>; close REC;
if(grep /^>\t$today/o,@_){              #是今天取得的现成数据。直接输出。
        for (@_){ eval $term_color_cmd; print; }
        exit;
        }
}
use LWP::Simple;
use Encode;
$_=get("http://qq.ip138.com/weather/hunan/ChangSha.wml");
if($_){
$_=encode("utf8",$_);
s/.*?(?=\d{4}-\d)//s;s/\n.*//s; #去掉头尾无用信息。
s/<br\/><br\/><b>/\n/g; s/<br\/>/\t/g; s/<\/b>//g; s/<b>//g;
s/℃/°C/g; s/~/-/g; s/\x0d/\n/g;
@_=split "\n",$_;
} else{
if(undef @_){exit;}     #无网页,无log。退出。
}
open REC,">$logf";
use Date::Parse qw/str2time/;
for (@_){
s/^.\t//;       #重读入的情况时,去掉原始的标记。
if (/$today/){
        $_=">\t$_";
}else{
        ($day,@t)=split "\t";
        @t=localtime str2time($day);    # 检查下星期
        if(($t[6]==0)||($t[6]==6)){
        $_="-\t$_";
        }else {$_=" \t$_";}
}
$_.="\n";
print REC;
eval $term_color_cmd; print;
}
close REC;
补下。复杂了点的。为了适合conky cairo term habak 4种环境应用的折中。。。

Re: habak的天气

发表于 : 2010-09-01 22:15
adam8157
强烈要求ee把所有的配置和脚本挂到github上

馋...

Re: habak的天气

发表于 : 2010-09-01 22:48
photor
:em09

Re: habak的天气

发表于 : 2010-09-02 10:05
东方不坏
很不错的样子。

Re: habak的天气

发表于 : 2010-09-06 17:45
xiooli
靠,逼我用绝招使用svg做背景,用脚本改svg文件 :em11

Re: habak的天气

发表于 : 2010-09-06 21:27
eexpress
加了个农历的。有人需要。

代码: 全选

$_=sprintf("/usr/bin/calendar -A 0 -t %04d%02d%02d",$y,$m,$d);
@lunar=`$_`;
$_=$lunar[0];chomp;s/^.*\d\s*//;$lunar[0]=$_;
.....
$cmd.="-mc $color -mp $x0,$y1 -ht \"$m$d - $lunar[0]\" ";

代码: 全选

☛ calendar 
 9月 06         廿八
 9月 07         廿九
 9月 08         白露
 9月 09         初二
 9月 10         教师节 (Teachers' Day), 2009
 9月 10         初三
 9月 11         初四
 9月 12         中秋节 (Mid-Autumn Festival), 2011
 9月 12         初五
 9月 13         初六

Re: habak的天气

发表于 : 2010-09-06 21:31
eexpress

Re: habak的天气

发表于 : 2010-09-09 21:16
roylez
看不下去了。蛋疼的神,满是"$$"的脚本。

Re: habak的天气

发表于 : 2010-09-17 17:34
tusooa
农历,用LibLunar.搜索 lc-农历.py
你的那个,要自己下载的,这个不用。
天气,用谷歌的。搜索 wg-天气.perl
然后,这个太复杂,吾的可以放到conky里面用。

Re: habak的天气

发表于 : 2010-09-25 10:28
eexpress

代码: 全选

diff --git a/bin/weather.pl b/bin/weather.pl
index b209b3a..872608e 100755
--- a/bin/weather.pl
+++ b/bin/weather.pl
@@ -1,5 +1,9 @@
 #!/usr/bin/perl
 
+until($_[0]=~/^Server:/){
+@_=`nslookup -timeout=1 -retry=1 www.163.com`;
+}
+
 $logf="$ENV{HOME}/.weather";
 $conkyf="$ENV{HOME}/bin/conky/weather.txt";
加了几行。开机就等联网,再取网页。