یکی از مسائلی که گاهی برای من مهم میشه، دونستن وضعیت آب و هوای بعضی شهرهاست. خصوصا اینکه به خاطر کارم توی هفته چندین روز باید به یه شهر دیگه برم.
معمولا چند تا سایت رو دم دست داشتم و چک میکردم وضعیت رو، ولی بعد از تنظیم 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 باز کنم! برای زدن پست جدید مجبور شدم تو پیشخوان یه پیشنویس ایجاد کنم و بعد اونو ویرایش کنم (عجیبه که میتونم ویرایش کنم بی مشکل!) کسی راه حل یا دلیلی سراغ نداره برای این قضیه؟؟؟؟