منبع اصلی نوشتار زیر در این لینک قرار دارد

وضعیت آب و هوا

یکی از مسائلی که گاهی برای من مهم میشه، دونستن وضعیت آب و هوای بعضی شهرهاست. خصوصا اینکه به خاطر کارم توی هفته چندین روز باید به یه شهر دیگه برم.
معمولا چند تا سایت رو دم دست داشتم و چک میکردم وضعیت رو، ولی بعد از تنظیم conky که همین چند روز پیش اتفاق افتاد و من دست از تنبلی برداشتم، به این نتیجه رسیدم داشتن وضعیت آب و هوایی هر دو شهر خودم و شهر محل کارم توی conky کاملا واجبه :)) این شد که گشتم دنبال اسکریپتهای مربوط به آب و هوا توی سایتهای مختلف، و معروفترینشون weather.com بود که متاسفانه رایگان نیست، و کلا به درد ما نمیخوره چرا که دست کم شهرهایی که من باهاش کار داشتم رو نداشت.
این شد که گشتم دنبال یک جایگزین و accuweather.com بهترین گزینه بود.
یه قابلیت جالب این سایت، دادن وضعیت آب و هوا به صورت RSS برای یک نقطه خاصه. کافیه کد شهر رو داشته باشی، مثلا برای تهران این لینک میشه :


http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=MEA|IR|IR026|TEHRAN|&u=1

metric میتونه صفر باشه برای فارنهایت و ۱ باشه برای سیلیسیوس. u هم ربطی به قضیه نداره و فقط فرمت پاسخ رو از rss به xml عوض میکنه که اینجا مد نظر نبود.
میمونه locCode که شاید بیشترین وقت من برای پیدا کردن این locCode گذشت :)) ساختار سایت accuweather کلا تغییر کرده و این کدها رو من که نتونستم تو خود سایت پیدا کنم، و در نهایت با بدبختی تونستم یه فایل حاوی خیلی از این کدها پیدا کنم که میذارمش اینجا و شما میتونید دانلودش کنید و امیدوارم شهرتون توش باشه :)
اما اسکریپت، که من اونو از توی فروم Archlinux پیداش کردم و کار خودم نیست :

# !/usr/bin/bash
METRIC=1 #Should be 0 or 1; 0 for F, 1 for C
LOCCOD="MEA|IR|IR026|TEHRAN" 

if [ -z $1 ] && [ -x $LOCCOD ] ; then
        echo
        echo "USAGE: $0 [locationcode]"
        echo
        exit 0;
elif [ ! -z $1 ] ; then
        LOCCOD=$1
fi


wget -q http://rss.accuweather.com/rss/liveweather_rss.asp\?metric\=${METRIC}\&locCode\=$LOCCOD -O - | awk \
'/Currently:/ {CurWeather=$0}
/[0-9] Forecast<\/title>/ {nr=NR+5}
NR==nr    {postIndx[++x]=$0}
# x>2    {exit}
END{
    split(CurWeather,tmp,"Currently: ")
    split(tmp[2],tmp1,"<")
    CurWeather=sprintf("%s",tmp1[1])
    sub(":",",",CurWeather)
    for(x in postIndx){
    split(postIndx[x],tmp,";|&")
    split(tmp[1],tmp,">")
    split(tmp[2],statement," C ") # substitute C for F if metric differs
    split(tmp[2],temp)
    forecast[++y]=sprintf("%d to %dC %-15s",temp[5],temp[2],statement[3])
    }
    printf("Now:      %s\nToday:    %s\nTomorrow: %s",CurWeather,forecast[1],forecast[2])
}'

خروجیش یه چیزی تو این مایه هاست :

Now:      Intermittent Clouds, -4C
Today:    -6 to 0C Increasing clouds 
Tomorrow: -5 to 0C Clouds and sun

حالا برای استفاده از خروجی توی conky خیلی ساده میتونید چنین چیزی رو توی تنظیمات conky بذارید :

${execi 300 /path/to/script/myaccuw.sh}

پ.ن : به هیچ وجه نمیتونم صفحه post-new رو توی WP باز کنم! برای زدن پست جدید مجبور شدم تو پیشخوان یه پیشنویس ایجاد کنم و بعد اونو ویرایش کنم (عجیبه که میتونم ویرایش کنم بی مشکل!) کسی راه حل یا دلیلی سراغ نداره برای این قضیه؟؟؟؟



برچسب ها : , , , , , , , ,