deseven

Yahoo Weather

May 12th, 2012
489
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.07 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. ImagesDir="/srv/informers/img"
  4. Data=`curl -s "http://weather.yahooapis.com/forecastrss?p=RSXX1629&u=c" 2>/dev/null`
  5.  
  6. function ConditionToString {
  7.     case "$1" in
  8.         0)
  9.             echo "Торнадо"
  10.             ;;
  11.         1)
  12.             echo "Тропический шторм"
  13.             ;;
  14.         2)
  15.             echo "Ураган"
  16.             ;;
  17.         3)
  18.             echo "Серьезная гроза"
  19.             ;;
  20.         4)
  21.             echo "Гроза"
  22.             ;;
  23.         5)
  24.             echo "Дождь со снегом"
  25.             ;;
  26.         6)
  27.             echo "Дождь со льдом"
  28.             ;;
  29.         7)
  30.             echo "Снего со льдом"
  31.             ;;
  32.         8)
  33.             echo "Морозная изморось"
  34.             ;;
  35.         9)
  36.             echo "Изморось"
  37.             ;;
  38.         10)
  39.             echo "Ледяной дождь"
  40.             ;;
  41.         11)
  42.             echo "Дождь"
  43.             ;;
  44.         12)
  45.             echo "Дождь"
  46.             ;;
  47.         13)
  48.             echo "Хлопья снега"
  49.             ;;
  50.         14)
  51.             echo "Легкий снег"
  52.             ;;
  53.         15)
  54.             echo "Пурга"
  55.             ;;
  56.         16)
  57.             echo "Снег"
  58.             ;;
  59.         17)
  60.             echo "Град"
  61.             ;;
  62.         18)
  63.             echo "Дождь со снегом"
  64.             ;;
  65.         19)
  66.             echo "Пыльно"
  67.             ;;
  68.         20)
  69.             echo "Туман"
  70.             ;;
  71.         21)
  72.             echo "Дымка"
  73.             ;;
  74.         22)
  75.             echo "Дымно"
  76.             ;;
  77.         23)
  78.             echo "Неспокойно"
  79.             ;;
  80.         24)
  81.             echo "Ветрено"
  82.             ;;
  83.         25)
  84.             echo "Морозно"
  85.             ;;
  86.         26)
  87.             echo "Облачно"
  88.             ;;
  89.         27)
  90.             echo "Облачно"
  91.             ;;
  92.         28)
  93.             echo "Облачно"
  94.             ;;
  95.         29)
  96.             echo "Легкая облачность"
  97.             ;;
  98.         30)
  99.             echo "Легкая облачность"
  100.             ;;
  101.         31)
  102.             echo "Ясно"
  103.             ;;
  104.         32)
  105.             echo "Солнечно"
  106.             ;;
  107.         33)
  108.             echo "Ясно"
  109.             ;;
  110.         34)
  111.             echo "Ясно"
  112.             ;;
  113.         35)
  114.             echo "Дождь с градом"
  115.             ;;
  116.         36)
  117.             echo "Жара"
  118.             ;;
  119.         37)
  120.             echo "Редкие грозы"
  121.             ;;
  122.         38)
  123.             echo "Рассеяные грозы"
  124.             ;;
  125.         39)
  126.             echo "Рассеяные грозы"
  127.             ;;
  128.         40)
  129.             echo "Редкий дождь"
  130.             ;;
  131.         41)
  132.             echo "Сильный снег"
  133.             ;;
  134.         42)
  135.             echo "Плотный снег"
  136.             ;;
  137.         43)
  138.             echo "Сильный снег"
  139.             ;;
  140.         44)
  141.             echo "Местами облачно"
  142.             ;;
  143.         45)
  144.             echo "Ливень"
  145.             ;;
  146.         46)
  147.             echo "Вьюга"
  148.             ;;
  149.         47)
  150.             echo "Редкие грозы"
  151.             ;;
  152.         *)
  153.             echo "Неизвестно"
  154.             ;;
  155.     esac
  156. }
  157.  
  158. function DayToString {
  159.     case "$1" in
  160.         "Mon")
  161.             echo "Понедельник"
  162.             ;;
  163.         "Tue")
  164.             echo "Вторник"
  165.             ;;
  166.         "Wed")
  167.             echo "Среда"
  168.             ;;
  169.         "Thu")
  170.             echo "Четверг"
  171.             ;;
  172.         "Fri")
  173.             echo "Пятница"
  174.             ;;
  175.         "Sat")
  176.             echo "Суббота"
  177.             ;;
  178.         "Sun")
  179.             echo "Воскресенье"
  180.             ;;
  181.         *)
  182.             echo "Конец света"
  183.             ;;
  184.     esac
  185. }
  186.  
  187. if [ ! -z "$Data" ]; then
  188.     echo '<div class="mainlevel"><div id="weather">'
  189.     CurTemp=`echo "$Data" | xmlstarlet sel -T -t -v "/rss/channel/item/yweather:condition/@temp"`
  190.     if [ "$CurTemp" -gt 0 ]; then
  191.         CurTemp="+$CurTemp"
  192.     fi
  193.     CurCondition=`echo "$Data" | xmlstarlet sel -T -t -v "/rss/channel/item/yweather:condition/@code"`
  194.     CurConditionImage="$CurCondition.gif"
  195.     if [ ! -f "$ImagesDir/$CurCondition.gif" ]; then
  196.         curl -s -o "$ImagesDir/$CurCondition.gif" "http://l.yimg.com/a/i/us/we/52/$CurConditionImage"
  197.     fi
  198.     CurCondition=`ConditionToString "$CurCondition"`
  199.     CurHumidity=`echo "$Data" | xmlstarlet sel -T -t -v "/rss/channel/yweather:atmosphere/@humidity"`
  200.     CurWind=`echo "$Data" | xmlstarlet sel -T -t -v "/rss/channel/yweather:wind/@speed"`
  201.     CurWind=`echo "$CurWind*1000/60/60" | bc`
  202.     echo '<div id="today"><strong>Сейчас в Надыме</strong><br/>
  203. <h1><img style="vertical-align:middle;" src="data/weather.gif" alt="" />'"$CurTemp"'</h1>
  204. '"$CurCondition"'<br/>
  205. Ветер: '"$CurWind"'м/с<br/>
  206. Влажность: '"$CurHumidity"'%</div>'
  207.     Forecast=`echo "$Data" | xmlstarlet sel -T -t -m "/rss/channel/item/yweather:forecast" -v "concat(@day,'|',@code,'|',@low,'|',@high,'|')"`
  208.     Forecast1Day=`echo "$Forecast" | cut -f1 -d'|'`
  209.     Forecast1Day=`DayToString "$Forecast1Day"`
  210.     Forecast1Condition=`echo "$Forecast" | cut -f2 -d'|'`
  211.     Forecast1ConditionImage="$Forecast1Condition.gif"
  212.     if [ ! -f "$ImagesDir/$Forecast1Condition.gif" ]; then
  213.         curl -s -o "$ImagesDir/$Forecast1Condition.gif" "http://l.yimg.com/a/i/us/we/52/$Forecast1ConditionImage"
  214.     fi
  215.     Forecast1Condition=`ConditionToString "$Forecast1Condition"`
  216.     Forecast1MinTemp=`echo "$Forecast" | cut -f3 -d'|'`
  217.     Forecast1MaxTemp=`echo "$Forecast" | cut -f4 -d'|'`
  218.     if [ "$Forecast1MinTemp" -gt 0 ]; then
  219.         Forecast1MinTemp="+$Forecast1MinTemp"
  220.     else
  221.         if [ "$Forecast1MaxTemp" -gt 0 ]; then
  222.             Forecast1MaxTemp="+$Forecast1MaxTemp"
  223.         fi
  224.     fi
  225.     Forecast2Day=`echo "$Forecast" | cut -f5 -d'|'`
  226.     Forecast2Day=`DayToString "$Forecast2Day"`
  227.     Forecast2Condition=`echo "$Forecast" | cut -f6 -d'|'`
  228.     Forecast2ConditionImage="$Forecast2Condition.gif"
  229.     if [ ! -f "$ImagesDir/$Forecast2Condition.gif" ]; then
  230.         curl -s -o "$ImagesDir/$Forecast2Condition.gif" "http://l.yimg.com/a/i/us/we/52/$Forecast2ConditionImage"
  231.     fi
  232.     Forecast2Condition=`ConditionToString "$Forecast2Condition"`
  233.     Forecast2MinTemp=`echo "$Forecast" | cut -f7 -d'|'`
  234.     Forecast2MaxTemp=`echo "$Forecast" | cut -f8 -d'|'`
  235.     if [ "$Forecast2MinTemp" -gt 0 ]; then
  236.         Forecast2MinTemp="+$Forecast2MinTemp"
  237.     else
  238.         if [ "$Forecast2MaxTemp" -gt 0 ]; then
  239.             Forecast2MaxTemp="+$Forecast2MaxTemp"
  240.         fi
  241.     fi
  242.     echo '<div class="forecast-container"><ul id="forecast">
  243. <li><strong>'"$Forecast1Day"'</strong><br/>
  244. <h1><img style="vertical-align:middle;" src="data/weather1.gif" alt="" />'"$Forecast1MinTemp"' ... '"$Forecast1MaxTemp"'</h1>
  245. '"$Forecast1Condition"'</li>
  246.  
  247. <li><strong>'"$Forecast2Day"'</strong><br/>
  248. <h1><img style="vertical-align:middle;" src="data/weather2.gif" alt="" />'"$Forecast2MinTemp"' ... '"$Forecast2MaxTemp"'</h1>
  249. '"$Forecast2Condition"'</li>
  250. </ul></div>'
  251.     cp -f "$ImagesDir/$CurConditionImage" "/var/www/home-nadym.ru/data/weather.gif"
  252.     cp -f "$ImagesDir/$Forecast1ConditionImage" "/var/www/home-nadym.ru/data/weather1.gif"
  253.     cp -f "$ImagesDir/$Forecast2ConditionImage" "/var/www/home-nadym.ru/data/weather2.gif"
  254.     echo "</div></div>"
  255. fi
Add Comment
Please, Sign In to add comment