Copy Source | Copy HTML #!/bin/bash cd /usr/isp/weather /usr/bin/wget 'http://informer.gismeteo.ru/xml/34214_1.xml' -O ./34214_1.xmlCopy Source | Copy HTML #!/bin/bash cd /usr/isp/weather /usr/bin/wget 'http://informer.gismeteo.ru/xml/34214_1.xml' -O ./34214_1.xmlCopy Source | Copy HTML #!/bin/bash cd /usr/isp/weather /usr/bin/wget 'http://informer.gismeteo.ru/xml/34214_1.xml' -O ./34214_1.xmlCopy Source | Copy HTML #!/bin/bash cd /usr/isp/weather /usr/bin/wget 'http://informer.gismeteo.ru/xml/34214_1.xml' -O ./34214_1.xml
Copy Source | Copy HTML #!/bin/bash cd /usr/isp/weather /usr/bin/wget 'http://informer.gismeteo.ru/xml/34214_1.xml' -O ./34214_1.xml
*/60 * * * * /usr/isp/weather/weather_up.sh
Copy Source | Copy HTMLEXEC再生天気/ Po_dannym_Gismeteo ""EXEC再生天気/ tod / dnem ""EXEC再生天気/ m / 15ogo ""EXEC再生の天気/バジェット ""EXEC再生天気/曇り/パスムルノ ""EXEC Playback天気/降水量/ dozhd '"" <br/>EXEC Playback weather / temp_vosduha_sostavit "" <br/> EXEC Playback weather / digits / 20 "" <br/> EXEC Playback weather / digits / 2 "" <br/> EXEC Playback weather / Do "" <br/> EXEC Playback天気/桁/ 20 "" <br/> EXEC再生天気/ gradusov_C "" <br/> EXEC再生天気/ Skorost'_vetra_sostavit ""EXECプレイバック天気/数字/ 5 ""EXEC再生天気/実行 ""EXECプレイバック天気/数字/ 3 ""EXECプレイバック天気/ metrov_v_sekundu ""EXEC再生天気/ Atmosfernoe_davlenie_sostavit ""EXEC再生天気/桁/ 700 ""EXEC再生天気/桁/ 40 ""EXEC再生天気/数字/ 7 ""EXEC再生天気/実行 ""EXEC再生天気/桁/ 700 ""EXEC再生天気/桁/ 40 ""EXECプレイバック天気/数字/ 5 ""EXEC再生天気/ milimetrov_rtutnogo_stolba ""
Copy Source | Copy HTML
Copy Source | Copy HTML私の$ date_name = {1 => [ "EXEC再生天気\ / m \ / 1ogo \" \ "\ n" ]、2 => [ "EXEC再生天気\ / m \ / 2ogo \" \ "\ n" ]、3 => [ "EXEC Playback weather \ / m \ / 3ogo \" \ "\ n" ]、.....
Copy Source | Copy HTML#!/ usr / bin / perl厳格な使用 ;XMLを使用 ::シンプル;Data :: Dumperを使用します。私の$ date_name = {1 => [ "EXEC再生天気\ / m \ / 1ogo \" \ "\ n" ]、2 => [ "EXEC再生天気\ / m \ / 2ogo \" \ "\ n" ]、3 => [ "EXEC Playback weather \ / m \ / 3ogo \" \ "\ n" ]、4 => [ "EXEC Playback weather \ / m \ / 4ogo \" \ "\ n" ]、5 => [ "EXEC再生天気\ / m \ / 5ogo \" \ "\ n" ]、6 => [ "EXEC Playback weather \ / m \ / 6ogo \" \ "\ n" ]、7 => [ "EXEC再生天気\ / m \ / 7ogo \" \ "\ n" ]、8 => [ "EXEC Playback weather \ / m \ / 8ogo \" \ "\ n" ]、9 => [ "EXEC Playback weather \ / m \ / 9ogo \" \ "\ n" ]、10 => [ "EXEC Playback weather \ / m \ / 10ogo \" \ "\ n" ]、11 => [ "EXEC Playback weather \ / m \ / 11ogo \" \ "\ n" ]、12 => [ "EXEC Playback weather \ / m \ / 12ogo \" \ "\ n" ]、13 => [ "EXEC Playback weather \ / m \ / 13ogo \" \ "\ n" ]、14 => [ "EXEC Playback weather \ / m \ / 14ogo \" \ "\ n" ]、15 => [ "EXEC Playback weather \ / m \ / 15ogo \" \ "\ n" ]、16 => [ "EXEC Playback weather \ / m \ / 16ogo \" \ "\ n" ]、17 => [ "EXEC Playback weather \ / m \ / 17ogo \" \ "\ n" ]、18 => [ "EXEC Playback weather \ / m \ / 18ogo \" \ "\ n" ]、19 => [ "EXEC Playback weather \ / m \ / 19ogo \" \ "\ n" ]、20 => [ "EXEC Playback weather \ / m \ / 10ogo \" \ "\ n" ]、21 => [ "EXEC Playback weather \ / m \ / 21ogo \" \ "\ n" ]、22 => [ "EXEC Playback weather \ / m \ / 22ogo \" \ "\ n" ]、23 => [ "EXEC Playback weather \ / m \ / 23ogo \" \ "\ n" ]、24 => [ "EXEC Playback weather \ / m \ / 24ogo \" \ "\ n" ]、25 => [ "EXEC Playback weather \ / m \ / 25ogo \" \ "\ n" ]、26 => [ "EXEC Playback weather \ / m \ / 26ogo \" \ "\ n" ]、27 => [ "EXEC再生天気\ / m \ / 27ogo \" \ "\ n" ]、28 => [ "EXEC Playback weather \ / m \ / 28ogo \" \ "\ n" ]、29 => [ "EXEC Playback weather \ / m \ / 29ogo \" \ "\ n" ]、30 => [ "EXEC Playback weather \ / m \ / 30ogo \" \ "\ n" ]、31 => [ "EXEC Playback weather \ / m \ / 31ogo \" \ "\ n" ]};私の$ hour_name = {0 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、1 => [ "EXEC再生天気\ /時間\ / chas \" \ "\ n" ]、2 => [ "EXEC再生天気\ /時間\ / chasa \" \ "\ n" ]、3 => [ "EXEC再生天気\ /時間\ / chasa \" \ "\ n" ]、4 => [ "EXEC再生天気\ /時間\ / chasa \" \ "\ n" ]、5 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、6 => [ "EXEC Playback weather \ / hour \ / chasov \" \ "\ n" ]、7 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、8 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、9 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、10 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、11 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、12 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、13 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、14 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、15 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、16 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、17 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、18 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、19 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、20 => [ "EXEC再生天気\ /時間\ / chasov \" \ "\ n" ]、21 => [ "EXEC Playback weather \ / hour \ / chas \" \ "\ n" ]、22 => [ "EXEC再生天気\ /時間\ / chasa \" \ "\ n" ]、23 => [ "EXEC再生天気\ /時間\ / chasa \" \ "\ n" ]、};私の$ m_name = {1 => [ "EXEC Playback weather \ / m \ / yanvarya \" \ "\ n" ]、2 => [ "EXEC Playback weather \ / m \ / fevralya \" \ "\ n" ]、3 => [ "EXEC Playback weather \ / m \ / marta \" \ "\ n" ]、4 => [ "EXEC Playback weather \ / m \ / aprelya \" \ "\ n" ]、5 => [ "EXEC Playback weather \ / m \ / maya \" \ "\ n" ]、6 => [ "EXEC Playback weather \ / m \ / iunya \" \ "\ n" ]、7 => [ "EXEC Playback weather \ / m \ / iylya \" \ "\ n" ]、8 => [ "EXEC Playback weather \ / m \ / avgusta \" \ "\ n" ]、9 => [ "EXEC Playback weather \ / m \ / sentyabrya \" \ "\ n" ]、10 => [ "EXEC Playback weather \ / m \ / octyabya \" \ "\ n" ]、11 => [ "EXEC Playback weather \ / m \ / noyabrya \" \ "\ n" ]、12 => [ "EXEC Playback weather \ / m \ / decabrya \" \ "\ n" ]};私の$ tod_name = {0 => [ "EXEC再生天気\ / tod \ / noch'u \" \ "\ n" ]、1 => [ "EXEC Playback weather \ / tod \ / utrom \" \ "\ n" ]、2 => [ "EXEC Playback weather \ / tod \ / dnem \" \ "\ n" ]、3 => [ "EXEC Playback weather \ / tod \ / vecherom \" \ "\ n" ]};私の$ cloudiness_name = {0 => [ "EXEC Playback weather \ / cloudiness \ / yasno \" \ "\ n" ]、1 => [ "EXEC Playback weather \ / cloudiness \ / malooblachno \" \ "\ n" ]、2 => [ "EXEC Playback weather \ / cloudiness \ / oblachno \" \ "\ n" ]、3 => [ "EXEC Playback weather \ / cloudiness \ / pasmurno \" \ "\ n" ]};私の$降水量名 = {4 => [ "EXEC再生天気\ /降水量\ / dozhd '\" \ "\ n" ]、5 => [ "EXEC再生天気\ /降水量\ / liven '\" \ "\ n" ]、6 => [ "EXEC再生天気\ /降水量\ /スネグ\" \ "\ n" ]、7 => [ "EXEC再生天気\ /降水量\ /スネグ\" \ "\ n" ]、8 => [ "EXEC再生天気\ /降水量\ / groza \" \ "\ n" ]、9 => [ "" ]、10 => [ "EXEC再生天気\ /降水量\ / bez_osadkov \" \ "\ n" ]};私の$ wind_direction_name = {0 => [ "EXEC Playback weather \ / wind_direction \ / severnyi \" \ "\ n" ]、1 => [ "EXEC Playback weather \ / wind_direction \ / severo-vostochnyi \" \ "\ n" ]、2 => [ "EXEC Playback weather \ / wind_direction \ / vostochno-uzhnyi \" \ "\ n" ]、3 => [ "EXEC再生天気\ / wind_direction \ / ugo-zapadnyi \" \ "\ n" ]};my $ xmlWeather = new XML :: Simple(keeproot => 1 、searchpath => "。" 、forcearray => 1 、suppressempty => '' );my $ xmlData1 = $ xmlWeather- > XMLin( '/usr/isp/weather/34214_1.xml' );my $ xmlData = $ xmlData1- > {MMWEATHER} [ 0 ]-> {REPORT} [ 0 ]-> {TOWN} [ 0 ]-> {FORECAST};$ | = 1 ;while (<STDIN>){ムシャムシャ( $ _ );長さ( $ _ )== 0の 場合、最後;}# "Po dannym Gismeteo"print "EXEC Playback weather \ / Po_dannym_Gismeteo \" \ "\ n" ;私の$ i = 0 ;for ( $ i = 0 ; $ i < 4 ; $ i ++){print $ tod_name- > { $ xmlData- > [ $ i ]-> {tod}}-> [ 0 ];print $ date_name- > { $ xmlData- > [ $ i ]-> {day}}-> [ 0 ];print $ m_name- > { $ xmlData- > [ $ i ]-> {month}}-> [ 0 ];#print "EXEC Playback weather \ / budet \" \ "\ n" ;print $ cloudiness_name- > { $ xmlData- > [ $ i ]-> {PHENOMENA} [ 0 ]-> {cloudiness}}-> [ 0 ];print $ precipit_name- > { $ xmlData- > [ $ i ]-> {PHENOMENA} [ 0 ]-> {precipitation}}-> [ 0 ];#温度print "EXEC Playback weather \ / temp_vosduha_sostavit \" \ "\ n" ;print digit_string( $ xmlData- > [ $ i ]-> {TEMPERATURE} [ 0 ]-> {max});print "EXEC Playback weather \ / Do \" \ "\ n" ;print digit_string( $ xmlData- > [ $ i ]-> {TEMPERATURE} [ 0 ]-> {min});print "EXEC Playback weather \ / gradusov_C \" \ "\ n" ;#ベターprint "EXEC Playback weather \ / Skorost'_vetra_sostavit \" \ "\ n" ;print digit_string( $ xmlData- > [ $ i ]-> {WIND} [ 0 ]-> {max});print "EXEC Playback weather \ / Do \" \ "\ n" ;print digit_string( $ xmlData- > [ $ i ]-> {WIND} [ 0 ]-> {min});print "EXEC Playback weather \ / metrov_v_sekundu \" \ "\ n" ;#Atmosfernoe davlenieprint "EXEC Playback weather \ / Atmosfernoe_davlenie_sostavit \" \ "\ n" ;print digit_string( $ xmlData- > [ $ i ]-> {PRESSURE} [ 0 ]-> {max});print "EXEC Playback weather \ / Do \" \ "\ n" ;print digit_string( $ xmlData- > [ $ i ]-> {PRESSURE} [ 0 ]-> {min});print "EXEC Playback weather \ / milimetrov_rtutnogo_stolba \" \ "\ n" ;}#================================================= ==================================================#================================================= ==================================================#================================================= ==================================================sub digit_string {私の$桁 =シフト;ローカル$ _ ;$桁 =〜s / ^-+ //;の 場合 、 $記号 = 1$ digit =〜s #^ 0 + ##;my( $ b_dig 、 $ s_dig )=(split(m/[,.†/、 $ digit 、 2 ));$ s_dig = "" ;##「余分な」文字から数値を消去します(100_000,43)#if (定義済み$ b_dig および長さ$ b_dig ){#$ b_dig =〜s#[^ \ d] ## sg;} else {$ b_dig = "" ;}if (定義された$ s_dig および長さ$ s_dig ){#$ s_dig =〜s#[^ \ d] ## sg;} else {$ s_dig = "" ;}##丸めの結果として、ペニーを切り上げる#ルーブルを取得し、b_dig(ルーブル)に追加します##if(sprintf( '%0.2f'、 "0. $ s_dig")== 1){#$ b_dig ++;#$ s_dig = '00';#} else {#$ s_dig = substr(sprintf( '%0.2f'、 "0. $ s_dig")、2);#}#my @ array = split( //、($ b_dig || 0));##数値のビット容量を決定します。#my $ class_id = int(スカラー(@ array )/ 3 );$ class_id ++ if (スカラー(@ 配列 )% 3 );##サポートされていない容量。#$ class_id > 5の 場合、 $ digitを 返します。私の$ digits_name = {0 => [ "EXEC Playback weather \ / digits \ / 0 \" \ "\ n" 、 "" 、 "" ]、1 => [[ "EXEC Playback weather \ / digits \ / 1 \" \ "\ n" 、 "EXEC Playback weather \ / digits \ / 1a \" \ "\ n" ]、 "EXEC Playback weather \ / digits \ / 10 \ "\" \ n " 、 " EXEC再生天気\ /数字\ / 100 \ "\" \ n " ]、2 => [[ "EXEC Playback weather \ / digits \ / 2 \" \ "\ n" 、 "EXEC Playback weather \ / digits \ / 2e \" \ "\ n" ]、 "EXEC Playback weather \ / digits \ / 20 \ "\" \ n " 、 " EXEC再生天気\ /数字\ / 200 \ "\" \ n " ]、3 => [ "EXEC再生天気\ /数字\ / 3 \" \ "\ n" 、 "EXEC再生天気\ /数字\ / 30 \" \ "\ n" 、 "EXEC再生天気\ /数字\ / 300 \ "\" \ n " ]、4 => [ "EXEC再生天気\ /数字\ / 4 \" \ "\ n" 、 "EXEC再生天気\ /数字\ / 40 \" \ "\ n" 、 "EXEC再生天気\ /数字\ / 400 \ "\" \ n " ]、5 => [ "EXEC再生天気\ /数字\ / 5 \" \ "\ n" 、 "EXEC再生天気\ /数字\ / 50 \" \ "\ n" 、 "EXEC再生天気\ /数字\ / 500 \ "\" \ n " ]、6 => [ "EXEC再生天気\ /数字\ / 6 \" \ "\ n" 、 "EXEC再生天気\ /数字\ / 60 \" \ "\ n" 、 "EXEC再生天気\ /数字\ / 600 \ "\" \ n " ]、7 => [ "EXEC再生天気\ /数字\ / 7 \" \ "\ n" 、 "EXEC再生天気\ /数字\ / 70 \" \ "\ n" 、 "EXEC再生天気\ /数字\ / 700 \ "\" \ n " ]、8 => [ "EXEC再生天気\ /数字\ / 8 \" \ "\ n" 、 "EXEC再生天気\ /数字\ / 80 \" \ "\ n" 、 "EXEC再生天気\ /数字\ / 800 \ "\" \ n " ]、9 => [ "EXEC再生天気\ /数字\ / 9 \" \ "\ n" 、 "EXEC再生天気\ /数字\ / 90 \" \ "\ n" 、 "EXEC再生天気\ /数字\ / 900 \ "\" \ n " ]、};私の$ dec_digits = {11 => "EXEC再生天気\ /数字\ / 11 \" \ "\ n" 、12 => "EXEC再生天気\ /数字\ / 12 \" \ "\ n" 、13 => "EXEC再生天気\ /数字\ / 13 \" \ "\ n" 、14 => "EXEC再生天気\ /数字\ / 14 \" \ "\ n" 、15 => "EXEC再生天気\ /数字\ / 15 \" \ "\ n" 、16 => "EXEC再生天気\ /数字\ / 16 \" \ "\ n" 、17 => "EXEC再生天気\ /数字\ / 17 \" \ "\ n" 、18 => "EXEC再生天気\ /数字\ / 18 \" \ "\ n" 、19 => "EXEC再生天気\ /数字\ / 19 \" \ "\ n"};私の$ digits_class = {'-1' => [ 1 、 "" 、 "" 、 "" ]、0 => [ 0 、 "" 、 "" 、 "" ]、1 => [ 1 、 "EXEC再生天気\ /数字\ / tysiacha \" \ "\ n" 、 "EXEC再生天気\ /数字\ / tysiach \" \ "\ n" 、 "EXEC再生天気\ /数字\ / tysiachi \ "\" \ n " ]、2 => [ 0 、 "EXEC再生天気\ /数字\ /百万\" \ "\ n" 、 "EXEC再生天気\ /数字\ / millionov \" \ "\ n" 、 "EXEC再生天気\ /数字\ / milliona \ "\" \ n " ]、3 => [ 0 、 "EXEC再生天気\ /数字\ /ミリアード\" \ "\ n" 、 "EXEC再生天気\ /数字\ /ミリアルドフ\" \ "\ n" 、 "EXEC再生天気\ /数字\ /ミリアルダ\ "\" \ n " ]、4 => [ 0 、 "EXEC再生天気\ /数字\ /兆\" \ "\ n" 、 「EXEC再生天気\ /数字\ / trillionov \ "\" \ n " 、 " EXEC再生天気\ /数字\ / trilliona \ "\" \ n " ]、};##左の「3」の長さを決定する...#私の$ id = 0 ;except((scalar @ array )% 3 ){$ id = 2 ;} else {$ id =((scalar @ array )% 3 ) -1 ;}私の$ str = '' ;私の$ sub_str = 0 ;私の$ tvar = 0 ;if ( $ array [ 0 ] == 0 ){##ルーブルがまだゼロの場合、「ゼロルーブル」と書き込み、#必要ない場合は、次の行をコメントアウトしてください...#$ str 。= $ digits_name- > { '0' }-> [ 0 ]。 」 $ digits_class- > { '0' }-> [ 2 ]。 '' ;} else {while (defined( $ _ = shift @ array )){if ( $ _ > 0 ){if ( $ _ == 1 および $ id == 1 ){##sub num()で使用する量を数える#$ sub_str + = $ _ * 10 ;if (defined( $ tvar = shift @ array ) and $ tvar > 0 ){$ str 。= $ dec_digits- > { $ _ 。 $ tvar };$ sub_str + = $ tvar ;$ id- ;} else {unshift @ array 、 $ tvar ;if (ref $ digits_name- > { $ _ }-> [ $ id ] eq 'ARRAY' ){#$ str。= $ digits_name-> {$ _}-> [$ id]-> [$ digits_class-> {$ class_id-1}-> [0]];} else {$ str 。= $ digits_name- > { $ _ }-> [ $ id ];}}} else {##sub num()で使用する量を数える#$ sub_str + =( $ _ *( 10 ** $ id ));if (ref $ digits_name- > { $ _ }-> [ $ id ] eq 'ARRAY' ){$ str 。= $ digits_name- > { $ _ }-> [ $ id ]-> [ $ digits_class- > { $ class_id - 1 }-> [ 0 ]];} else {$ str 。= $ digits_name- > { $ _ }-> [ $ id ];}}$ str 。= '' ;}if (- $ id ==- 1 ){$ id = 2 ;$ class_id- ;if ( $ sub_str > 0 ){$ str 。= num( $ sub_str 、(@ { $ digits_class- > { $ class_id }})[ 1 .. 3 ])。 '' ;} elsif( $ class_id == 0 ){$ str 。= $ digits_class- > { $ class_id }-> [ 2 ]。 '' ;}$ sub_str = 0 ;}}}$ str 。= $ s_dig 。 」 num( $ s_dig 、(@ { $ digits_class- > { '-1' }})[ 1 .. 3 ]);if (定義された$記号 ){$ str = "EXEC再生天気\ /数字/マイナス\" \ "\ n" $ str ;}$ s_dig = substr( $ str 、 0、1 );##使用された場合、より簡単であることが判明#ロケールとucfirstを使用するよりも...#IFsubstr( $ str 、 0、1 、 $ s_dig );}$ strを 返し ます 。}##お金の数を言葉の行に変換するときに使用されます..#sub num {私の$ d1 = $ _ [ 0 ]% 10 ;my $ d2 = int(( $ _ [ 0 ]% 100 )/ 10 );return $ _ [ 2 ] if (( $ d2 == 1 ) または ( $ d1 =〜/ [ 05-9 ] /));return $ _ [ 1 ] if ( $ d1 == 1 );return $ _ [ 3 ];}
Copy Source | Copy HTMLexten => XXXX、1、待機(1)exten => XXXX、n、回答()exten => XXXX、n、Agi(/usr/isp/weather/weather.pl)exten => XXXX、n、ハングアップ()
Source: https://habr.com/ru/post/J70771/More articles:樹皮カラーAndroidとGoogle Developer Communityの競合Google Earthが気候シミュレーターを開始20元従業員からのHPの秘密11歳の誕生日Habra管理者はhabrazhzhenokを非表示にします!視点Mobii ION 230何をどのように書くか(パート1. EclipseとJava)限られたスペースに急速に蓄積する状況での情報ゴミの管理1Cでお金を稼ぐことを学ぶAll Articles