indicator-china-weather-1.1.0/data/ui/Assistant.ui000644 001750 001750 00000024230 12277056351 022363 0ustar00saucysaucy000000 000000 12 编辑地点 mouse 400 200 False True 12 6 True 0 0 6 请先找到你所在的地点(拼音即可): True word-char 0 True 12 6 True True True 0 True 查找 1 1 选择一个地点 True 12 6 True 0 请输入该地点的名称: False 0 True True False 1 命名 True 12 True 0 6 请仔细阅读下面的选择。如果有不正确的地方,请返回并选择正确的选项。 True word-char False 0 True 12 True True 5 True False False 0 True 0 标签: True False 1 True 0 <b>Home</b> True 2 False 0 True 5 True False False 0 True 0 地点: True False 1 True 0 <b>Orange, Texas</b> True 2 False 1 False 1 confirm 回顾选择 indicator-china-weather-1.1.0/icons/n1.gif000644 001750 001750 00000003035 12277056351 020645 0ustar00saucysaucy000000 000000 GIF89a00mxq4Uyה6Uv >]sy"@a&DfǓ6X|1QuF^v:Z6K\zue|)Hj[jkYv۞Kd#Bb/M8W7Y~<['Fh?`4T◷+Hg𷲍~2P1O3R2Q0N8Z!,00UgU~~TT{z}|S}<;, q|T2wdkk;S TyTh Hp 4Yh ) JHqbLhD8C\Aɒ| 0pD Ms͛7edžd IH $HuFիJhu8!dt]v-p M̞BAܿBa4`6ˠC+ KLp˘1s"] ӗͨ^Z9mH40@c*X[ӡeڶ; μsKi0ËPT9,?]i E~&}84`RpFTha^TAq\v(b2?>@A@BABCEDFEHGGIJIIJHMLMLOORREUUWZZN]M`Vcgj`\frqwvqy}n׀y܍ޝ9JH^Yd{VloÍ˻ѥѿ~ՠkUԾ\܏KPV]|7=BGBNU[k݁ $%)-/!,000ᓥ*\P (ԘhBŋe`""CV((+ܲ%eH.^x%W/8s%/^It0^1sCӧP1uFgfHԌ 4paٳhӚ= k֘{M16(s߿+ƛ4ݫ74'VÆ4ز58*Oc=ÏnYΆ$j ȶ:H!@24[7“;Oӭ:C;C .Bn!+!4,=#:N;sCO%rH+qHBP<ۏ=#8k*_9hC!̻ļH"H>;r;3N#;ݚ9D1<ԋT=DUHm?;O< p܃;t5D, x/ˆ/wH8S+4989!4>n/z׭/4#D0¹Ѥ#?D L8(x<}4mSN:l97$ _\a(p4H@iHC ֈ7 VP8-l$$ FCa L h@F`67$H(Xc`!%"AENb 0 O< $@J1%@D6q P"0fH|$"1>q+#07Rp/)F620.x$,AJJXb&q 8:@< ]dEQj`(.Tx6,q f6D&AȦ6(؂`2MZ4f 84)hfH}FQ` `d *` " QLhBՄ!mn+'P:EPP` @CB")$X)0Q50P4` eL2&`1j4XDN7M8` kXoAMvR mgP x@R>74 '6щ#~ | EJ`D \  NlD:A~$1j4J !eL'[* v N|B IP@\7 h Vv xm- P"P'O`.A Jx0.a &H0.U*xսnn Pcy@ RBI P@Q:/`+Ps[`]슀F@P"a EEXŤ@$VGxcXJTpN c@(Z\SP܄( C#Xa xA J J Q4)L:p\$Tb4+"dS漊9 p ah1hSBpMUc8ŜS>;հ_j'@A޳+V U"س*T xBXЎ[A Y ,`VBOx, gۮp+j1goA cȢֆ,d1a#ܲpg1sSj; Wc#,c$cŐ,!X;;indicator-china-weather-1.1.0/icons/d27.gif000644 001750 001750 00000005527 12277056351 020733 0ustar00saucysaucy000000 000000 GIF89a00:;>@BABCBBDMPOcbqhbjŅw֑⡽ڲ;;;;<=<>==?@@BABCEEDFFFGJJIFC>:}ALNMONMOQPOSUUFXRA|]MZN^h[m[sXjvcbwzyri||qm҂ymǁvАtŕ؛ۢТܧS!,00$*\P!i xC >-r<\ӰGrxaC!"lF$ɲ˗0_aFJ9qg@Ν6<"%G8q &jϠ>uCGׯ:qC@&>ֹs t~ ~  `8u;$ w <8HBhaGϞ"A~(dC lO"qk'6={ 4NF4lwQ=hߞËG@z"CiYۡBÿ= "`h`2HRH&TPA9 3 /dRH ҇bb $+HP|· ldB,bA*,bd"$H$ |5p;aI"$D#0 @IoiF 0pC '!H#$@)$L" k) ܐ@r(B&0"V"R2 %T!!:9Ѐ9±`B#P% ^r %RHЂ5D`!6̐!:'A!\9U^& ?-PA WBA}B

P|(c(Uv) 2 e@Gq(d , q[X9`k0&XGUxRc*D#(^QMdNx7D!Or\+\WX+JQ 3#Ç@QWP/QAA-)Rar,)vb Pk g8JNx0D *کNh,"jRX(C@! rh.l1 V0aC (.rAS).X Pc*n_5:nQ Q܀GiJ \b4E0] C/v VDE/ڋ`bЪ.[0as^  0AXb h*`a X@1 ]},ۋvE/ d=jd|0LZbvGlAӮMp+\3qO &cHF+K}pCpv )0c.*̀Za )cpъ15ke3 g0û P!uF ]gB >`peG,bg@(F5q  1Ѡ|,@7iZXaGNsL lPm2p'0LiP 0?a "< ldtqSh`G6GC@CjLGԐ4p xpa a c0AеFlІ4 r_g`5V_؆1lc6~͎Zp p F< j#]Am/l kC Ɛw<Ѕm={G5c / 4ǼMrc0=0/_! w7>nGG=1;indicator-china-weather-1.1.0/icons/n23.gif000644 001750 001750 00000005531 12277056351 020734 0ustar00saucysaucy000000 000000 GIF89a008Z8Z2P˰ȷ̵ũǹξѼݹ/Qȵɹ6[/N5W8[!9Y1Nt6Syʣ0Q5W1R3T9[:] =`!>a!;\%Be+Kq,Lr)Fi$>],Jp+Im.Nt-Ko/Lp6X4T{2Pv2Pt8X7W}9Y:Z8V{7Uy;Y0Ih:X|s‡ý.N3U1Q3S/L0N0M1O5U6V2O3Q7W8X4R9Y5S6T;[7U'Hn#Ac!>]&Fj)Jp :W'Ef*Ik'Ca0Qw*Hh)Ee2Sy-Kl4V|4V{6X~5W|'@[7Z6X}7Y~9[5Su4Rr>`cflQhæw jqU*|X%㪹ЛqR&+ xgV̝3/rȄ0` A*H H@J r F f&0(2$B qa,{員1!|P?8а,L6+h+|F91##0| Gآ$ B:p%b%L@ `t`bˤI - HS96Ao4 ] /<)C(dǦ,H AH Ppv@—azA.*@ fcG+;q(|ê^` fB @,GB. :Bs (2zA+[md >  wK R &!B. App.@m = Ђ ,*b0J" vЁ,E A<6.'1|r@] .agtF ~4 "}x"JCl> لwp(kG! l0Bao/ѡ@䬁ˆH"H"#H[o <>!Mw ]'Ef)Gi/Pt-Kn2Sx1Rv.Lo4V{-Jj&>Z5W|7Z7Y6X}4Sw1Oq8ZOm;Qj?UnWjhyąɡ1R0M1O2P:\0K6T:Y?a;Z@a<[=\:X>]6Q4N;Y#De]ѣM] 0_`*?ϿHx#7I\\",SP< ,[lfx2t2\ $ӡ!A 2H O\a1&3$a&$I2S$3 RHЂ KX%:1KPXF,A: lż L8Bx& x85 vvB~* Ґ3Ѐ<A6=)Qx0,>q v M2L(RO⧣(X k3 nsA`JJ<.;*g6.ӡB`7 SAERp 4 % 7fs \' P7Z ѰZX20d8q[8 P@J vb0;UJ+r5q MLxl)!Rv8!uE0K"UP 2k`CmQ]*J rC2A5a'7#숅z޻=DAz:vp8s@gTA}3p^Vի2߱(v^vo2:Kzܭi>|;vLhF~6s޶4\tȧ9W٬&Yޮ$aN]>Rr֛ԣoMw~;x׼En4٫"f8v6JSfr˱EmKU[|ᄙtwVƪDϺOD٭.+J^M%}0%Tty>zA*3JAq8P#m$'rD h$LA `0 %\%ae.Iqn^a ?X|76lp`?.< TorӛWp]p<M+ c"@-Yn KUTq Y+D+1<&lD"юnᧆ؂~-W%pL4$  _1.)PF ? XT~!t@ J ?68 ʇ=ġ%( 0Jpb5 !BR-!KP 4Xֲx J+4`+Xv=`0G {ZSt.jpK| n N` HZ1q#BBp2 jR5-;^2p+$.txE%@G.!0.\%/Lc u€Y˅=T|4@ sAK*na\ ׼s(8!s ,pC1(XPXl(@"diqq Np@`  o}#.L0Dv!n&āAQ.s@O 'MAע.B\PEC ^BxX gDs@1чv'jZ̡ߔ=M\8!r?=h7: ;indicator-china-weather-1.1.0/icons/n24.gif000644 001750 001750 00000005642 12277056351 020740 0ustar00saucysaucy000000 000000 GIF89a008Z8Z鴻˹ָòȶ̾ŸĩӮވƵɹͱ!;]]&Gi(Jm(Il'Hj$Ba">[*Kn&Ed-Qu*Kl)Ij-Os,Mp+Ln-Nq)Hg.Or.Pr-Mn0Qt.Op0Qr5Y}4W{3Vx2Tv7[8\6X{5Vy6Wz8Z}8Y|9Z{:[|?`/L1M2N3O5Q=\?^c͇mf>y['rҩ N<UcB(PG/^ 0$a5x9ÃWE|TEP 7t6(X!1#^(}; @6M 1@ u1wt ะtTga `pbG:Q`*a&>`fBt E4?1SE@4@^xXS c=eOWc؆*Uf=fa NS /N D9wl \6M􂫁pGNC,PFD2 h -'8"HX,e<FB A\G#hkedBR%` h@Cʈ4 ]AUPygH,,@c. J#^J$a)PFdX"QF'Bq KPF/:@XB3v AXbx,<A! G!B, N؃.E3Q&xDDi tQȂ%jQg Ps*qb4*QcmϘF0|\U lN&ELz- y͐X͏y`WD 8k bAԠF 葏̀Wp iȂjDlYuE3r|;P lw+؝M4 H%0 ^D41F,aC.a.y-*Q <(G1qg /Ա'N%Apn{0F<,oF s9s;|@5*ь8a0ԧN[ӯ.CP4xhO~KC}թ$kQXf/߰&BvG}V‡M6ne6td}BVAzA۪&tnԩjwۅ28sbJC[4qۭ"P|yI?|DRi*HB~q3U5q?zƲORG~r;we^ݬ"dQXšաc]wJ٬&h2yy耯Ȧ8vϮ?u`[ARj۱15֪,:AQ3U:p8u|C{n؅aNF3qܬ$MzJkC~q6X6s>zREr:ucޫ$`RY^j=wZG{J! xat.com Image Optimizer !,00DN*\ȰÅ '@!h$v*ةǏ C1b(J>Xʍ$aQ:D"'hytKD]ɂˡOy*D"J(uUׯJXX '׫z+VXu]%0.5uU@wݻ kˢvf ML]-hQXgNlU FB z=ꂧQ&[<_|%OΝ8| 2w"lXU[}3yD|H >09 | !Q%hC~JBЊ{ 4p _(9ʑ<'B$b{†~GQipe_YA/1F+n8D'.y!bliv n0F_|.d香PJ)jH}<0C })9 I{PɭVb뮕UG%JC %Gx9 2n1H >l>QI!0`[ R@k>,kj[IRrA{/Ұ/GJ;ܺF,ćD&0#ZH#p!&ʇġvQHʇЛ_":HzAHsr4') Llo%nQ ;g5AJLmve3 snQ[|Fv4+]7c!Ҡ(`5(h}xDTdDgK` a +v  @CLBE*Lq4@ @LGG!}+zCV` a(h*a,By !p-Hkb2YĶ' ?P| RЈ@w˝`D?bX@ To  (@;@ $TטDUXB F5M ~H+; d #0uT5`T6BxX a0?,BP%@r;Xd#$IX *mt >I]]X*\Jf8LW S@A8T{*;z.BL:yL9L!+f7tL+Kn:j,B߹~{'@` Ђ. HCF@@UɁ 0!5PCF+P.LUNwN9Hs@ dTvhABjx ըWi 5L*HAH! 2 @ LAO\JWKT^5X'@..hU`SL`ObXK0vQAjQçacKҚiju,P@;(hh a Ӫ5jQ L{éfz-fLP7%p6P($XBE~%.w pz]t4@uC] A Y$& OBvD0`AGLXXa<8$`'nq)8=1I!p;indicator-china-weather-1.1.0/icons/n3.gif000644 001750 001750 00000005514 12277056351 020653 0ustar00saucysaucy000000 000000 GIF89a008Zիij̴ΧܠƩ±ȼнЅѸ4X͸εɴ;`8[!;]ʎòʤֻ2T/P0Q1R7Z3T9[4U;]7X5U!>`%Bd)Fj2Rx6W)Ba4Tz5U{9Z7W~7W}9Y9Y7U{5Sw6Tx:X~;Z9Vz;Y}@`ŭ0P2R/M0N0M4T1O5U2P6V2O3Q7W8X4R9Y5S:Z6T=_;[#Ac ;Y'Ef*Ik/Pt-Lo,Jl6['B_4V{6X~5W|7Z6X}7Y~8Z2Op=VqG]uUibvsŨ/M0N2Q7W4S2P:[4R;\5S6T:Y7U9W Ab=\!Bc>];Y ?^"A`$Ee#Ba8S&Fh'Hj">[)Jl&Dc+Lo-Nq2Uz*Hg1Sv,Kj0Qr5Y}3Ux3Tw7[5X{4Vy5Wz7Y|8Z}:[~)@XHi5Me=Tl4S0L1M4Q3O6S4P6R0σ &mBhǎC(O 3>1D:h>"ǖl)r2O? :X;j Qʓ@^igbzfc(ٌ:?$:0qH!1y G@~! h- jpN,QYԢ( C~v\< W?Dt H@j]$) ,ޠ(\x/H 41 d0X".` ^^ ͸  ѝxw.dEL# 9.5 ^,3M (AHpA "G6A &1 1@NV4KyJD@6@ lħ>@ @\AP@@H(#$HF'?<4~@r$䂨 !8UA<yiʲ X>Q@_1QzԢH$-1 `@&?# 8Ђ#qY5E/nq $,Sp1x8#1 P E(,q%,Ske{ATC)GlvmPxjQZbm/ $bы`  Y2K0Oַ}& >8/1+Pa(\aGx?a `0 @| X@0| %&D!aĈ.0P̋ClZGq %Fq F ŏ" '<I.hQ' U#,H61"ּf' B8\Sp0Y,""0(b.-FY4 E P17y A C#d7K:Ү~/'hU0u"^##r!D~8-Mٲf7mD{$\LAX1@]ЎtRܼt" !0qbM`7o F^bz0^Btu{6vmm )N"bp\p /z=z=x8n>y?zBA~3bA|A{B}DC~CDEG?sIGCxIK;iMOMKTQJx[VUGs^RZ\cadXjfjhfkfnmkprmspoolusrqyvusxvq{zzu}|y}߀〳~儷]耭tp瀛>|:tC~gltux{{v}݃ဳ߂◱۠4}wzsm{侢`\WJj$߀QӗzĿ!,00Msԥ*\Kicp ŋ3jxQ 1d"ɓ(S\$1`!̛8s3'1`ʼ(Ӧ̀H*]ʴR5e`133GIF3X 0x4nи1ݺteEb7lfYf]k}.rᬑ kh`^ʈBڋ83hp9Nf8'yS۵ܩC6ڣ! δY ( 4@l ^! \2!^ `R&q@p"> 8l T`Ifzy$B ֜1` "(d= @ &h4v zà*b!(^A&D@ XPp"=P)0 Z2,#+r%x`m饷"H3wrJB ,P4l#0X^ >@s=s-d0/0  ^#D+M:P:"sO< X`A,! P ͐*> A.̹A 0$=!|.dpgl5$^Pc,`)` 2$C64MA*X7 8N {.mܠfr&D% zšN{N='x-pB -ThR2xgϿNP~ *P %b (Xv*'} }= 䟀p2%\>Dr)  +<0=ޛJp< H$pO'6ѾJ )8X& j'Ї=֡ 2AhH p&t0CT( AAu 'HR`B8vA% WD'Gxa+T%PGx@u(`NvA!>1}6DGEQB!4ƨ(ҏd(BP`c E'ILd&OD&F p%*HAU8)VGp/1l%<v*MR* UȢDJ1,XTBЇ3* *ֶp7t! mHb-f }C?F6$sXFd'[4EЅ.;B [\vTG;! ͊pf1m4aM0.la #H.;\_ AH"a UF>O8prLa0PC1;Cx.KOE01L0paN$JQhp4Q s$M`O(a)$C 戶Mj[ӆ+DRMrVF4;indicator-china-weather-1.1.0/icons/d3.gif000644 001750 001750 00000005610 12277056351 020636 0ustar00saucysaucy000000 000000 GIF89a00<>AAAACCBDFFIMOPX]QWqHrv79:::=;=<>>==?>@?BBACDFGJJHMOORRTVVIYKZZU]_cgf_Xiemhswpiv}fƃpԇt׌ޡKo^x܉_xiĸƛӟuŻj՗ιWڒܽG53@Nev&&*݄!,00+ e*\Ȱr8 <0!mK1ˤ9Cɓg#c3QLKawҴicM@ }_k^ nQghʵNpYucם9y&G=*.9rza35sx(;<ԼWv{8vvDzб#sg;:;v~C6prB玏x|D&Ξo rAh+7D!w ځCyH?;qCA1G9,^x(7yD(a|D!;cO= c=#yI;lbB!||a#98g<ϑF#=c azXc|dGZNG9C=S=cOE$z\rǖw吸LO$|2EG~ Gs#=h0 믂 "N<"=2lӫ m + =0l=(C12

8`<`q(p 2Ȱ6戃!$+r'+$LH,ϐΪ#I T '@-P C,H"$3ӌD4%*q/@B 1 "0RGpýK<ꪳԠ4 e @S3I#87N=tOcC24B@#(0A|x'3N;h=M7C:bpBp@? $<l# 03 b+(_6!A`.,$?$ݛ"F! mD" P(A^5a%v x0)6 E)Jq8NQ&|)P T|bD&> SZ oy\^3RAj `@Ł SH)X`SP g&F,( TP -2 mbU`*RTHUP1BH*Va%/hEpʰ Xt xa! PlC@Z6wp+\ eܠh+^q1BY , M8F eTAΐ,&XlA7F@a, r±+<#6&0CғkAZ hE':1Z֪hBqe׵F P׶5-=YhѸfA^pXed(ivZƵMi"Ѕ- [, ;C `F/t;߶ſ]p!0s<E.r]7eVq|!4`k\w_繸0p` /9{_Pc 1`/pPq~`n lBK͇х\;indicator-china-weather-1.1.0/icons/d29.gif000644 001750 001750 00000004711 12277056351 020727 0ustar00saucysaucy000000 000000 GIF89a00߰&߯'8ryB}A|AzC|GHJMLLNNNRSTUVUY[][_^]bdehfhjnpnst||{~߁Ⴒ┿2r4r3p4q5r6s5r5p9w7t6q8u7t7s6r:x9v8s:w9v:w9u;w=z=y;u>{=z=xS>1*G>z 8E)PR PTJըC KQUBX}z#Ї=!OGUJW/}NWUB=JXⵧ=k!`&KZAb@PEdlMjW֪6,,N Z"D8-vmp΂*1Y좹ЍtKBx.\Y ExKx_Q$. ]ͯ~⾵-P^B7;-lQm / ^b GL!F1/;indicator-china-weather-1.1.0/icons/n25.gif000644 001750 001750 00000005616 12277056351 020742 0ustar00saucysaucy000000 000000 GIF89a008Z8Z2P鬳ý߳˼䂋ƯƷͨӇūõʾѸԄ9\1R4U;]8Y6T">a!;Z%Bd+Kq,Lr)Fi-Jn.Kp5V/Mq6W*Dc1Os5U{2Pt9Y9Y9Y7U{/Ih.Gf:Z9W};Y`:Z;["@c >^&Fi&Eg#@_+Mr%Bb.Ou*Hj":U0Rw1Sx0Qv2Ty'A]4V{7Z5W|6X}9[4Qp4Mi>Uo}ĩǸ˽4U/M0N2P3Q;^4R5S1L6T7U@a<[ Ab5P"Dg!Cd:X!Bc6Q=\;Y!@_#Ba'Hk*Kn)Jl+Lo-Os,Mp-Nq)Hg2X}.Or/Ps-Mn0Ru0Qt.Op4X|3Ux2Sv6Y~3Tw7[5Wz.Lj6X{5Vy8Z}5Vw9\~8Y|:[|:SmD\uOe|t2O1M3O9X6S9V!Ba ?\'Eb+Kj-On6Z|6Xx8[{3M=Y3Z{2M!,00MzT*\ȰaGZIBSA43jȱnjL'o(S\ɲKh>!:Sj͚Ogrɳϟ{@cPBI 3 *5v \F>r o .,>$G>7T[M \H2|y0)`0 "O,uxpwA5|q/1 +?cuSC- -phB`SlMj3ݬw9\ հ$@S x !8a,L`XSJT5D%fGKcF <0 o1B[8BP-hGdՀ;L#/l#Vlaex-J ]QB. \,чCCjXV+@!Ql:cGO* [2T;QXi ;~/|1ZAE.r?&a#Lba/ (3F:jЃHAl!PB+p=xq%#V΄%0! asE/< D=r aS p!j$@u!|` 00 `CP?Q_ `@APc8Qiܣ(0z$}!F!V=C 1 #@F,j ̢b )AyA{$ ̐c\8/r4#HU* Իx7{kZG`D.>mD,!hr#&W7a, ZWm ~Wu@cx~4z[D!IF5l1pt {p,C>-DQXBB*[$ Bo1&bP9 ! <?@ah8*$k 3 gX"pB\ɐF21d0;Gy2 E0SQ&8?ԧN[>p&`NW(@WWЏ;indicator-china-weather-1.1.0/data/media/icon_china_weather.png000644 001750 001750 00000001110 12277056351 025024 0ustar00saucysaucy000000 000000 PNG  IHDR\tEXtSoftwareAdobe ImageReadyqe<IDATxb? w.RLPA@(ʀJ`@& 2} k GS`b02 ,0 H 㙠*>T rQG1Д|)~\8PD3y!݀3 ĺ@Ӿ ] )r3gcL8 T~l P { 6a) 3j 01&N)~@ȡ1ɔ ~eOkJr(d-`$)FX葜4 ꇆ0 C1<ԐbҠ8.$>a#} B/@ieKHrh* cF+ba9Z&Cf/Ms1Qw3Sy7Y5U|5U{4Rx6V|4Rv9Y9Y8W}7U{:Z7Uy:X~պ/O1Q1Q2R4T3S6X0M/M1O5U3Q6V2O3Q7W8X4R9Y5R:Z6T;[7U=]"Be!>^ ;Z)Kq#@a&Eg)Im)Gi.Ou%?]1Sx-Kn2Ty5X~3Uz/Mp-Jk4V{5W|6X}1Or7Y~3Qt9[9Wy;Y|=[}?]4Mh?VoVlOczbuĽμ͹/M0N1O2P/J9Z4R0K5S>a6T2M=]7U3N;Y9V#Df ?^&Gi!>[(Ik$Ba*Ln+Mp&Dc,Np(Gf-Or-Nq*Ij1Uy/Qt.Or4Z/Ps1Sw0Qt-Mm#Zҿ{w7qtfp ĩg~Y}1bJQ ݀Pg˶!,00=ɡC*\ȰÅAOp J3' CIHD 0@ES\"lA .P5.la'5vYD3O @ l@śq b6PbLED!D7ts@ؓP.*H7tх%څx*B,LcHE>D.9>BBx"tI5&_ $ yCPv;;׾;B`.h`/N e_t:!C,|0O/: "`A BhR&erF&`E QH^̻@2h D)@0\( , QnDȟ:; ,A@N ,PR|v-9WTx 000(b !B 1bhG9 thtfdk'PaY

Refresh rate Refresh rate '' city id city id true show temperature show temperature '[]' places places 0 placechosen placechosen indicator-china-weather-1.1.0/icons/n5.gif000644 001750 001750 00000005422 12277056351 020653 0ustar00saucysaucy000000 000000 GIF89a008Z8Z権Ւ/Q3U5W!;])Cf2T0Q2S4U;]<^5S9Z7U%Bd$@a+Kq,Lr0Nt3Qw5U{)A^9Y7W}4Rv9Y9Y7U{:Z7Uy/Hg9W{Sg³ɿԺ.N1Q2R3S/L0N5U0M7Y1O5U2P6V2O9[3Q7W8X4R9Y5S:Z;[<\!>_!>] ;X&Eg+Mr)Im#>[)Gi.Ot%?]2U}0Rw-Kn%>[2Sy,Jk.Lo6X~5W|7Z6X}7Y~2Ps9[5MhQnCZs>Rir/M1P0N4S8Y2P4R5S=^6T:Y?b>_7U3N:X>][3}wxrrvoȼics~罡YaJWRp!,00)02EK4hEZȰÇjd#shܢ- CIhZtH$M͛8sٱ$!XI$MZ.c ]ʴӧM̘!M0Y K`ÊKV1,۷mՒ[JÂK,4#Li+^K4h|qKJӲL+Ccs9LӨS>ijT\+eNsQoԭ[DqiQ=g1bH`H 0ਁp1ĈOjf?| &ȟnʲ0hs1&3!h ^p 0=(ЌtPB &<~[ʷn2U4Ю/"$+?Q/&컯 HCbRR<@]S #;  3@ w P0 ,uN8~^ <-> t`#xpBOB Rx"(L : 0CP@R6fcAI?bTMP!6(vc"a7h+fTb0IZX:؁*2AH(Wf8Zż9iph-x\yPF=qa8g-P {ւ5-Puy@JP[vXh-pẓ.X]"ˈ6n B4t)Ku_B؃q!@M}ЃELaakbJUڴVQ RH!X.j" C A> XC s@kVq |-z ,V!*h2A8 UaaFD+b7@(80J Q ec`/[a(G# [6A0-㹾hn&Ax@s;<x\_AH).|K_9* (=ʑA*v"/}A W8)(`~ x 1@ Wq0A` (P?lDA(a L 6qA|3N>`ĉ59DǽD L# 0>qF -B1@L7丁1g>sϛpebF!_7Ԙ҅@!q8X ̈çQk?a@B " =NƤ]>aB ܐOڟ">BblܼDFу#lDMzY06#ղN78>m{>;indicator-china-weather-1.1.0/icons/d5.gif000644 001750 001750 00000005323 12277056351 020641 0ustar00saucysaucy000000 000000 GIF89a008uҨÿմ鍗М@xch˂z6q8t:v9ty?z>z2bA~A|5eB}CDEC|E~HGJJ9f„| |~($XXt@?c]'PAL~{ @)@ r YO>!A2R@@㐅H :%fA =!XTN#dBa"f *h "c\qṉH ’0PL``02m h<@}(Nb2Є@L7ܙr3nrHr!<(Hl:F2)9 '@+2},#Gqj K6><*mB& ې$kǛʢ<_{͎Spi AOOd$#5x.g-dPR:%S2G2uO)PO>dn;;H9k`%ҦPA jB%@_:` N0o G 禬2*~};p'/+a6P9@S|{ L '$h4A~,( L4B(4PuPt%@ !ũ;2G4 @ -<&> LhcH; ,WȄ20{#vЈ*RqT'FAQtuD(/Nbt" |P]d#(F!<ⱎ(H!IIb! jP2ұHlb&:YV0)`YnΈ)8a kXD1!y #(* I◱|4KT⚨f)BX`5!kG3TzRX*JU`P9чRB,q 4#8F6k!0@"Lk䳟( А.|e!hN.1F8!h0&l,]F/\g ř,^ѐ~1 &b!cHA}v'Ev!^pэ7'<w^CZ Oo7o8Ў moH~8 bQMr 0;indicator-china-weather-1.1.0/icons/n27.gif000644 001750 001750 00000005412 12277056351 020736 0ustar00saucysaucy000000 000000 GIF89a008Z7Y~6X}2Pڳ܄㔞˷̀ͭƫį܁սս〉Ȣ˰Ĵ2T6S{:W~Ѻͺ/P0Q1R8\6X3T1O9[4U3R3Q<^#@e9Z%Be+Kq)Fi-Ms.Lr&?^/Lp4Tz1Os8Z3Pt9Y9Y:Z6Tx9Vz;Y}]"De;Y"Aa!?^%Fi7R"@_ =Z'Ik&Ef%Dc*Km+Lo,Mp-Or-Nq*Ij.Ps.Or*Ih2Uz-Mn0Qt5[1Sv%?Y4X|2Tw1Ru3Ux2Sv7[2St1Rr5Wz/Ml8\5Vy6Wz6Xz5Vw9Z}:[~8Yz>Yu*@իXZcUNU9vCٳhӪ]V׫SugnݻwG =F Lꮩ+o!E1˘ӇRDJ9.C;TWCsQIgNR}n]:lG| bpGF\8>UԩSsԩsjP;t!C t|"JSU(q u 1pB 1l>t OGxl<"hb$賃r|rA #dlj"BʐH&D*|F ;D8#x ?p8󰒊+C9,+n&,d"4VA /@"眬+GH<, <!`ƍYC>`"0qʬK,R2IF-0%dpbT@.S+ă+ȭQ*ఞ 6 x@&3"~RK-HR =~ ;0'8@ `*HxA,TG.B .B!GP.g -& #)H 2!J(AȠ>s9.+/`҂mt x:ԼԌƧ%`e J | `|'ߴdK"Ā} + d,B)8 ILb.lr Ath [4?N,1 o.f: S _ S/,d="I*0 ]oJ: Z:6Ur ? E1 D*qd"@ "@ 6qC48p 0ԑy„81z _qOX 0X8b6|!Jl$2qEZ,'\P`L/foH 8+VbKx"_#%(B&D8,Qo87O@TGZ PB!Q (4$11LbD1AB=!WB8 AVZ>bz01vb&p#A%z~؅,p ]@8A&paMB0Nd (0vdg/AC3aC>40J/ g§΀jQ {`D DP!,=D":CPa&MlLO &B74vYf8J.iUG>qC!Yf$ⱎ p @8D8#Qf4;{Kƈ2gψ0*Bx~&E`~x- Y<Q1) ?@~0#.AFXDx^(<"[}D"E`CD=|V䥆0~|"ˈbFj0#-E0D֑tMȂ"`BTh"`. 0 .F6BrG-!fLdCDqipr gH9d&3H#0h& E4bx9( OT\4f!fAka5|[%4 %$AҖ.s5mB #}_ "xQi@"ЯkMЖ~qd VQo3a2:ְ§ Lƀ kٜε#1fZ~-dleF2 hh/{ГD*!ajk# m;|v;indicator-china-weather-1.1.0/icons/n30.gif000644 001750 001750 00000005770 12277056351 020737 0ustar00saucysaucy000000 000000 GIF89a008Z:W5W3S%Af$?d.Ls/Kp3Pw5Ry7T{;X1S/P0Q1R/N7Z/M2S3T1P9[4U:]5V<^8Y!>`9Z%Cg'Ce)Fi-Ms1Pv6W5U|6V}5U{7W~4Rw:Z9Y9Y9W}:X~8UyWq0P1Q2R/M3S0N0M4T1O5U2P6V2O3Q7W8X4R9Y5S>a:Z;["@b!=]%Ce ;X$Bb*Kq+Mr'Eg*Jm.Ou*Hj2Sy-Km/Mp+Gf4V{7Z6X~5W|6X}7Y~2Ps8Z1Op]:W=\"Bd$Ee&Gi7Q(Ii&Ed+Lo,Mp/Sw-Or-Nq-Op.Or2Uz0Ru0Qt/Qr-Mm,Kj2Tw5Y}3Ux2Sv7[4Vy8\6X{7Y|8Z}9[~9Z{4Ld0M1M2N3O6R]?^=Z!@^#B`)Kk-Rt 8N5[5Yz7[}4Vv9\}-F^7Vr>Ys3O0J9U#Ec.Uv1Xy0Tr,Mi(CY)Pm#=P8Sh~,Jc2o<͛7"*C3%ʠ 8$ ~֠4O8cI%Ƭ,bF.tCM4x Aolhoz&Clɵqb„ t;t%h`p/q&3jp ># &0&M7;M8%IhIaəl22r.S676\̘ApIpAEx Nn<͉&SN:p4x @'M;݆NgD a/u/m4Y Í6ptHt L\~9d_Gpr+F׬Í>c+9+qL.<L2D6lLH;! 0Ê݇q6T:[t/Ov@ 9< 6C$D`9<`2Q;P:2/O ڡOH@" !$vl0帡˺s`"$G("ሽ`F/8_08=*v\.b>!)XECX2Q sD =DQxQ  'MF=y{P>'H`ғ }/(| $ؑt"h01xģ@E*U$ A@! ^sje"$81x/^?@T@?$8D@b y8- p`0Clnw &cy Nȝ!qLAhF0\]n`ͭz \B 4/gy޽1`,֧.EgG {sA C ogy((nt}^` OsT|1@}@;indicator-china-weather-1.1.0/icons/n6.gif000644 001750 001750 00000005405 12277056351 020655 0ustar00saucysaucy000000 000000 GIF89a008ZӴܬźʎ恊ȶ̺݃ƪ˜ѼϹνᏘɵɻϵ/O6Sz1S5W1R/N/M7Y2S3T6W3Q<^!>a%Be,Lr)Fi-Kp1Qx2Ry.Lp4Tz1Os8Z9[7W~3Qu7W}6Tz9Y9Y5Sw:Z7Uy:X~]#Aa)Kp$Ab+Mr0S{/Qv.Ot0Rw,Jm)Fe1Sx5X'A]4V{5W|7Z6X}7Y~?a3LiFh>TlQf~fy}/M0N1O8Y2P4R;\<]5S0K6T2M>_3N;Z?`=\5P!Bc#Eg;YUgD#JT CIR7ȩh(;֌zӱ͛8s!MOHph3ܨ4A*]ʴR5.hgTRҍS՜`ÊK6,:_K:WGvJсݻx޵CM)>JͱCÄٰFb;:ظ a>@LؔϠC'CG*u\u |djس'vh[#U}h~QN;\p88p8`&sWVhx܁G;x1H SA8`$9!4ָ;{G- "$PB |G;6ʓPF)哵 dA!t00L؂-Y"/(H `vH dJ, Ag+ a D*rű 8dPBaADhΦ Rn@Ee`p~fdJpB|a0.h 30;߃``|AXqXd!@6@O@i`Z>b9pn_İ1. \ #.!щۃ2/aPA w#2@&KZJPPlB&["GP.0^P  eX MC#A cȄh?ăc/zq&B "x E(bD7 9t'T`&@b0">I_ØHf2 E0Ah,na`0S+. nhD qdCLg2}1vH0|g<Ϡ/ `,A ]?Ά6ʀ1QD@a8"@Q(,{=z=y;t7m>yA~@}?zA~@|?{A|B}CCAz4cC|D}>rGFJ:iJIMF{MExQEuGwOL}IxWT[P^bfafj_S~jidmonmlplrponu]rvut{vyxxw|{z|{݀}߀~炶側}څ㍺lvyՖů֪5sFmlsqwuxsz|ぷ〴サ′ނ׻!,007o(\ȰÇ a3*gܜQ CIRsgq9pY͛8s✳5J8rx"]S8s&H:ⴡzt耯`Ê S+uȁcO9k GycGπ8ȱ!Bd( ˘ȓO;c!) Ob˞M{ x3do ,td`8 'QHꨣb(Kiu;!ງ 5Ԡ8~o*J%aН)+ 0 $ F!/f8 z]j? PEW Up4P8(De/@(A28)$ L \  h~ $a?( 6tNH@ 4aT~XPQt8+\-2a C0K0Y*Ұ1Xn+9 Y(G] ):YhD, IE`܅,vW &0sA'"Evq\f+N1OHG-r&4xE:rq>L-j\b@n!( HE(NA~ - PSS -p (<(D} IaE/ [@C9b [U.` aЂ8E z ]¦Nw(HȄ`^LH8 QBE1֡SZdbꂨ0Vy _bD/^b6E>|81JR!YKXb 2N!U bIXK*aXudKZecY2 V H0wBO(mG&rqBHrn!=E7эT4ʀ.,18D-8#!8RQ :h3A_h8# 6䋌"C7l  8o}aAV􍰄g<~6g~,RX0;BfTX`11 k`4a fܣ`F`Q~  E1 OC6t|*OB5ekx ^e1_(q5e,߃ָG!WoC7qnwaN7v[6yo@@;indicator-china-weather-1.1.0/src/pm25.py000644 001750 001750 00000003146 12277056351 020454 0ustar00saucysaucy000000 000000 #!/usr/bin/env python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # Authors: Zhang Zhao vaguedream@hotmail.com # Kobe Lee kobe24_lixiang@126.com # wyan yiwuhehe@163.com # binghe kylinhebing@163.com # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import json import os,sys import urllib2,urllib from base import PM25_URL, TOKEN class Getpmdata: def get_url(self,cityplace): url = PM25_URL + cityplace + TOKEN return url def get_data(self,url): request = urllib2.Request(url, headers={'User-Agent ' : 'Magic Browser'}) f = urllib2.urlopen(request) json_data = f.read() f.close() python_data = json.loads(json_data) if isinstance(python_data,dict): python_need_data = python_data else: python_need_data = python_data[-1] return python_need_data def get_pm(cityplace): try: ob = Getpmdata() url = ob.get_url(cityplace) pmdata = ob.get_data(url) return pmdata except Exception as e: print(e) indicator-china-weather-1.1.0/data/ui/assistant.xml000644 001750 001750 00000000543 12277056351 022607 0ustar00saucysaucy000000 000000 indicator-china-weather-1.1.0/icons/n28.gif000644 001750 001750 00000005631 12277056351 020742 0ustar00saucysaucy000000 000000 GIF89a008Z2PӰ˅ˮŲ݄·̪Ѽåɸ2T7Z1P;X}ƹ.O1R/M4U6W#@c :[%Be*Io'Dg-Ms/Ms3S|1Qw2Pv4Tz1Os3Qu9Y5Sy6Tz9Y9Y:Z;Y9W{CZwVinv0P3U1Q2R/M3S0N5U0M1O5U6V7W3P8X4R;]9Y:Z"Be8V!?a >^<[7T#@`+Mr%Ba)Gi.Ou*Ik/Qv,Jm3V|2Sy/Mp&?Z7Z6X~5W|6X}7Y~3Qs5Sv1Lk?a0IdFh=Zz6Nh=WtLdI_x[ph{ġ/M0N2P3Q/J4R0K5S6T7U3N?a@b=^:X Ab!Bc;Y#De&Gi#Ba#@^(Ij*Km,Mp-Or-Nq(Fe0Sx.Or-Mn2Uy0Qt/Pr.Op4X}1Sv1Ru3Ux2Sv7[5W{4Vy3Tv8[7Y|6Wz9\7X{5Uv9[~/Kh9Z}?Yt`m3! \P9pCC7|M+jCrNyҬ uag `0"P '@x ,G,`Bt( 8CY둸B {\8 0,z.y8> '^ p6L ۠8 Boͷ9"̓Df:]l0 +oв 1C]MDBD:"vE] : 6@T '\N-xdA(< t6061S0u'AOG>y^\8ۼ;xB %p&di 4~0 Y`E B` a-璽v &ۀrŸ垫 p7v%-p lH.;@ l i`o4 T,\ @(( ?C F8B]P5C$@+lA Ѐ7.*_>PqP` X "b7H h-l`$0@8 x!`'P0@y a]QF kdB"`>b0LK`B ƁU N]DرAaE/vq> 8}@  qYAC`F.XG8, fHEvPM`pc&a@vЂ<`E% `ncxb4FA _XxDDk WjPJC^1LX⨁+,W0!bb(B.SGB}@2`Q|QyȄ8,1|Jȃ_ #t Lc(P2ԉ<@NH-Ql5%tBB Jp,Q # P/ B(Cp2 B<_ a8AD!LAȈk!; eЫ_7[gL+a>AH]\Tԇ>>> H3&# /d$ `5_h k2q\&!'LbQ v0A q˄6|f4# h6xXf+!c`!hDCE >A" `A:@0 aD&V!@H3F`<[=\>];Y#Df];X[5[7[}1M>Z!,00u *\x P]ŋ3jcuVuA&κ(S\ɲeJu]mRƕ͛8s3\!PѣH*]iWk%իX**5v5dMTC$۷pMMYfiDϫ7b у^I|ͬǐ#K~GOY*β!Cz3d-;rflZװc~u>rM >z!3ظkQNЙi> O8q܅j Ν;Ϋ_|b*~qVx\a& w2霁 plAsHsa #aˉ("t`C:r`3r 3("- r-܂䒼3/H2<0C H #p3s祅첋/."/D؀y@RB"У鯿K.2.,tO(x AFB.+B.l* T[BڊA-P !t!k!2ÆJX2)C*<479!O#E< E lqƠ2v`#:$)+= `k !l$h(52#1W3!HHa@%̊,rI?| A@ !E$s"xG(z><}݂#C4|B7 7G`N pt87,޶,HB`8dLpsd~zH/ {:a|rH03 @8Ȧm  / <0/L.[x0)}V =o; `s 0f B "0_``Bcȡ*DQ2^  &`x@m8$~A e xE HF1 | m ~8u91lA[qDCNP1a0!6`@Q  A`1D0B"Hfؒ%3D"B'Q\$BȠ} B<ؼ#f@QpF3`b(B0 !Ng<vE8-#}`3  GD7API,3IcJpA'! fP(!! HDCh(AKP4TRhHИ"1#\#%Єh@cP%&S$0b FSIĔ+m4Vp"b=,SXSkЪΐ k4 0+Va:'T ٨D5aJL@ֻbx] N?J l^['TOF6qrx%ajUm5p#tAh!vnp?K"G$Y:7?K`ֵ}n&;LhVxH!bp6^w G)Jhm~3!HC R"" KX"~{38v{j!cx Ű1L ^x'/G mp T61K @6Ѝ8?'m` ۠Ƌ %XL258A ` A^r,m( [Č (`^c@=d0bD Lt Ԁ; ۠=~;X PX'Mi&SAU8~,N{ӠGi4o(*Js[@u@;indicator-china-weather-1.1.0/icons/d7.gif000644 001750 001750 00000005240 12277056351 020641 0ustar00saucysaucy000000 000000 GIF89a008uƼٱȿނȪIJ؎Ŭķ̻ιéƵ₎ʡ맷ː}܂ᖬĴϮ6q;y9t:u7m;s>y=w;rIMOXecoopqosrywvuy{}y⁳}|Z}Ⴒⅵr®̵2s([3q4r3p-b6t4q6s7u6s5p7t6r:y9v8u:w9v:w:w:u{=z=x>y@}?z@{A|A}B}DC;p5dDAyD~@vGFKIHF};iKAsNQMSI{O\UR`Hqdkjilknkrmnnspnvtsqvutss|yw{zy}|{}߁䀳~倰݂d邜3t3r5smlqqvtu{}|~ށဳ}{ׂⅶቺ!,00u3*\ΪnCŋ3j( :ɓ(S\y8=m@ w͛8sܙsΝ:B!2ѣH*]zO#y!TiA!‡O#GtZDП"Ex-J?|ȝKA|u6.\M|3/ A~[$IL!@I- 9g{2'Т=~&C̨װc^Ĉ!BkV!L i^Т9Zμ1gdD7I"Fo#Hӫ__^R$HܠaSb„kи1HңFDyIb& ((!7B>`Bh#6I&@ %$^b(xI&xXr /XLЃ%x2$LB$rb$'Lb$JA&LC 6ؐlɑplj~'p&Kx$rP@[pCl<&ji'D*'l"J'Fj' WC:@B  fĬLtRKhRH!D(,`\pF#lF)Ԓ)"%ܬ?7 LC eh #,F!D)R )Fb Vh: &!T Bn(DžVj .$Ю 4XPdI)}'dPh9p&!pB7[` x ܸJND!=A4p[(pMq 3pýf?L0ҦAS A X_7B)Џ+6p#`2[{ \B+7 M70T 7K=,@ j{+C65Ԁ, Rg3`[s-嘯 "isJ+p n/ `,XArӣ  d0^VlB!遠XVa.sգ r <'X%T g2h͏P@4 (D)~X`&,>(F@E50LbO oQ4*X1-l&X"U+0 SXЀp# A Nb.pQYĢ-T TN, ' 7H7B.f!P΢E.jL)TA pf.f ZPA Ѕ.0 rT P8+0 UBRpB2sY,s`xZӞTAFVs E0 *" Tap*X!.`s(1x K`/]0QslB()SPw!]lGB*"bD%Tw T!0\JVnA0: XjjaHW-c+X-Aau]* ad 0$ }45 /zֳ>ʃT$ Mc!d0 `2 @C*@e` pVp@[.6E2!eX+R.A2KrAR1` ]x{0].p1h<^xF;N0 ,c3 KB4x^5j`džWb cQ WѨ5v x4бQHN2a9Z%Ch%Bf(Hn"<]%Bd(Fj&Ce,Ls+Kq#<[+Im/Ou1Qw.Lp-Jm2Rx2Pv1Os2Pt8X~;Y:X|0P1Q2R/M3S0N0M4T1O5U2P6V2O3Q7W8X4R4Q9Y5S:Z6T;["Be =]#Ac"?_)Jp$Bb'Eg(Fh-Ot6O*Hj(Ee0Rw6Z-Jk7Y6X}6W|5Vz9[Sr.L0O0N2P3Q:[4R1L=^6T:Y>_?`<[ Ab=\!Bc>]#Dg;Y9V ?^!@_["Cb'Km!?\&Gf'Hg)Ll$B_(Ih)Ji,Oo*Kj!;R/Rr0Ss.Po5Y{&@W1Pm4Qm1K2L6O9U=Z?[A]!Db$Fd)Mk(Jf'C[9T-H];Yp0DS:R`8KTN`bTcaN[QZh[gqadkYtuMLH=D7ϲ=546687799ط;ʭ>ݲ'ܱ'8<߰$ޯ%'߰'(߱()߯)*!,001u *\PL#ǩ ?~Sh|Ir ɱ9Р)EexҤϑ͠ ٩@E!) 9H:ǩ4RHʵ+!DI@0$**T. jPi! !xݫ7M z`8[d"CҴUC j98O60+}(K}nLFQ @*+wtAӼe:Ap(P,|L rG{tp  BQ"-ըӎ;ꈣ Ҍ !Gq0|͇!,BP9pC-14Yӑ -S  Hv- t6RTEHRE &PEU<77nl?x#n,Ca-xZͬf/y=bX1hBЇֺkՄv|C pK׳=݆A ݇lKC=``rAMoy'ˏ|ܣ|@ͯ~yv}kP/;&j@@(.{ C/bc8W `  ?atA(nC {_Íp/03cXGRC)wx%scxqCA  ;indicator-china-weather-1.1.0/icons/n8.gif000644 001750 001750 00000005327 12277056351 020662 0ustar00saucysaucy000000 000000 GIF89a008Z8Z6X}2PӽɽᄋȸϺ±ȶیùγȾѺꂌŏƳɵ6S{őյ/P1R6X3T4U :Z%Be,Lr/Ou.Lr-Ko1Qw.Lp3Sy3Qw8Y5U{7W}6Tz9Y9Y5Ru:Z7Uy.Fd;Y^!?`*Lq*Kq7S%Bb(Fi'Ef*Ik1Tz0Rw1Sx-Km%>Y3Uz4V{-Jj7Z5W|1Or7Y~/Lk)B]9[1Jf^ @_-Pp.Qq/Rr2Vx/Po7[}9\|3Oܲ K"bdG9b$(2Xi` *" m" a^ ƭ^t p( ?@@A$2o"K,1CA NZ 8;lF fR.2!R1C |ri=Pp.10B 9A63QK(S#,-' mPjpp)t03~. #3y !8l`p~{褣{:/<ĸ:x)40(tjh , *ц*$H/;bEB>!8 a1 P%( 31B')&,.x!J$C+@2xC E aF)@A €0!`t"R0r I]p~& C$@#:aH1' #1N'l2!8 bNhIO`hʁ`ăE@*M@Bp сN# ,MRc ?](c̐2 4>G7 L fDAF$C`3ԢN" 0*3~؂$PԲuxZڅ&b(()5 Ѐ: hBG(zVuu^k)8. iH#{b` K(6LD"*;l3,!jX3.K@ x%.K4+WVp;VVn5.A /,"D.jtӝ%^)B %kЄ|+ߔ#};_:" 6_җl ^TKІ5 # Є/F-Lsb>FT%N6PFprQrXF ZX\?Y M2'e.k4Ї8@1/\]Ns98 5P1p{lB<-DCP@D(AɄ^haF"-h-\ĦOP#]3gyB}GLL|VJscdffhkqowwvuy{Z~ゲⁱ܅lԋ'[2t3p-d4r3p4q2k7t6s6s6q8u5n2i9v8s;x:v9v9t8t:u;x;v=z{=z=xwҽ@} *;w"|rCnHj|X>Š {w#gG}{vB$B$'ҍ?hM~h"$O"HިF`#4r"xFꭷB, 7C k,_(ɇ ȇ#JRI%4j^ t $X⇓y 8$\R%TDg AH 7A 2ddNb%\bH &׀@pe\B(X 5ǙJX JhF$S>P>| A`3ppfɣ<ʨ'd y8qr-AzVhz&0B 6!zKTIdb@C| `B+A-\`y@Rk&ZD%$h{' + -'0l'.G RBpdz B .`y3(  hCvPl0(,A /h rѤp3jB1BW`76 )|=YCf*1 ºL } 6cߥRp .@ 0/;3V096Λ)2ܐ'İ%\ծÞx1JTo}*a s@mr܏n7<?ݞէ"x/'P^\: d@^+^AVL p%<2 VO)( Vȏ`+PZp)@Yȡ8Q;O ȰM@YZ"W|8'bM`( 1&hE Md8D Y gdGZ" Q,hZHAp,NaSOB+`A Ubhc+p 'b*)(\XN 8,@|" e.f\В$>AcR4y *ri/ɋ[8o1 ^ @$nqoR3/zs H.O] ?Mutg0VD}|B@:@]X4VZ0i0|A (Q'"50S]t?aJbæ@1V5 U5F,> >VaT+XAV[kVֱRU Ѕ2uSUWbh+XAعv)b! e,am [86 Ȃ0*Y:#B2B{ e~jWѪ^؇(de3 f(- +l[Hry g4`&z[i,B3[h G6 yDE<[" $/p7ԀF~A rC4xՠNR;4Am,7a Sc^bFq9mfj o8Ʊ5ËqІoLeot!x6$k# Tr.gC`=`lXCnpsl=wrs6/tEZF6"-}tN{Ӡn@>эRc gMZ˺cG>1T;indicator-china-weather-1.1.0/icons/cl1.gif000644 001750 001750 00000002171 12277056351 021006 0ustar00saucysaucy000000 000000 GIF89aABݴᜲ׽魯!,AB%8Ul뾪S44 3%|7 ɡ@Zجz8H FCI v|NK%ܐ b%8 #  }" ʵ^ d ֳ& R[ gh*LvAָ3jc;  X@QhrB10h<}k`Тղ2۪+L5UkT* tJtրpʝ wA" ={Lի Ix"pqaZ=$ f]YMDJF)o[ո!*Wɣ_צuݶnS& |D ϝE^jdы`21cdAv߉J @{w[ф[u=J6}Tx!bEJqM!p"础 " X3!$2^" X#"ao#txg"ćꩆbG -$HvVekWB;indicator-china-weather-1.1.0/icons/n9.gif000644 001750 001750 00000005425 12277056351 020662 0ustar00saucysaucy000000 000000 GIF89a008Z8Z2P췾սʺ҅ºdzʱȹ₋ĸͼ0R,Iq|Ⱦ/P0Q1R7Y2S3T4U5V1O<_6V%Bd,Lr1Qw2Rx/Mq0Nr7X5U{6V|7W}9Y9Y5Sw6Tx:Z;Y9W{;X}F\v|ɹڼ/O1Q2R3S/L0N0M4T5V1O=a8[6V2O3Q7W:]8X4R4Q9Y5S6S"@c;[!?`&Ei"=\8T+Mr*Kp'Eg(Fi%Aa/Rz-Ot2Tz1Sx-Kn4V{7Z5W|6X}+Fd7Y~(A\3Qt9[3Qq.If0Jh>`:Y{4MiOnShrÆŭõ/M0N2P9Z3Q;]4R0K<]6T:Y;Z<[7T:X#Dg!Bb=\;Y"A`'Hj*Kn)Ik.Qv+Lo'Ed,Mp+Lm-Or-Nq0Sw.Or/Ps-Mn0Qt.Op4X|1Ru2Sv3Tw7[4Ux8\5Vy/Mk7Y|6Wz5Vw9Z}:[~=Umcv/K1M3O9V?^(Ih-Qs-Pp+Lk5[/Qq7[}8\~6Yz7RCyEid ^7Vx 薮?q /{A̼8`ǎY? rxpƁ0 ~w_ŷbh-1 a,Ay@ `P6y-{AN@cuS,,y ȁ$EME$9~BN-]"&91'2tp > x@A|BΗB˗K-x %Yt c^x0&8 #؉gA)@‹ #-B-7_Fp wFA 1|ix0,lFK.DLD7ihb$XB lw C -|E(vR.R p'<ï " 4\-B \prス ,9(陂 F$ _|1%y C 5l N"ROhآ1P@ 5 7؀epCG/>/byA <`0!p-Pm5Z .cH.F '+坨`Jq 2O,zE& Dz-݀QBipB *H0[`΅]|sJ1H"|¹ \ԐBxS _mָw1)CJ O0,5p ,@ >,d^Ʈb "| `H 0q T}RA RjY 60)[ ,  "(E*R T< E(p`@k0`Dʑ D ,0_#$AOB:p9p# 9(CNP  a@ŀ$HEa,c A b$E"( D cAnp  %P$~AerJ81qC,cGX'qB*1AA,qVZC %2 e#\G2c4X/Lt4b D"1Mn6#"0v3͌2u(X AS\.1r4Bс]0CU3&ʌ`0Cx&6 ,(2@P z2֡ fЃE)JӉ>3$ Da# "`Hx# nX3nծ"xDXh0c 4".4S<}`dM`[$L#@b& /5&H?L `4e46a ӨFkA,ըF1-"p!##6wMm$&D F5 $dc-vel' T"@Ξ;~І6p^ AC.Ow`AX@D3Q./ =86Kk$ /^#r/["61Jb kmM ڒ,+H{ƶ` iYȄ;[S{sz($o N<@3-c6Mw[Q6@1;indicator-china-weather-1.1.0/icons/d9.gif000644 001750 001750 00000005345 12277056351 020651 0ustar00saucysaucy000000 000000 GIF89a00˰ƺʱՂŨ܅Ūµ}ŷԼкΰԿ텑萛ܩǴ6q:u;v:s>y>xAzC{9fHJ~dIrhfejjhqxwswy{}⁳]儳cԀԙҭ&Z*`3t3q/j,c4r3p4q3o8v6s5r5q0f7t6s8u9v8s7s7q5m3i9v9t;w:u9ujQKURWCn^Z_TV^bae\e_[hmckjnmpolT|ronqpurtvutsvuyws{zy}|y}~䁳}چ䅶⋺앿p7uacpjqtux}|w~{܁ჶサ⇸!,00}Qf͙5*\Ȱ8ma&Φ/aL CIR5ϰQAqްnʵׯ`֫uQ>ؙN@=UO2dA3Ou qӧ>ǎAА' x!C]vmmA}m{m;M/3V|nj:ĕS7oA؇#=w H"=Jxc 7&Dx/C#䐢*)B!B8rdB{P@7A )0 e_6"A#8QFF8a \X &@B`ȑH8҈DI%EFRdHVR0"3HxClp#$D!8ˆNF"ɚlH{QFr졇)3H@a :j `p{Hrɚ,*%Ea x"%^!|b| ;L%8ZdG\2餙dRED ,^{;sa&@ j@ C$jm&lR&h+Gc *P""4P/d!#&t"/Ex xc$~XPA.|*/vURpe:Zb 0.T  B vI(@ !1AQaq"2B#r$5Dtu !1AQq2a"#R3B ? Ni-T /pa \ɝU] J)R5 aD,/KotѨqI1kӎHxTHaKHf8 >npDdAo@aJzH Jyo)N \ ;1[OD`:/ٷ6{A|ҹ;L;`\'˷ L)j^o01q"Ӳ=7<~K,/Lm8)|y'(R&AZVb켁g۲U[=5Ԯ4(d0eeDž?g t{#GܶK DwZ݃-+Tu([uaR)QVUiᳪ ZMn Wӯ"pʕJ(=nk$y "򭅧"AԠeiO/w̅ROSn;NJ_A?ȯ~f&H hc@Ri5sPi&BpL 4ӶDO[= {`AZD koK EGf^"lP^#iI>A0@1;PB+J)ZH# 4=08#(?rħܗ@ mqr~?TBYjk[9GR|F:F$<V@9nR `RIpVc?P=VH*RROlbUUWvzxnɷe܎+rRT =aqPe^oӞLnimJR&OT0$} ċ pt@Z¥,;׌e#5. ,zثVs(;7)*)P qS]-ؚ`W)Vf̆#=$\GJ.d+D@=8e6V#kR:5 .M 32#S%]mR!c2NЭ[#2%n9IB"ܧ-@Tt'yU&g!ҭ!E,^@4>bC|OU%=F#Mb,mI]Ѐvh+݂I!ɺ&S嫞b7*"$Fݎ ({Nk؍(SMYDAWmo6T$( `{:fDa.Pk`bv\IV*3 ڒ3TVoAӁGF\Z\U&uJΠ32 67$Ti2j`ݱJ+Z `zm֢\ҳqڸ{~qM扠t+|B_̩y{w{8W&S;5/ȺҳBAdwU[#5U\SqjɽiYFjL+R~hSTS |31&q7i\4nJ6ARZۅ1v"Z:㧕IyW!J‡I<ɘtm!ISN徻qWB wcWY O@hHL#R/nIu6!Ch h~_̦e2nRjvm!JJ K>k-h+G\uEn-gzMI=OT_mYn]^K{s/U^SxWLtf=\ (u? 4PqhNAr}rg(B3%9R@T\r62%}\m斕C)$EtW:9.ζizN jQGؔMBF,*=Ǡne.䃪->[ú37.\I8۠m LtMggf/-7YߪKN[.+jZ U#7;o5~Q("^|-^CP[?1M(3 F;9So]?N; ^#PM8"xtzLi Ýo]9j|Tn.gYfhiCھ ^NLn,c5FKh.Mj ]v`2k s]ewR26eO.q.^hindicator-china-weather-1.1.0/icons/d10.gif000644 001750 001750 00000005377 12277056351 020726 0ustar00saucysaucy000000 000000 GIF89a00·ִ҈ȷ׼¹θͶن־Ģԩݻ6q8s7n:uyA~?z>z@{A|6gB};pC~C4bD6eD|HE~8eGKDx?n=jOLJ~DuRWVMCn^UR][U`dcba[hfe_hjckiRznmkpmpuswqvutsv|ywY{zy}|{〳~}ނ側ㅸ炴Ⴒ߆䅵⋺pXoihipnptuxzw}s~߃サ⦻!,00 lFM4pԴAðÇ#:$ͨ- <4ӈIɓ$w %8gذ8ӣ͛8s f7tdt3ѣH*] 7l޸35N7tPʵׯ`1V8gY6rޱzuʔ÷kzr(^mb;fp2th3ɣd>@Yͺ>@Qzb\ -c'=t?xanrbC HɟO?P{" ܠ B \0B|"F!Q  03! Aᄈ(c bȌ.xy"Ѐ,\@(?!Ȍ1*Ȕ(b^Z&f0 3P @)\,B%C $uNGpA C,Ђ "Y$d X` tF#4RBbDbwH0$~'PBp)%7$TP &L@2k k-if,`lFf *pp 'c<+%K އb8ñ0n )0RB1`^0 5 "D*1 RByP*NqT"TE.>a D  6l}#T8 OT'F %l.hcNW*\#\D Wؐct "hb *P.bv#XԢcEq Vq d%DQX 0) H%&c!NP,Zd|aȅ'KyTƂ7t` r , U.hq Z"H ] s2)L\h$IOh-rD-n\bG@ab@Q g&#)[#9׹]Bp.t0a_G[0ը$qt@>t Z-xAӚ Qh/b0-L1 &B0 F`N7a|!LhBU&0VX"0/0s5(8 Xl N0n:W* aP(0!%:ܡZ  0z_(v0bִE0 d pf!Y 2h;uVm1[droZ)H̘3;c<&!eLڕq S QhA/ ^2cU` iX2_X82P`5E2Lce/ e`ó'B/ac<#b?Hvx @}Vp3as@2QΠ30ʏ~ rHbțALf yQ2 iL$X1 i4A]s<1kF66႕n5af0O#4! XHB `;hV8"f4YhGҘ%@U#Р4 mh@ҰFah( 5jkX#u6+d 4jlDѸ<+\n{Ɔ5o`cؐ<ҭy oyl=эmlCYNF5;indicator-china-weather-1.1.0/data/indicator-china-weather.desktop000644 001750 001750 00000000473 12277056351 025525 0ustar00saucysaucy000000 000000 [Desktop Entry] Name=indicator-china-weather Name[zh_CN]=天气预报 Comment=Indicator applet for current weather conditions in China GenericName=China Weather Applet Categories=GNOME;Utility; Exec=/usr/bin/indicator-china-weather Icon=chinaweather.png Hidden=False X-GNOME-Autostart-enabled=true Type=Application indicator-china-weather-1.1.0/icons/d11.gif000644 001750 001750 00000005433 12277056351 020720 0ustar00saucysaucy000000 000000 GIF89a008uȁܽǴ܀źعʲ㌖ȗâշ}ѱǭY㍡6q8t9t:uy?zA~@|A|;pB}B~5eDGF6dF}IBw:hKMEz>n@pI~CtLQ?kUPK}NCnT]\SVHrb`eaeb\ZeMugakjcimkrpotpW~rutxv{zyxwy}xր}|ۂ側ㄷ]`₲߆n3t4s7x6tGxtsぶ⁴ჶサ⃶Ⴔߗꦹ!,00 5s(\ȰÇ tӆTaJl3 CI2=)͛x޴I͛8meJҝs 9H*]ʴ?oAz.N;`!ׯ`Ê?*_9{GϏAuجٻM<#G>}Rb:kPÎ1 Ũ ^:O׫ćO!@lƑa ] ֬)_sB -'OJ-j́hPࠃC3Oľ={#!Jd"@khN! lB ,_{4.D agwhAN0">Ȋ,"<򈄎P /t`P jB&С4n" ȞjA (< (I&J(AƖfbP*ہ 'x T[Ƈ!) 2\02 q(T='D@C +# 1{ ,0=tXmu4ҍ<& } d۲ܴmzFuН*'!y#B c %XKv,:x"㐫zБ0B r24 2뮧J*' %LP [ l p#Nܲ(/J,\BI#0"08Ck"@D#6A }{g1Itw54lh82 3AX Bs p+7'̂ L!qxCT0+DŽYk1nb/& l XEp&p \1N). T,\ф&8ᏼcq^8+0 D" Xd#q\ hE#H(, ًUB /~]@'@KZRP`.P q\e/`bń.z ]DaXE1H좙f(oF!/i q䃛$(z(((( G(O%H(AoPgO$`x45`(I9}2={t" Ɛi> Sc0:a@ @FPjT)(a @'v02AEP["jWTc J'! Vc 8F-:Q FcȘB.> $ȅ:(\6H l.:0zcPc0z1d`=Fe bv-4gPȅ2@+@Cȭ,o QVg( 3 r !XHF4u8ɨK7 XE7dѐ/}FXaH4 h F#6%[Z TƁ Sm3q ^ܳ3a#͘g5@Nf`#? h̘4<ϔ^ɗ(NjkkpH(Sʌk| Ca/טF1 ݠ45\؂4 gZ\L-C+ra k,E! 2W$h!vt %ha ilimla/Pw"ռ71kkC]хy|Cx4awh –QwT¬qp\KڨюjTcrN՝ /hA!eG6~!yF=Qpx&N[7mx G@;indicator-china-weather-1.1.0/icons/d13.gif000644 001750 001750 00000005627 12277056351 020727 0ustar00saucysaucy000000 000000 GIF89a00::;=>@@AACCBFFGJLOWYXi}ܢ߱799:;<==?>@?BBAACDFFKJLONQRRTFWUMZY]]]V_UbPf\eWinrjttcqcy|mԀؗߧHavߎxelĶɝt֙ǻjйTމ>ID\fv$&'*4!,00c$`͚*\P@svgnNw! O;j!B|'w@ r='H9{GyٓDĕ7o8hGA>=;ɓ)9vЇZ9u(`MHQ3ēIч|Dž^9燅 =c"<`; ߰O7~H J993>܃>@>9ܣ K|)H Kb&29"==3O>8yO*=dr &:H!.qN=;dON3O.(BȩJ# TZ㎬9T }XαR$""#3x8bؠ3pN;!VL ,+\)" (HAmF9q2! Gnu`WW07h+\BR )6QBxE6 QD %/|Ӎ|]T4H"i E2Ʊ )x*0MAwwa)²0,4, ZB7`e EA B HvPxcȰwL [T =Em QKX49?v$谐[x_B4NqްHq ^\![/ S(c:83pZϸ/p@o ؆?PxɈ. J3vn GMj+d8 Ю2NiT: ,K 1໳ũMl+X@6~ _`4id ɶ.Y>ͅ_ `Xcј)nkF.Nd0BB0AotF7.[Ṙ7w2q`tNr\$̵m(,10aF1a  8:ҁ1 l8IԻ _cUG5񅣛f5Q#d1K1^#;indicator-china-weather-1.1.0/icons/ct1.gif000644 001750 001750 00000002104 12277056351 021012 0ustar00saucysaucy000000 000000 GIF89a@CܒӴᜲ凉柵ح!,@C%J ĬlpYhMtpH,_H I/aXD|vz>itF"b|Ncš8 o  mw>| $j w n>f nd}   &>n |ӛ k,0*\ȰÇ{  KǏ kC4n˗, r&͛&bb 2 za79MҧH&泠7Xa0B +$ ײp]jJ\pTGA8ѝznSQ,(ʕLsT;jݟi`Gv,<1OٹB&jP _O_w:;E뉢6Cǘ'WW W1W_A]/mXg]yPgp`݂}r|}ե_oEM^AzFt 0 Qy`f`U 8>7AQ ؑIҷdbW(Pf8eD>TV _-~u?Q2%Jq~7n{zyxJY,z2hT'Xr.:}Z6ɣyVꎰaꧦzٟj(%ƭ %O'ej`k8^IKfF#RfI;EW`B[Xmn'X@%r&7`R*CܾRІ# >E,qh:VfD (Р,&@ | λϼ.LQsL7PG-u3p$׫\wZc-dmhl!;indicator-china-weather-1.1.0/data/ui/ExtendedForecast.ui000644 001750 001750 00000105576 12277056351 023656 0ustar00saucysaucy000000 000000 540 390 False 六天天气预报 False mouse ../media/chinaweather.png 0.97999999999999998 True False 10 20 True False 10 True False 5 150 True False 今天 True True 0 True False 5 True False 0.75 gtk-missing-image True True 0 True False 0.25 gtk-missing-image True True 1 True True 1 True False 未知 True True 2 True False 未知 True True 3 True False 未知 True True 4 True True 0 True False 5 150 True False 第二天 True True 0 True False 5 True False 0.75 gtk-missing-image True True 0 True False 0.25 gtk-missing-image True True 1 True True 1 True False 未知 True True 2 True False 未知 True True 3 True False 未知 True True 4 True True 1 True False 5 150 True False 第三天 True True 0 True False 5 True False 0.75 gtk-missing-image True True 0 True False 0.25 gtk-missing-image True True 1 True True 1 True False 未知 True True 2 True False 未知 True True 3 True False 未知 True True 4 True True 2 True True 0 True False 10 True False 5 150 True False 第四天 True True 0 True False 5 True False 0.75 gtk-missing-image True True 0 True False 0.25 gtk-missing-image True True 1 True True 1 True False 未知 True True 2 True False 未知 True True 3 True False 未知 True True 4 True True 0 True False 5 150 True False 第五天 True True 0 True False 5 True False 0.75 gtk-missing-image True True 0 True False 0.25 gtk-missing-image True True 1 True True 1 True False 未知 True True 2 True False 未知 True True 3 True False 未知 True True 4 True True 1 True False 5 150 True False 第六天 True True 0 True False 5 True False 0.75 gtk-missing-image True True 0 True False 0.25 gtk-missing-image True True 1 True True 1 True False 未知 True True 2 True False 未知 True True 3 True False 未知 True True 4 True True 2 True True 1 True False True False gtk-missing-image True True 0 True False gtk-missing-image True True 1 True False gtk-missing-image True True 2 True False gtk-missing-image True True 3 True False gtk-missing-image True True 4 True False gtk-missing-image True True 5 True False gtk-missing-image True True 6 True True 2 indicator-china-weather-1.1.0/src/helpers.py000644 001750 001750 00000026444 12277056351 021341 0ustar00saucysaucy000000 000000 # -*- coding: utf-8 -*- ## BEGIN LICENSE # Copyright (C) 2010 Sebastian MacDonald Sebas310@gmail.com # Copyright (C) 2010 Mehdi Rejraji mehd36@gmail.com # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE """Helpers for an Ubuntu application.""" __all__ = [ 'get_builder', 'monitor_upower', 'ProxyMonitor', 'TimeFormatter', 'NumberFormatter', ] try: from gi.repository import Gio # this has to be called only once, otherwise we get segfaults DCONF_SCHEMAS = Gio.Settings.list_schemas() except ImportError: DCONF_SCHEMAS = [] import gconf import traceback import os import gtk import urllib2 import locale import re import dbus from dbus.mainloop.glib import DBusGMainLoop #from indicator_weather.indicator_weatherconfig import get_data_file from indicator_weatherconfig import get_data_file import gettext from gettext import gettext as _ gettext.textdomain('indicator-weather') def get_builder(builder_file_name): """Return a fully-instantiated gtk.Builder instance from specified ui file :param builder_file_name: The name of the builder file, without extension. Assumed to be in the 'ui' directory under the data path. """ # Look for the ui file that describes the user interface. #print('000000000') #print(builder_file_name) ui_filename = get_data_file('ui', '%s.ui' % (builder_file_name)) if not os.path.exists(ui_filename): ui_filename = None builder = gtk.Builder() builder.set_translation_domain('indicator-china-weather') #print('11111111') #print(builder_file_name) builder.add_from_file(ui_filename) #print('222222') #print(ui_filename) return builder def monitor_upower(sleep_handler, resume_handler, log): """ Attemts to connect to UPower interface """ # http://upower.freedesktop.org/docs/UPower.html try: DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() if not bus.name_has_owner("org.freedesktop.UPower"): log.info("UPower service is missing, cannot monitor power events") return proxy = dbus.SystemBus().get_object("org.freedesktop.UPower", "/org/freedesktop/UPower") iface = dbus.Interface(proxy, "org.freedesktop.UPower") iface.connect_to_signal("Sleeping", sleep_handler) iface.connect_to_signal("Resuming", resume_handler) log.info("Monitoring UPower interface") except Exception, e: log.error("UPower error: %s" % e) class ProxyMonitor: """ Class to monitor proxy settings """ @staticmethod def monitor_proxy(log): ProxyMonitor.log = log try: # disable dconf settings for now # because they do not seem to be in effect if False and "org.gnome.system.proxy.http" in DCONF_SCHEMAS: # load dconf settings proxy_settings = Gio.Settings.new("org.gnome.system.proxy.http") ProxyMonitor.dconf_proxy_changed(proxy_settings) proxy_settings.connect("changed", ProxyMonitor.dconf_proxy_changed) else: # load gconf settings client = gconf.client_get_default() client.add_dir("/system/http_proxy", gconf.CLIENT_PRELOAD_ONELEVEL) ProxyMonitor.gconf_proxy_changed(client) client.notify_add("/system/http_proxy", ProxyMonitor.gconf_proxy_changed) except Exception, e: log.error("ProxyMonitor: %s" % e) log.debug(traceback.format_exc(e)) @staticmethod def dconf_proxy_changed(settings, changed_key=None): """ Loads dconf hhtp proxy settings """ try: ProxyMonitor.log.debug("ProxyMonitor: loading dconf settings") proxy_info = {} # Taken from http://forum.compiz.org/viewtopic.php?t=9480 if settings.get_boolean("enabled"): proxy_info['host'] = settings.get_string("host") proxy_info['port'] = settings.get_int("port") if settings.get_boolean("use-authentication"): proxy_info['user'] = settings.get_string("authentication-user") proxy_info['pass'] = settings.get_string("authentication-password") ProxyMonitor.install_proxy_handler(proxy_info) except Exception, e: ProxyMonitor.log.error("ProxyMonitor: %s" % e) ProxyMonitor.log.debug(traceback.format_exc(e)) @staticmethod def gconf_proxy_changed(client, cnxn_id=None, entry=None, data=None): """ Loads gconf hhtp proxy settings """ try: ProxyMonitor.log.debug("ProxyMonitor: loading gconf settings") proxy_info = {} # Taken from http://forum.compiz.org/viewtopic.php?t=9480 if client.get_bool("/system/http_proxy/use_http_proxy"): proxy_info['host'] = client.get_string("/system/http_proxy/host") proxy_info['port'] = client.get_int("/system/http_proxy/port") if client.get_bool("/system/http_proxy/use_authentication"): proxy_info['user'] = client.get_string("/system/http_proxy/authentication_user") proxy_info['pass'] = client.get_string("/system/http_proxy/authentication_password") ProxyMonitor.install_proxy_handler(proxy_info) except Exception, e: ProxyMonitor.log.error("ProxyMonitor: %s" % e) ProxyMonitor.log.debug(traceback.format_exc(e)) @staticmethod def install_proxy_handler(proxy_info): """ Installs http proxy support in urllib2 """ # validate data if 'host' in proxy_info: if proxy_info['host'] is not None: proxy_info['host'] = proxy_info['host'].strip() if not proxy_info['host']: ProxyMonitor.log.error("ProxyMonitor: empty proxy host!") proxy_info.pop('host') proxy_info.pop('port') elif not proxy_info['port']: ProxyMonitor.log.error("ProxyMonitor: invalid proxy port!") proxy_info.pop('host') proxy_info.pop('port') if 'host' in proxy_info and 'user' in proxy_info: if proxy_info['user'] is not None: proxy_info['user'] = proxy_info['user'].strip() if proxy_info['pass'] is not None: proxy_info['pass'] = proxy_info['pass'].strip() else: proxy_info['pass'] = "" if not proxy_info['user']: ProxyMonitor.log.error("ProxyMonitor: empty proxy user name!") proxy_info.pop('user') proxy_info.pop('pass') proxy_info.pop('host') # create proxy handler if 'host' not in proxy_info: ProxyMonitor.log.debug("ProxyMonitor: using direct connection") proxy_support = urllib2.ProxyHandler({}) elif 'user' not in proxy_info: ProxyMonitor.log.debug("ProxyMonitor: using simple proxy: " + \ "%(host)s:%(port)d" % proxy_info) proxy_support = urllib2.ProxyHandler({ 'http': "http://%(host)s:%(port)d" % proxy_info}) else: ProxyMonitor.log.debug("ProxyMonitor: using proxy with auth: " + \ "%(user)s@%(host)s:%(port)d" % proxy_info) proxy_support = urllib2.ProxyHandler({ 'http': "http://%(user)s:%(pass)s@%(host)s:%(port)d" % proxy_info}) # install new urllib2 opener opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler) urllib2.install_opener(opener) class TimeFormatter: """ Formats a time object with respect to the settings of indicator-datetime """ # default format from locale format = "%X" SETTINGS_TIME_LOCALE = 0 SETTINGS_TIME_12_HOUR = 1 SETTINGS_TIME_24_HOUR = 2 SETTINGS_TIME_CUSTOM = 3 SCHEMAS = ( "com.canonical.indicator.datetime", #natty "org.ayatana.indicator.datetime", #maverick ) @staticmethod def monitor_indicator_datetime(log): TimeFormatter.log = log try: for schema in TimeFormatter.SCHEMAS: if schema in DCONF_SCHEMAS: log.debug("TimeFormatter: loading indicator-datetime settings: %s" % schema) TimeFormatter.settings = Gio.Settings.new(schema) TimeFormatter.calc_format(TimeFormatter.settings) TimeFormatter.settings.connect("changed", TimeFormatter.calc_format) break # this else belongs to for loop else: log.debug("TimeFormatter: indicator-datetime settings not found") except Exception, e: log.error("TimeFormatter: %s" % e) log.debug(traceback.format_exc(e)) @staticmethod def format_time(t): """ do the format """ if not t: return "Unknown" return t.strftime(TimeFormatter.format) @staticmethod def calc_format(timeformat_settings, changed_key=None): """ settings init or changed """ TimeFormatter.log.debug("Time Formatter: time format changed") time_format = timeformat_settings.get_enum("time-format") if time_format == TimeFormatter.SETTINGS_TIME_24_HOUR: TimeFormatter.format = "%H:%M" elif time_format == TimeFormatter.SETTINGS_TIME_12_HOUR: TimeFormatter.format = "%I:%M %p" elif time_format == TimeFormatter.SETTINGS_TIME_CUSTOM or time_format == TimeFormatter.SETTINGS_TIME_LOCALE: # ignore this as it might contain date params #TimeFormatter.format = gsettings.get_string("custom-time-format") TimeFormatter.format = "%X" class NumberFormatter: """ Formats a number with respect to the locale settings """ # regex to remove trailing zeros re_trailing_zeros = None # regex to replace -0 re_minus_zero = re.compile("^-0$") @staticmethod def format_float(value, precision = 1): """ Formats a float with current locale's conventions (decimal point & grouping), with specified precision. It strips trailing zeros after the decimal point and replaces -0 with 0. """ p = int(precision) v = float(value) s = locale.format("%.*f", (p, v), True) if p > 0: # compile regex if needed if NumberFormatter.re_trailing_zeros is None: try: dp = locale.localeconv().get('decimal_point', '.') except: dp = '.' NumberFormatter.re_trailing_zeros = re.compile(dp + "?0+$") s = NumberFormatter.re_trailing_zeros.sub('', s) return NumberFormatter.re_minus_zero.sub('0', s) indicator-china-weather-1.1.0/icons/d12.gif000644 001750 001750 00000005435 12277056351 020723 0ustar00saucysaucy000000 000000 GIF89a008u݀˸ζɱַݍƩĚƷ˲ՁɳȬ󞨴ٿڅ兝éϰͩ5r8s9t:u;t>yC{8dUGp^ceeffjQyvswysy^}܂ᅵ偰`zz֍*`'Z/l4r3p4q0g5r5p7t6s7t9v8s:v9v9t5l>;w:w:u;x:v=z8p5j>{=z=y>y=w?z>zA}A~4dA|A{B}C~B}DC~=q7gEHGCzG~>oMDv=jJCtQMK}AmGvNYSS\_VIta`\Xdb\ed_\gic`mkbQxotssW~vuvzywys}yׂ䁴ㄷ恳bin1r4d[tvv|߃サ▸ۻ!,00eN*\ȰaBYkɣN:;3jȱǍyg(S\ɲJ%(d͛8s3=J @ѣH*]4)@z3Ր@XC~a"8q䨍#q Y O&~PRIc܏莤sGozTC&ٳgB&(6p{C6pl=FG wxD$9BHpڼY2) P0 & Da*(9(D,lbn;o,lDFosAm:`v #$p"R¶|C::7 d 4 I+H8 n/o04C4 3Tr=@ , /b> Bh0 H.>,TOEsD0 %Pa<6816#XG:ЁP0XP`k  آ"D!!.^x*T)Р NAE@dHqA" y[D5/p +.PщN"I!S$#i_/+` ¸0Y_B?bE.b SBU I +|.a C .< ,r8.L) -00 )Z-daJTb )-cp=:L-DxX1™Z@8@g 1Nr6sƈ1! gg=qJn cX3G>,48@OeSG -#)i~ H Q-G+d352ь:ay2Z~  ELچVD %Ua`mT-Ԣ cC2Sc +{B͘qWծxB3@Xf E,{XgE* b0 p:\ht B*rьh#a 2#;e3a.x-3ZhD#Xp;\fC30# 5`]z%'A >#F;Q^`{0| ӨQ{ӘF,1WL _]i0E! 1< SXB iX%4xP QjȘQ4d,xdx12SX"==Bz/ 9@?Za](K Y wH`~;\q0:6u84RA0܆(CY3|wBpC0$:G>}T`5L#xC>0 l\51#cxG/ (c<2hE*q2]2\ ʾ} 0ae©ЍmtװF]1a.]nHc61xc(ü~6r |H; F7arfȸ7{G9;indicator-china-weather-1.1.0/000755 001750 001750 00000000000 12277056515 016526 5ustar00saucysaucy000000 000000 indicator-china-weather-1.1.0/icons/tr1.gif000644 001750 001750 00000007024 12277056351 021037 0ustar00saucysaucy000000 000000 GIF89a@DꗮЭݮ昰Ұ욮З쫿ޫ髻ܡآӗԙԘח홯՗Ԧښזҗԛؙ왱횭֪ݔ՘ٙ٥ڟ맻՚զڕݙ웵ٻ֘!,@D ȏDD*\Ȱ=Hb9 IPď C2|%5CItD͛8syK"wEBB )HJիUE3u\D,},FF%"r.j%(@ݻxM@*DPcDT9 `0`৲˘3kdB֬` !Ty֩WTFΣ|ͻn:p>{7݃AʇW%6j@1-PCT ‹o@půgo4xu e.=s6 0Ü5pOσ>O?rT(av>avġτXPTC9pCqC?:c?GcrHbxL/Q F3 i}rqp<.L 'j)Ա6wÄ*)ǃprQ:e@>CNjfRWl?PHJ:Ha#1>5b-ȇ#?! R#raj?H>#)bqOk$OoLJ@ )aEqO>. tqs"4V`Oxс?Q‚En aBX6G p(R[shGM qOv5@z ۂXr8f(ー0Hr$/,?$Y+/E<G OsqU/> G|íxˮ3,q?}L,"wxJ>>Б>!@z8`>1BfH؏wH6@xmre$|c ֩HRd` @na uh d>?|M) k&5 pp8tXG0h T" BA<!nr3.GFd["ܗ0 R0 F8p(? Hԑf'os$$H|D DPORI#.`Mr 8pD?6;XlD.–_&pJ! 0G?@P-qC :(PX9/Θ(A0;Hp67V$"wiY!Y[ zrPDV8˛n)AJMpѢx̜VIv KDDe7w؀,yݜ, :pCT+}K0k3#G"nrdH0(ui-xDq0DJ2P |4,f0ˬCk #M(xHc#GxihjD9XAp*)[2ʁTu@ &8cam WF47WMAkpD:8LQ 5"8)@;h0p2:֓dD!ЅanD(!X%' A@*FEuC GêD p 櫯-&!(B$ B 5kh|4"r@t@DC F0IzjP&\1"%+ $A~ڗj0r`FdMu8b}7)G^*oE `a.UU+ؤ#NG x 7w9/2o't =o#UtуQ*<Q*W"\D>LN;ڶ6 U C, GC{5q;a( 1nWUnMj%7J?@&13훁㙿V]©s]z DnQV ?wr6 8DHǦBkYwض h@X'ؠ{a"BTp hA|}ȅ9 S>" )A|<Ù0$I}IC@/h#Ih5mSC)@ ,C< W%L'.aaZSJX4|zȇ.TY0 8;3p&z=}hYpL9.I8A; uxE#B8 A7=Bb-S{'N H`. P`> W*_C2 bB (Elpw$"!`o@ jP.@`40@ McD$xFLl",b$ $.`` y` c0oX Qmb8b؅]Q@  mHpHnap0OPPPG@M 4yWEQrcsqX3G?s;8@ 0N0z D DP "p ` P =p  x  H @ @zDO|0 K7 `/ (  F 搏0PM T .1)+qّ! $p q;indicator-china-weather-1.1.0/icons/d17.gif000644 001750 001750 00000005552 12277056351 020730 0ustar00saucysaucy000000 000000 GIF89a00݄෿̽лɧ“䅑ƫòܜׂၯ∴4p7s6q8s;v;u=x;r?zA|@zB}E~HHt_Fnnqsqyty{ރ恱ჳㄴ䆶唿邡¯ضҽ0q1r'Z*_3q5s3p0i5s4q5r4p/f6s5r7t6s8u9v8u8s;x9v7p5m:w:u;x?}=zyA~?z>zA~3bA|A}B}B~>v7iCE=qE}CzILOI}PCsRGxFvLFuVYQIxUL{\PHsaZcaR~fd_hkgdikdhkpmZnrpsrrql^wUzvvx{zyہ|{~}߁䀳yׂ䁴\惶g߅ㄴ⃳lfttyՄʢҢܮ6tAtDwooq߁⃶サ⁴Ĭն!,00iS$ .atYȰÇ^#ƒ”1#L0`Iɓ$`R eȔy&̛8s 2JP.gb r3d̔;CU\fP:ׯ`~Qn 5k@TkcAsf٧s5ġ-Y6iHrihh̹3 6pjА%K()#'Z/4jHN8ii3 S 7Zy@܃s)iGNuggsËccϛ>Br&LHAJ/lΟ( 89^|p LYdžv!vh푓 RH0A*@1~C9c!y1P@&a-ATD [!PH<@!nxqLƒ@)e 0 d`IH! f!6H8l#+P".F0{fxàPH"H^p2s=^y \(p*5͵d>9檫 X L3c 긊"$,d'^` ,l*H#,2Ƥćbb`)ޫ"6,2p"/"bB|S5*Og/njpBWv7o]嘻IB%XK6v3J}:g8 b $ #hR.`3=|p|zΎC^3@ P b{W. _޸o5|?81 X (?&3.Ql``:P >1qc!Ntb_' G` d<E1.AP?xЃ':"5HbmYЂ!p#,%Bp+h XУ UG>0GqE&FHBA 3V3HQ"(E)2{3ylbHE&aL"(E*HXF7as`2(*TъTx5 8E+HLsDa8#&qLUȄ#@sNF^1M"d+-j!VZ+C #⯴@G' kPa%ktDajV҂E(&HDA$ ^P$sL-$1 mS\_ E< 0'Pqp.VA 1D+|P? ]08B0tLtBjE滊\\E.\ *0 Qq _7G06 "GS| b.faD.яD!@10aǴ y\@/a 1Oa~/9().uGH cc34R(HCыuŀ ܂A+-Bq*Dx%\u\(2ց \f/B h ȵswD/.K^i@c .P1Qp2%,e@߱d|@F3 &Lc-VhtP.;V.nm&0a Q p#pF;wHXF;i8GwGrw8'x4! g8 g4HB4h8F/ҕބ3MoɛhCN?;indicator-china-weather-1.1.0/icons/n10.gif000644 001750 001750 00000005531 12277056351 020730 0ustar00saucysaucy000000 000000 GIF89a008Z8Z2P˰ȷ̵ũǹξѼݹ/Qȵɹ6[/N5W8[!9Y1Nt6Syʣ0Q5W1R3T9[:] =`!>a!;\%Be+Kq,Lr)Fi$>],Jp+Im.Nt-Ko/Lp6X4T{2Pv2Pt8X7W}9Y:Z8V{7Uy;Y0Ih:X|s‡ý.N3U1Q3S/L0N0M1O5U6V2O3Q7W8X4R9Y5S6T;[7U'Hn#Ac!>]&Fj)Jp :W'Ef*Ik'Ca0Qw*Hh)Ee2Sy-Kl4V|4V{6X~5W|'@[7Z6X}7Y~9[5Su4Rr>`cflQhæw jqU*|X%㪹ЛqR&+ xgV̝3/rȄ0` A*H H@J r F f&0(2$B qa,{員1!|P?8а,L6+h+|F91##0| Gآ$ B:p%b%L@ `t`bˤI - HS96Ao4 ] /<)C(dǦ,H AH Ppv@—azA.*@ fcG+;q(|ê^` fB @,GB. :Bs (2zA+[md >  wK R &!B. App.@m = Ђ ,*b0J" vЁ,E A<6.'1|r@] .agtF ~4 "}x"JCl> لwp(kG! l0Bao/ѡ@䬁ˆH"H"#H[o <>!Mw indicator-china-weather-1.1.0/icons/d14.gif000644 001750 001750 00000005220 12277056351 020715 0ustar00saucysaucy000000 000000 GIF89a00:==ABCCBDDEG>MOHQUWVn}alӃyhȈrƔ}˟ϩ9;;<==>>?@@?BABCEDFFFHJIIKJKLMLOND=PPOSSVUQ?zGYXZ\^Nac\eUiPp^critvcy{~~}tdÂuրؕڠآ۱ޭ!,002*\xPTq[°EJY.%|BIɓ#T(P@0cʜ `fK1oDѣH4)BLb( bµׯLpDC : X2xE/" Zd!z>lhǐ#KLɔE]t]2%' $ A"@'Xw &WTYdad'"j &jp F, waG)Xhb@ ( 9$Dɢ CB A9;B (G)&(ZD2(Dn1ZdC(!D0 4Ё;U2ʙDj(")l((а@<8C: )褩) ) 'bE;IHAA |BpЂ Ͳ@)V[*x0G 4CA P`B :cq+lB>x ,Ѓ ǫA 4Sp )P++BGx=g 1pZATdCd"+$>3<0wЁ'l8p,lB ?LP)$x0 4g;|AwP'T +`l x 1+wz1c OO\8xA 2+t! -0)9\*x:p@3Ȱ4L)t-rK,tĺ{*Ƃx1dЃk#CXA[₹_,,l5:@@ Ba4/tC]hvOp0bX5PЏyы. ,P ( \P#Zۺ>Ꮐ;indicator-china-weather-1.1.0/icons/ls1.gif000644 001750 001750 00000002234 12277056351 021026 0ustar00saucysaucy000000 000000 GIF89aABܜ״ᔬ!,AB%8Ul뾪S4 |.Gh$etJZd0"+`LϴznF0d$pbaX.  7%a  Nx`| N]xat"ͮ ]&N ] -*\ȰaV ./JZ Ǐ CQwI¨q˗0e; Xbϟ@ J PlVy!PJJիQ[4U_N,ٱ -ٷn]u)Zx1<Eyn`Y*@`òir"TAc˯$n  b3sivIƀp7[D±Âp)-~{Wٳ!X`G }.utٰ)C.!y჏G0! xN|P} @PP~W ⠁ ^`UD,GZ~ 6"xgb,j @D*8AxH@ 8H (؈@ʢm yHP ! A9OF4Y Dif!b,MŖQ^sH b p souJH %)`܏_ }f3zbyS@0"4٦ @0^)H@_tyf9A> H"g6[  9m5$H$ CB65)iuY'/on80ht0z*0H@A +HBX|`TA\ǖUEq([vM8PM|3L:5 2?K0 E9 qM ^G*:>OG0l S#a|HKF5ICr4G.@^ aC{0砇.q4HꬷC.촗;indicator-china-weather-1.1.0/icons/n11.gif000644 001750 001750 00000005642 12277056351 020734 0ustar00saucysaucy000000 000000 GIF89a008Z8Z鴻˹ָòȶ̾ŸĩӮވƵɹͱ!;]]&Gi(Jm(Il'Hj$Ba">[*Kn&Ed-Qu*Kl)Ij-Os,Mp+Ln-Nq)Hg.Or.Pr-Mn0Qt.Op0Qr5Y}4W{3Vx2Tv7[8\6X{5Vy6Wz8Z}8Y|9Z{:[|?`/L1M2N3O5Q=\?^c͇mf>y['rҩ N<UcB(PG/^ 0$a5x9ÃWE|TEP 7t6(X!1#^(}; @6M 1@ u1wt ะtTga `pbG:Q`*a&>`fBt E4?1SE@4@^xXS c=eOWc؆*Uf=fa NS /N D9wl \6M􂫁pGNC,PFD2 h -'8"HX,e<FB A\G#hkedBR%` h@Cʈ4 ]AUPygH,,@c. J#^J$a)PFdX"QF'Bq KPF/:@XB3v AXbx,<A! G!B, N؃.E3Q&xDDi tQȂ%jQg Ps*qb4*QcmϘF0|\U lN&ELz- y͐X͏y`WD 8k bAԠF 葏̀Wp iȂjDlYuE3r|;P lw+؝M4 H%0 ^D41F,aC.a.y-*Q <(G1qg /Ա'N%Apn{0F<,oF s9s;|@5*ь8a0ԧN[ӯ.CP4xhO~KC Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . indicator-china-weather-1.1.0/icons/uv1.gif000644 001750 001750 00000002575 12277056351 021052 0ustar00saucysaucy000000 000000 GIF89a@>ܵᜲ揨!,@> %PeIp,j b?'KVȤrlT #JIBi\xL.peA|k;#   _U@_S  k<*^ kŒ[ q ,DyD[X #J(Up <Iɓ&1hK D xG ࠧϟ@bL!uҴz@I Iuժ!#) @%*DkH[vR<+\s֍t7 X(V߷mJ@@ّf K Y 0\@^]l6[Lx6b"Ke@4X^LЌ4v=-c<hܳ1[lm5W*,#VL'-V(r71A-Ǝb%/Ñ(PAᏜ I#]26^OZGR  :|g>w3}>R'Ԧ<#tX2enyx['FqEv_$u"ޗ5Y0ju@yE"?+ CG Z#hQ&o[@ Z4Ƞ7 %iC+D(Ax &B1w֐ $+H@"HLbTA>$ B*ZX̢X!;indicator-china-weather-1.1.0/data/media/icon_connection_error.png000644 001750 001750 00000000515 12277056351 025603 0ustar00saucysaucy000000 000000 PNG  IHDR\tEXtSoftwareAdobe ImageReadyqe<IDATxb? 0\@1(I0F@(ʐ T]F ǫ J0a5*AՎ",C٣0q&bMȂK] d2In f##< g!&$p:Dȉ f"H3h)F4mC=A vXQ\lR{<"\MVPi AO yzj{b<z?}R&IENDB`indicator-china-weather-1.1.0/icons/d15.gif000644 001750 001750 00000005466 12277056351 020732 0ustar00saucysaucy000000 000000 GIF89a00:;=>ABCDEEFFKDPOU^jrؗ}ʞͨޔ؜:9;;:<>=>?>@@?B@BBABEDFFFJIKA>LKGLL;~ONNOPRQ g;HcÓs'ҡX ʵ+;zUREӧNW7ܻwӇ:ɥ'!CПLe"!!E ?##t" vh#N2{ɢH2EZ#I̶ [P焞KBDHQ42r[@]Hc>"DO~|B8Į ` ̐,5*$VHND& A $B `"ZX!0#>H%7>$M<čCA  pO&T#0HWJ" &ZriX$pH$94C H '@p," ]RBI\"ht|sp&`B h薄^%NxpD'EI'Kb@ *rv -`Bd"ZNx'&<.P0`CF@)~AK3-ZL(x- ޑ + `+^BK[`A+0B skpB܀ )y(04D/B GcrO 7p p;@!)P)Р}%rOKA $hB4H0;bFḰ% ˎ%(Tb|(pт{7׻] <0 ̣ R/ [ RtXœ6 ~@Z@` ] S Ȃ0`_(@b nR8 fE'^ $"p VYȂ>atP*z!]Ti0v_cxGrJwdaNNq`H7]E юq 9^_ #Pa `,㦹(™4@1e,]0j˜k1bG d]0^&̈ts eT/|ZD| X8` *PVB=z73A SЀ3 +Wp4jcP,AB#h1c8q5n|ci\ҠƎ xuý?PjdC4 WB6 -c ؂-pAcFcaюX.y ]63aoxc؂?ڨej k4-FNk_B71l x0OW§=jm| ȵu n|MbƯml`w!7pb8n{8{;67!ez@~@:M3C98!sP8>omGC(3sL\A;indicator-china-weather-1.1.0/icons/n12.gif000644 001750 001750 00000005616 12277056351 020736 0ustar00saucysaucy000000 000000 GIF89a008Z8Z2P鬳ý߳˼䂋ƯƷͨӇūõʾѸԄ9\1R4U;]8Y6T">a!;Z%Bd+Kq,Lr)Fi-Jn.Kp5V/Mq6W*Dc1Os5U{2Pt9Y9Y9Y7U{/Ih.Gf:Z9W};Y`:Z;["@c >^&Fi&Eg#@_+Mr%Bb.Ou*Hj":U0Rw1Sx0Qv2Ty'A]4V{7Z5W|6X}9[4Qp4Mi>Uo}ĩǸ˽4U/M0N2P3Q;^4R5S1L6T7U@a<[ Ab5P"Dg!Cd:X!Bc6Q=\;Y!@_#Ba'Hk*Kn)Jl+Lo-Os,Mp-Nq)Hg2X}.Or/Ps-Mn0Ru0Qt.Op4X|3Ux2Sv6Y~3Tw7[5Wz.Lj6X{5Vy8Z}5Vw9\~8Y|:[|:SmD\uOe|t2O1M3O9X6S9V!Ba ?\'Eb+Kj-On6Z|6Xx8[{3M=Y3Z{2M!,00MzT*\ȰaGZIBSA43jȱnjL'o(S\ɲKh>!:Sj͚Ogrɳϟ{@cPBI 3 *5v \F>r o .,>$G>7T[M \H2|y0)`0 "O,uxpwA5|q/1 +?cuSC- -phB`SlMj3ݬw9\ հ$@S x !8a,L`XSJT5D%fGKcF <0 o1B[8BP-hGdՀ;L#/l#Vlaex-J ]QB. \,чCCjXV+@!Ql:cGO* [2T;QXi ;~/|1ZAE.r?&a#Lba/ (3F:jЃHAl!PB+p=xq%#V΄%0! asE/< D=r aS p!j$@u!|` 00 `CP?Q_ `@APc8Qiܣ(0z$}!F!V=C 1 #@F,j ̢b )AyA{$ ̐c\8/r4#HU* Իx7{kZG`D.>mD,!hr#&W7a, ZWm ~Wu@cx~4z[D!IF5l1pt {p,C>-DQXBB*[$ Bo1&bP9 ! <?@ah8*$k 3 gX"pB\ɐF21d0;Gy2 E0SQ&8?ԧN[>p&`NW(@WWЏ;indicator-china-weather-1.1.0/src/indicator_weatherconfig.py000644 001750 001750 00000004406 12277056351 024552 0ustar00saucysaucy000000 000000 # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2010 Sebastian MacDonald Sebas310@gmail.com # Copyright (C) 2010 Mehdi Rejraji mehd36@gmail.com # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE # THIS IS IndicatorWeather CONFIGURATION FILE # YOU CAN PUT THERE SOME GLOBAL VALUE # Do not touch unless you know what you're doing. # you're warned :) __all__ = [ 'project_path_not_found', 'get_data_file', 'get_data_path', ] # Where your project will look for your data (for instance, images and ui # files). By default, this is ../data, relative your trunk layout __indicator_weather_data_directory__ = '../data' __license__ = 'GPL-3' import os import gettext from gettext import gettext as _ gettext.textdomain('indicator-weather') class project_path_not_found(Exception): """Raised when we can't find the project directory.""" def get_data_file(*path_segments): """Get the full path to a data file. Returns the path to a file underneath the data directory (as defined by `get_data_path`). Equivalent to os.path.join(get_data_path(), *path_segments). """ return os.path.join(get_data_path(), *path_segments) def get_data_path(): """Retrieve indicator-china-weather data path This path is by default /../data/ in trunk and /usr/share/indicator-china-weather in an installed version but this path is specified at installation time. """ # Get pathname absolute or relative. path = os.path.join( os.path.dirname(__file__), __indicator_weather_data_directory__) abs_data_path = os.path.abspath(path) if not os.path.exists(abs_data_path): raise project_path_not_found return abs_data_path indicator-china-weather-1.1.0/icons/d16.gif000644 001750 001750 00000005527 12277056351 020731 0ustar00saucysaucy000000 000000 GIF89a00:;>@BABCBBDMPOcbqhbjŅw֑⡽ڲ;;;;<=<>==?@@BABCEEDFFFGJJIFC>:}ALNMONMOQPOSUUFXRA|]MZN^h[m[sXjvcbwzyri||qm҂ymǁvАtŕ؛ۢТܧS!,00$*\P!i xC >-r<\ӰGrxaC!"lF$ɲ˗0_aFJ9qg@Ν6<"%G8q &jϠ>uCGׯ:qC@&>ֹs t~ ~  `8u;$ w <8HBhaGϞ"A~(dC lO"qk'6={ 4NF4lwQ=hߞËG@z"CiYۡBÿ= "`h`2HRH&TPA9 3 /dRH ҇bb $+HP|· ldB,bA*,bd"$H$ |5p;aI"$D#0 @IoiF 0pC '!H#$@)$L" k) ܐ@r(B&0"V"R2 %T!!:9Ѐ9±`B#P% ^r %RHЂ5D`!6̐!:'A!\9U^& ?-PA WBA}B

P|(c(Uv) 2 e@Gq(d , q[X9`k0&XGUxRc*D#(^QMdNx7D!Or\+\WX+JQ 3#Ç@QWP/QAA-)Rar,)vb Pk g8JNx0D *کNh,"jRX(C@! rh.l1 V0aC (.rAS).X Pc*n_5:nQ Q܀GiJ \b4E0] C/v VDE/ڋ`bЪ.[0as^  0AXb h*`a X@1 ]},ۋvE/ d=jd|0LZbvGlAӮMp+\3qO &cHF+K}pCpv )0c.*̀Za )cpъ15ke3 g0û P!uF ]gB >`peG,bg@(F5q  1Ѡ|,@7iZXaGNsL lPm2p'0LiP 0?a "< ldtqSh`G6GC@CjLGԐ4p xpa a c0AеFlІ4 r_g`5V_؆1lc6~͎Zp p F< j#]Am/l kC Ɛw<Ѕm={G5c / 4ǼMrc0=0/_! w7>nGG=1;indicator-china-weather-1.1.0/data/ui/PreferencesDialog.ui000644 001750 001750 00000054566 12277056351 024012 0ustar00saucysaucy000000 000000 1 60 1 10 False 12 天气配置 mouse 320 300 ../media/chinaweather.png normal True False 6 True False end gtk-cancel False True False True False True False False 0 gtk-ok False True False False True False True False False 1 False False end 0 True True True False 12 12 True False True True False 0 3 <b>可变配置</b> True middle False True 0 Enable the Weather Indicator Applet False True False False 0 True True False True 1 图标旁显示温度 False True True False False 0 True False True 2 True False 6 True False 1 更新时间(<=60): True False True 0 True True True rate False False 1 True False 0 分钟 False True 2 True True 3 False True 0 True False True False 0 3 <b>固定配置</b> True False True 0 True False 12 True False True True False 0.0099999997764825821 0.50999999046325684 1 温标 :摄氏 (°C) True right False True 0 True False 0 3 风速单位: 蒲福级 True False True 1 True False 0 3 天气来源: 中国气象局 True False True 2 True True 1 False True 1 True False 常规 False True False 12 6 True True True in True True citieslist False False True 0 City True 0 True True 0 True False 6 start gtk-add False True True True False True 0.49000000953674316 0.4699999988079071 top False False 0 gtk-delete False True True True False True False False 1 False True 1 2 True False 地点 2 False False True 1 cancel_button ok_button indicator-china-weather-1.1.0/icons/n13.gif000644 001750 001750 00000005441 12277056351 020733 0ustar00saucysaucy000000 000000 GIF89a008Z³ʱȧĶ܅ǹεӽ-O.P0RϺ/N5W7YBYxɔ³Ⱦ2T.O5X0Q1R/M2S0O7Z3T1O4U3R<^!>a9Z%Bd8Y5U{4Rx9Y9Y6Tx:Z.Ge:X|]X5Y}3Uw7[4Vy8\6X{6Wz8Z}8Y|?Yth{ƶʻϳ0M1M2O4Q3O6S5Q6R>]9V;X$Dc'Hg'Fb+Lk3Y}.Pp7[}+CZ1K~_CR`4DDc+婓>_t̑(*f2(z*ؑS|4va h8ǎcq8"|#7;ATN9XN.h9 4O.ѣ r14hn[Nʜrց H:SO?cNPC .Qh6uzQ)8;>C 5sRΝw1窬ZjzG:?c<aDr1ne1MÚRkzT[->m> +2&``4HsD+aF/tJ<΃=B `@ P@A]TFo,L<)3Ol SP0a.h2G!}xq]t.W`bx_t IJ`IT3vиZD: `5܀ t)cAIBxАu{cH`7P'n:m &㌣:DBax *lp$XB15|(?KpX &[`bk4Ƙ0,\Ϣ%pK|W.8`| R@4BP!?D l; #!p gɁsԀp` 6+a H5w4p 02, =a-jaC[&0`w6660J E40*jq@Q8l@ԠZp e(:ڑ)ȀJX#(oqMTOXh@N@u&-y6n![Ђ˛ \)j@d2qȑ&d&-l!r ✂C%nLF: B\(\f<MԠb ̉s:"B ,2 PM{js?50X !RC1nfմK;`D2@051Lz.LzR] ⨄E` B L qpw7{a AaTA QjAFPJ0V@0a-|'a /XG`*ABK8*"C xc_1 \\# BV ÝHV JT Xq>Bc [D,K@% 0pZHD,*Tk <e_b]yQ b@ `5Xa (!F:pP @X"7h"a( ! \07lahNA\B'p`$,"F!E"0@ G*0<JC9эJ H0c_8DfcX/@`&Yp  E7 > # & @,,HXlh'#, K" H4N dTX&MR p$v[{`qjH@]` Ee[y@/vQg&$B @.z( M(DbݏEiM(zp-aCb5]g(z7'q :ž'>is:ېB:P y x܄Jh< ;indicator-china-weather-1.1.0/icons/xc1.gif000644 001750 001750 00000002271 12277056351 021023 0ustar00saucysaucy000000 000000 GIF89aABᜲ׼!,AB%8Ul뾪S4( 5!|7P HFr@Br8جvbU V|NSd  H%P e  T}"  ʶz e ִ& T H3`V]5ŋ3jȱcZ . j`L>bر˗=P$Ō3L d4ěN̢V*u@HT̪I@լUZ<]˖mml+`nܻjiʹӝiW VFx%+"V1bq35= , &Uy@-`@-Т|.ֺN-ٯݼ0؅;9׵`lAj[uC]u %Wu_avZ.p]}yEa=ց|&^l.&(~>ؠypÆvwޢ#H\H-3Hg+s0JfxHE-e>"-=¢..ZV Hs#NhYz$@3M&"b?v#/*>@H .r!#$"Hs!DBs`i!`eҔgok2Iz\ .ZbH< 9h(Gh-ظ (J랶ɫֲz#d*jΚ,N+[,/ګކmz."hKҙ{8h֋!O2Z .\XDߝZY&ɋR@N$(CVhs4I@RQ@ÀY&]!60hr >35 PN c1Ll}T0R#"o 2#<l4@'7HWa)w砇޹6!L;H.. /'ɇ;indicator-china-weather-1.1.0/src/indicator-china-weather.py000644 001750 001750 00000106145 12277056351 024365 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2010 Sebastian MacDonald Sebas310@gmail.com # Copyright (C) 2010 Mehdi Rejraji mehd36@gmail.com # Copyright (C) 2011 Vadim Rutkovsky roignac@gmail.com # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # Authors: Zhang Zhao vaguedream@hotmail.com # Kobe Lee kobe24_lixiang@126.com # wyan yiwuhehe@163.com # binghe kylinhebing@163.com # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE try: from gi.repository import Gio except ImportError: pass import os, sys, shutil, tempfile import gtk, pygtk, gobject import commands, threading import appindicator import logging, logging.handlers import traceback import types import time import string import pycwapi import forecastui from helpers import * from pm25 import * import gettext from gettext import gettext as _ from gettext import ngettext as __ from base import VERSION, PROJECT_ROOT_DIRECTORY CHN_CITY_LIST_FILE = os.path.join(PROJECT_ROOT_DIRECTORY, 'src/location.txt') INFO_TYPE = 'type' INFO_SETTING = 'setting' class Settings: db = None BASE_KEY = 'apps.indicators.chinaweather' REFRESH_RATE = 'refresh_rate' CITY_KEY = 'city_id' TEMPERATURE_KEY = 'show_temperature' PLACES = 'places' PLACECHOSEN = 'placechosen' INFO = { REFRESH_RATE : { INFO_TYPE : types.IntType, INFO_SETTING : 'refresh-rate' }, CITY_KEY : { INFO_TYPE : types.StringType, INFO_SETTING : 'city-id' }, TEMPERATURE_KEY : { INFO_TYPE : types.BooleanType, INFO_SETTING : 'show-temperature' }, PLACES : { INFO_TYPE : types.ListType, INFO_SETTING: 'places' }, PLACECHOSEN : { INFO_TYPE : types.IntType, INFO_SETTING: 'placechosen' }, } # Open the DB def prepare_settings_store(self): log.debug("Settings: preparing settings store") try: self.db = Gio.Settings.new(self.BASE_KEY) except Exception as e: log.debug("Settings: exception occurred while opening settings:\n %s" % str(e)) def get_value(self, setting, return_id = False): setting_name = Settings.INFO[setting][INFO_SETTING] try: setting_type = Settings.INFO[setting][INFO_TYPE] get_func = { types.IntType: self.db.get_int, types.StringType: self.db.get_string, types.BooleanType: self.db.get_boolean, types.ListType: self.db.get_string, types.DictType: self.db.get_string, types.NoneType: self.db.get_value, }[setting_type] return get_func(setting_name) except: log.debug("Settings: can't find value for %s" % setting) return None def set_value(self, setting, value): value = '' if value is None else value value = str(value) if type(value) is types.ListType else value log.debug("Settings: setting '%s'='%s'" % (setting, value)) setting_name = Settings.INFO[setting][INFO_SETTING] try: setting_type = Settings.INFO[setting][INFO_TYPE] set_func = { types.IntType: self.db.set_int, types.StringType: self.db.set_string, types.BooleanType: self.db.set_boolean, types.ListType: self.db.set_string, types.DictType: self.db.set_string, types.NoneType: self.db.set_value, }[setting_type] set_func(setting_name, value) except: log.debug( \ "Settings: schema for '%s' not found, aborting" % setting) class indicator_weather(threading.Thread): """ Indicator class """ def __init__(self): from pycwapi import get_location_from_cityid log.debug("Indicator: creating") threading.Thread.__init__(self) self.main_icon = os.path.join self.winder = appindicator.Indicator ("indicator-china-weather", "weather-indicator", appindicator.CATEGORY_OTHER) self.winder.set_status (appindicator.STATUS_ACTIVE) self.winder.set_attention_icon ("weather-indicator-error") self.settings = Settings() self.settings.prepare_settings_store() self.city_id = self.settings.get_value("city_id") self.temp = self.settings.get_value("show_temperature") self.rate = self.settings.get_value("refresh_rate") self.city_change_flag = False if self.rate in (False, None): default_value = 60 self.settings.set_value("refresh_rate", default_value) self.rate = default_value self.aboutdialog = None self.weather_data={} self.forecast_data={} self.icon = None self.menu = None self.place = None self.currentCity = None self.pm = {} self.places = str(self.settings.get_value("places")) self.placechosen = self.settings.get_value("placechosen") self.actualization_time = 0 self.pm25_flag = False #(LP: #1153468) if self.city_id not in (False, None, '', '[]', "['']") and self.places in (False, None, '', '[]', "['']"): locations = get_location_from_cityid(self.city_id) self.places = [[self.city_id, locations]] self.settings.set_value("places", str(self.places)) self.places = str(self.settings.get_value("places")) self.weather_icons={ 'd0.gif':'weather-clear', 'd1.gif':'weather-few-clouds', 'd2.gif':'weather-few-clouds', 'd3.gif':'weather-showers', 'd4.gif':'weather-showers', 'd5.gif':'weather-showers', 'd6.gif':'weather-snow', 'd7.gif':'weather-showers', 'd8.gif':'weather-showers', 'd9.gif':'weather-showers', 'd10.gif':'weather-showers', 'd11.gif':'weather-showers', 'd12.gif':'weather-showers', 'd13.gif':'weather-snow', 'd14.gif':'weather-snow', 'd15.gif':'weather-snow', 'd16.gif':'weather-snow', 'd17.gif':'weather-snow', 'd18.gif':'weather-fog', 'd19.gif':'weather-snow', 'd20.gif':'weather-fog', 'd21.gif':'weather-showers', 'd22.gif':'weather-showers', 'd23.gif':'weather-showers', 'd24.gif':'weather-showers', 'd25.gif':'weather-showers', 'd26.gif':'weather-snow', 'd27.gif':'weather-snow', 'd28.gif':'weather-snow', 'd29.gif':'weather-fog', 'd30.gif':'weather-fog', 'd31.gif':'weather-fog', 'd53.gif':'weather-fog', 'n0.gif':'weather-clear-night', 'n1.gif':'weather-few-clouds-night', 'n2.gif':'weather-few-clouds-night', 'n3.gif':'weather-showers', 'n4.gif':'weather-showers', 'n5.gif':'weather-showers', 'n6.gif':'weather-snow', 'n7.gif':'weather-showers', 'n8.gif':'weather-showers', 'n9.gif':'weather-showers', 'n10.gif':'weather-showers', 'n11.gif':'weather-showers', 'n12.gif':'weather-showers', 'n13.gif':'weather-snow', 'n14.gif':'weather-snow', 'n15.gif':'weather-snow', 'n16.gif':'weather-snow', 'n17.gif':'weather-snow', 'n18.gif':'weather-fog', 'n19.gif':'weather-showers', 'n20.gif':'weather-fog', 'n21.gif':'weather-showers', 'n22.gif':'weather-showers', 'n23.gif':'weather-showers', 'n24.gif':'weather-showers', 'n25.gif':'weather-showers', 'n26.gif':'weather-snow', 'n27.gif':'weather-snow', 'n28.gif':'weather-snow', 'n29.gif':'weather-fog', 'n30.gif':'weather-fog', 'n31.gif':'weather-fog', 'n53.gif':'weather-fog' } if self.city_id in (False, None, '[]', ''): self.menu_noplace() else:#(LP: #1153906) self.places = eval(self.places) if self.placechosen >= len(self.places): self.placechosen = 0 self.place = self.places[self.placechosen] self.menu_normal() # when program start, it update_data 20130614 self.pm25_flag = True self.update_data() # Fixed bug about update time (LP: #1131556) gobject.timeout_add_seconds(60, self.work) # Show a menu if no places specified def menu_noplace(self): log.debug("Indicator: making a menu for no places") menu_noplace = gtk.Menu() setup = gtk.MenuItem(_("配置地点...")) setup.connect("activate", self.prefs) menu_noplace.append(setup) setup.show() about = gtk.MenuItem(_("关于...")) about.connect("activate", self.about) about.show() menu_noplace.append(about) quit = gtk.ImageMenuItem(gtk.STOCK_QUIT) quit.connect("activate", self.quit) quit.show() menu_noplace.append(quit) self.winder.set_menu(menu_noplace) # Show menu with data def menu_normal(self): log.debug("Indicator: menu_normal: filling in a menu for found places") self.menu = gtk.Menu() ##City self.city_show = gtk.MenuItem(_("城市:N/A")) self.city_show.set_sensitive(True) self.city_show.show() self.menu.append(self.city_show) ##Weather self.weather_show = gtk.MenuItem(_("天气:N/A")) self.weather_show.set_sensitive(True) self.weather_show.show() self.menu.append(self.weather_show) ##Temperature self.temp_show = gtk.MenuItem(_("当前气温:N/A")) self.temp_show.set_sensitive(True) self.temp_show.show() self.menu.append(self.temp_show) ##HighTemp #self.temp1_show = gtk.MenuItem() #self.temp1_show.set_sensitive(True) #self.temp1_show.show() #self.menu.append(self.temp1_show) ##LowTemp #self.temp2_show = gtk.MenuItem() #self.temp2_show.set_sensitive(True) #self.temp2_show.show() #self.menu.append(self.temp2_show) ##Humidity self.SD_show = gtk.MenuItem(_("湿度:N/A")) self.SD_show.set_sensitive(True) self.SD_show.show() self.menu.append(self.SD_show) ##Wind Direction self.WD_show = gtk.MenuItem(_("风向:N/A")) self.WD_show.set_sensitive(True) self.WD_show.show() self.menu.append(self.WD_show) ##Wind Strength self.WS_show = gtk.MenuItem(_("风力:N/A")) self.WS_show.set_sensitive(True) self.WS_show.show() self.menu.append(self.WS_show) ##Update Time self.time_show = gtk.MenuItem(_("更新时间:N/A")) self.time_show.set_sensitive(True) self.time_show.show() self.menu.append(self.time_show) self.pm_show = gtk.MenuItem(_("PM2.5:N/A")) self.pm_show.set_sensitive(True) self.pm_show.show() self.menu.append(self.pm_show) ##Breaker breaker = gtk.SeparatorMenuItem() breaker.show() self.menu.append(breaker) ##Cities if len(self.places) != 1: log.debug("Indicator: menu_normal: adding first location menu item '%s'" % self.places[0][1]) loco1 = gtk.RadioMenuItem(None, self.places[0][1]) if self.placechosen == 0: loco1.set_active(True) # added by kobe 20140212 self.currentCity = self.places[0][1] loco1.connect("toggled", self.on_city_changed) loco1.show() self.menu.append(loco1) for place in self.places[1:]: log.debug("Indicator: menu_normal: adding location menu item '%s'" % place[1]) loco = gtk.RadioMenuItem(loco1, place[1]) if self.places.index(place) == self.placechosen: loco.set_active(True) # added by kobe 20140212 self.currentCity = place[1] loco.connect("toggled", self.on_city_changed) loco.show() self.menu.append(loco) breaker = gtk.SeparatorMenuItem() breaker.show() self.menu.append(breaker) ext_show = gtk.MenuItem(_("六天天气预报")) ext_show.connect("activate", self.forecast) ext_show.show() self.menu.append(ext_show) ##Update Button self.refresh_show = gtk.MenuItem(_("更新")) self.refresh_show.connect("activate", self.update_data) self.refresh_show.show() self.menu.append(self.refresh_show) ##Preferences prefs_show = gtk.MenuItem(_("配置...")) prefs_show.connect("activate", self.prefs) prefs_show.show() self.menu.append(prefs_show) ##About about_show = gtk.MenuItem(_("关于...")) about_show.connect("activate", self.about) about_show.show() self.menu.append(about_show) ##Quit quit = gtk.ImageMenuItem(gtk.STOCK_QUIT) quit.connect("activate", self.quit) quit.show() self.menu.append(quit) self.winder.set_menu(self.menu) self.update_label(" ") self.work() def on_city_changed(self,widget): if widget.get_active(): for place in self.places: if (place[1] == widget.get_label()): log.debug("Indicator: new location selected: %s" % self.places.index(place)) self.placechosen = self.places.index(place) break if self.placechosen >= len(self.places): self.placechosen = 0 self.place = self.places[self.placechosen] self.settings.set_value("placechosen", self.placechosen) self.city_id = self.places[self.placechosen][0] self.settings.set_value("city_id", self.city_id) # when change city, it update_data 20130614 self.pm25_flag = True self.update_data() # Set a label of indicator def update_label(self, label): if (hasattr(self.winder, 'set_label')): log.debug("Indicator: update_label: setting label to '%s'" % label) self.previous_label_value = label self.winder.set_label(label) self.winder.set_status(appindicator.STATUS_ATTENTION) self.winder.set_status(appindicator.STATUS_ACTIVE) # Quit the applet def quit(self, widget, data=None): log.debug("Indicator: Quitting") gtk.main_quit() # Get forecast def get_forecast(self): log.debug("Indicator: getForecast: getting forecast for %s" % self.city_id) try: self.forecast_data = pycwapi.get_weather_from_nmc(self.city_id, 1) except Exception, e: log.error(e) log.debug(traceback.format_exc(e)) # Get and set weather def get_set_weather(self): log.debug("Indicator: updateWeather: updating weather for %s" % self.city_id) try: self.weather_data = pycwapi.get_weather_from_nmc(self.city_id, 0) if self.weather_data is not None: log.debug("Indicator: loading weather from cache for %s" % self.city_id) self.ptime = self.weather_data['ptime'] pint = string.atoi(self.ptime.split(':')[0]) if pint > 7 or pint < 20: self.icon = self.weather_icons[self.weather_data['img1']] else : self.icon = self.weather_icons[self.weather_data['img2']] self.menu_normal() self.winder.set_icon(self.icon) self.city_show.set_label(self.weather_data['city']) self.weather_show.set_label(_('天气:') + self.weather_data['weather']) self.temp_show.set_label(_('当前气温:') + self.weather_data['temp'] + '℃') #self.temp1_show.set_label(_('最高气温:') + self.weather_data['temp1']) #self.temp2_show.set_label(_('最低气温:') + self.weather_data['temp2']) self.SD_show.set_label(_('湿度:') + self.weather_data['SD']) self.WD_show.set_label(_('风向:') + self.weather_data['WD']) self.WS_show.set_label(_('风力:') + self.weather_data['WS']) self.time_show.set_label(_('发布时间:') + self.weather_data['time']) #self.refresh_show.set_label(_('更新')) #city = self.place.split(',')[2] #self.pm = get_pm_from_city(city) if self.pm in (False, None, '', '[]', "['']"):#(LP: #1152853) self.pm = {} pm_flag = False if self.pm.has_key('aqi') and self.pm.has_key('quality'): pm_flag = True if not pm_flag: self.pm_show.set_label(_('PM2.5:') + 'N/A') else: if self.pm.has_key('error'): self.pm_show.set_label(_('PM2.5:') + 'N/A') else: self.pm_show.set_label(_('PM2.5:') + self.pm['quality'] + ' ' + str(self.pm['aqi'])) if self.temp: self.update_label(self.weather_data['temp'] + '℃') self.winder.set_status(appindicator.STATUS_ATTENTION) self.winder.set_status(appindicator.STATUS_ACTIVE) except Exception, e: log.error(e) log.debug(traceback.format_exc(e)) self.schedule_weather_update() # Get PM2.5 information from website def get_pm_info(self): from pycwapi import get_location_from_cityid try: self.pm = get_pm(self.place[1].split(',')[2]) if self.pm in (False, None, '', '[]', "['']"): self.pm = {} if self.pm.has_key('error'): self.pm_show.set_label(_('PM2.5:') + 'N/A') else: self.pm_show.set_label(_('PM2.5:') + self.pm['quality'] + ' ' + str(self.pm['aqi'])) except Exception, e: log.error(e) log.debug(traceback.format_exc(e)) # update time def work(self): ut = int(round((time.time()-self.actualization_time)/60.0,0)) if self.actualization_time == 0 or ut == 0: msg = '刚刚' else: msg = str(ut)+'分钟之前' self.refresh_show.set_label('更新'+' ('+msg+')') if (time.time()-self.actualization_time) > self.rate*60: self.actualization_time = time.time() return True # Update weather and forecast def update_data(self, widget = None): threading.Thread(target=self.get_set_weather, name='Weather').start() threading.Thread(target=self.get_forecast, name='Forecast').start() if self.pm25_flag: self.pm25_flag = False threading.Thread(target=self.get_pm_info, name='PM25').start() self.actualization_time = 0 self.work() # Update PM2.5 once every 6 hours when automatic updates def only_update_pm25(self, widget = None): threading.Thread(target=self.get_pm_info, name='PM25').start() # Menu callbacks # Open Preferences dialog def prefs(self, widget): log.debug("Indicator: open Preferences") if ((not hasattr(self, 'prefswindow')) or (not self.prefswindow.get_visible())): self.prefswindow = PreferencesDialog() self.prefswindow.show() def about(self, widget): log.debug("Indicator: open About dialog") if self.aboutdialog == None:#(LP: #1154085) self.aboutdialog = gtk.AboutDialog() self.aboutdialog.set_name(_("Indicator China Weather")) self.aboutdialog.set_version(VERSION) self.aboutdialog.set_copyright('Copyright (C) 2013 ~ 2014 UbuntuKylin Team xiangli@ubuntukylin.com') self.aboutdialog.set_comments(_('天气插件:提供来自于中国气象局的六天天气预报信息,添加\n人们日益关注的PM2.5指数,支持多城市切换和数据自动更新,\n分享每日生活指数和建议,为用户日常起居和旅行提供参考。')) ifile = open(os.path.join(PROJECT_ROOT_DIRECTORY, "COPYING"), "r") self.aboutdialog.set_license(ifile.read().replace('\x0c', '')) ifile.close() self.aboutdialog.set_website("https://launchpad.net/indicator-china-weather") self.aboutdialog.set_documenters(['Zhang Zhao ', 'yanwang ', 'binghe ']) self.aboutdialog.set_artists(['Ou Yangyu']) logo_path = os.path.join(PROJECT_ROOT_DIRECTORY, "data/media/chinaweather.png") self.aboutdialog.set_logo(gtk.gdk.pixbuf_new_from_file(logo_path)) self.aboutdialog.connect("response", self.about_close) self.aboutdialog.show() def about_close(self, widget, event=None): log.debug("Indicator: closing About dialog") self.aboutdialog.destroy() self.aboutdialog = None # Schedule weather update def schedule_weather_update(self, rate_override = None): if hasattr(self, "rate_id"): gobject.source_remove(self.rate_id) if rate_override: self.rate_id = gobject.timeout_add( int(rate_override) * 60000, self.update_data) else: self.rate_id = gobject.timeout_add( int(self.rate) * 60000, self.update_data) # Update PM2.5 once every 6 hours(LP: #1190910) gobject.timeout_add(360 * 60000, self.only_update_pm25) def forecast(self, widget): # added by kobe 20140212 self.forecast_data['city'] = self.currentCity self.forecastwd = forecastui.ExtendedForecast(self.forecast_data) class PreferencesDialog(gtk.Dialog): """ Class for preferences dialog """ __gtype_name__ = "PreferencesDialog" # Creating a new preferences dialog def __new__(cls): builder = get_builder('PreferencesDialog') new_object = builder.get_object("preferences_dialog") new_object.finish_initializing(builder) return new_object # Fill in preferences dialog with currect data def finish_initializing(self, builder): from pycwapi import get_location_from_cityid self.builder = builder self.builder.get_object('rate').set_value(float(iw.rate)) self.show_label = self.builder.get_object('show_label') #display temperature self.show_label.set_active(iw.temp) self.spinbutton_rate = self.builder.get_object('spinbutton_rate') #update_time self.spinbutton_rate.set_value(float(iw.rate)) if iw.places != None: for place in iw.places: if len(place)>1: log.debug("Preferences: Places: got (%s, %s)" % (place[1], place[0])) newplace = list() newplace.append(place[1]) newplace.append(place[0]) newplace.append(place[0]) self.builder.get_object('citieslist').append(newplace) self.builder.get_object('ok_button').set_sensitive(True) self.builder.connect_signals(self) # 'Remove' clicked - remove location from list #TODO: Update settings object def on_remove_location(self, widget): selection = self.builder.get_object('location_list').get_selection() model, iter = selection.get_selected() if iter != None: model.remove(iter) iw.city_id = '' if (self.builder.get_object('citieslist').get_iter_first() == None): self.builder.get_object('ok_button').set_sensitive(False) # 'Add' clicked - create a new Assistant def on_add_location(self, widget): if ((not hasattr(self, 'assistant')) or (not self.assistant.get_visible())): self.assistant = Assistant() self.assistant.show() # 'OK' clicked - save settings def ok(self, widget, data=None): need_to_update = False #City id if iw.city_change_flag: iw.city_change_flag = False need_to_update = True #Show temperature new_show_label = self.builder.get_object('show_label').get_active() if (iw.temp != new_show_label): iw.temp = new_show_label iw.settings.set_value("show_temperature", new_show_label) need_to_update = True #Update time rate_value = self.spinbutton_rate.get_text() if int(rate_value) != iw.rate: iw.settings.set_value("refresh_rate", int(rate_value)) iw.rate = int(rate_value) need_to_update = True # Get places from location list newplaces = list() item = self.builder.get_object('citieslist').get_iter_first() while (item != None): newplace = list() newplace.append(self.builder.get_object('citieslist').get_value (item, 1)) newplace.append(self.builder.get_object('citieslist').get_value (item, 0)) newplaces.append(newplace) item = self.builder.get_object('citieslist').iter_next(item) # If places have changed - update weather data if newplaces != iw.places: iw.places = newplaces log.debug("Preferences: Places changed to '%s'" % str(iw.places)) iw.settings.set_value("places", str(iw.places)) if (type(iw.place) != None) and (iw.place in iw.places): iw.placechosen = iw.places.index(iw.place) iw.city_id = iw.place[0] else: iw.placechosen = 0 iw.settings.set_value("placechosen", str(iw.placechosen)) iw.place = iw.places[0] iw.city_id = iw.places[0][0] log.debug("Preferences: Place Chosen changed to '%s'" % iw.placechosen) iw.settings.set_value("city_id", str(iw.city_id)) iw.settings.set_value("placechosen", iw.placechosen) iw.menu_normal() need_to_update = True if need_to_update: # when add city, it update_data 20130614 iw.pm25_flag = True iw.update_data() self.destroy() # 'Cancel' click - forget all changes def cancel(self, widget, data=None): self.destroy() class Assistant(gtk.Assistant): """ Class for a wizard, which helps to add a new location in location list """ __gtype_name__ = "Assistant" # Create new object def __new__(cls): builder = get_builder('Assistant') new_object = builder.get_object("assistant") new_object.finish_initializing(builder) return new_object # Finish UI initialization - prepare combobox def finish_initializing(self, builder): self.builder = builder self.builder.connect_signals(self) self.assistant = self.builder.get_object("assistant") self.assistant.set_page_complete(self.builder.get_object("label"),True) self.assistant.set_page_complete(self.builder.get_object("review"),True) # Set up combobox self.store = gtk.ListStore(str) self.location_input_combo = self.builder.get_object("combolocations") self.location_input_combo.set_model(self.store) self.location_input_combo.set_text_column(0) self.location_entry = self.builder.get_object("entrylocation") self.place_selected = None self.location = None self.cityid = '' self.dict = {} self.assistant.set_forward_page_func(self.next_page) # 'Get cities' button clicked - get suggested cities list def on_get_city_names(self, widget): new_text = self.location_entry.get_text() new_text = new_text.lower().replace(' ', '') self.store.clear() f = open(CHN_CITY_LIST_FILE, 'r') self.dist = {} for line in f.readlines(): if new_text in line: keys = line.split(':')[0] values = line.split(':')[1] self.store.append([keys]) self.dict[keys] = values self.location_input_combo.popup() # A city is selected from suggested list def on_select_city(self, entry): if self.location_input_combo.get_active() != -1: self.place_selected = self.store[self.location_input_combo.get_active()] self.assistant.set_page_complete(self.builder.get_object("placeinput"),True) self.context = self.location_entry.get_text() for key in self.dict: if key == self.context: self.cityid = self.dict[key] break else: self.place_selected = None self.location = None self.assistant.set_page_complete(self.builder.get_object("placeinput"), False) # Create a location object out of a selected location def next_page(self, current_page): if (self.assistant.get_current_page() == 0) and not self.location and self.place_selected: text = self.place_selected[0] self.builder.get_object("entrylbl").set_text(text) elif self.assistant.get_current_page() == 1: # Confirmation page lbl = self.builder.get_object("entrylbl").get_text() # If empty label was input, set label to short city name if lbl == '': lbl = self.place_selected[0] self.builder.get_object("lbl3").set_label(_('标签:')) self.builder.get_object("labellbl").set_label('%s' % lbl) self.builder.get_object("placelbl").set_label('%s' % self.place_selected[0]) return self.assistant.get_current_page() + 1 # 'Cancel' clicked def on_cancel(self,widget): self.destroy() # 'Apply' clicked - save location details, add an entry in a location list def on_apply(self,widget): if self.cityid != iw.city_id: iw.city_change_flag = True else: iw.city_change_flag = False iw.city_id = self.cityid # --------added 20140211 by kobe-------- flag = False for placeitem in iw.places: if placeitem[0] == iw.city_id: flag = True break if flag: flag = False else: iw.place = [self.cityid,self.context] iw.settings.set_value("city_id", self.cityid) if iw.places not in (False, None, '', '[]', "['']") and iw.place in iw.places and iw.prefswindow.builder.get_object('citieslist').get_iter_first() != None: iw.placechosen = iw.places.index(iw.place) else: newplace = list() newplace.append(self.context)#Label newplace.append(self.cityid)#City newplace.append(self.cityid)#details item = iw.prefswindow.builder.get_object('citieslist').get_iter_first() iw.prefswindow.builder.get_object('citieslist').append(newplace) # Enable 'OK' button in Preferences iw.prefswindow.builder.get_object('ok_button').set_sensitive(True) self.hide() # ensure that single instance of applet is running for each user class SingleInstance(object): #Initialize, specifying a path to store pids def __init__(self,pidPath): self.pidPath = pidPath if os.path.exists(pidPath): log.debug("SingleInstance: pid file %s exists" % pidPath) # Make sure it is not a "stale" pidFile pid = open(pidPath, 'r').read().strip() # Check list of running pids, if not running it is stale so overwrite pidRunning = commands.getoutput('ls -1 /proc | grep ^%s$' % pid) log.debug("SingleInstance: pid running %s" % pidRunning) self.lasterror = True if pidRunning else False else: self.lasterror = False if not self.lasterror: log.debug("SingleInstance: writing new pid %s" % str(os.getpid())) # Create a temp file, copy it to pidPath and remove temporary file (fp, temp_path) = tempfile.mkstemp() try: os.fdopen(fp, "w+b").write(str(os.getpid())) shutil.copy(temp_path, pidPath) os.unlink(temp_path) except Exception as e: log.error("SingleInstance: exception while renaming '%s' to '%s':\n %s" % (temp_path, pidPath, str(e))) def is_already_running(self): return self.lasterror def __del__(self): if not self.lasterror: log.debug("SingleInstance: deleting %s" % self.pidPath) os.unlink(self.pidPath) def main(): gtk.main() return 0 if __name__ == "__main__": # Enable and configure logs global log cachedir = os.environ.get('XDG_CACHE_HOME','').strip() if not cachedir: cachedir = os.path.expanduser("~/.cache") log_filename = os.path.join(cachedir, "indicator-china-weather.log") if os.path.exists(log_filename): #os.remove(log_filename) print 'Log file exists...' else: print 'Log file does not exists...' log = logging.getLogger('IndicatorChinaWeather') log.propagate = False log.setLevel(logging.DEBUG) log_handler = logging.handlers.RotatingFileHandler(log_filename, maxBytes=1024*1024, backupCount=5) log_formatter = logging.Formatter("[%(threadName)s] %(asctime)s - %(levelname)s - %(message)s") log_handler.setFormatter(log_formatter) log.addHandler(log_handler) log.info("-------Started Indicator China Weather from %s --------" % PROJECT_ROOT_DIRECTORY) # Single instance stuff for weather indicator myapp = SingleInstance("/tmp/indicator-china-weather-%d.pid" % os.getuid()) # check is another instance of same program running if myapp.is_already_running(): log.info("Another instance of this program is already running") sys.exit(_("Another instance of this program is already running")) # Set http proxy support ProxyMonitor.monitor_proxy(log) # Use date-time format as in indicator-datetime TimeFormatter.monitor_indicator_datetime(log) # not running, safe to continue... gtk.gdk.threads_init() gtk.gdk.threads_enter() iw = indicator_weather() main() gtk.gdk.threads_leave() indicator-china-weather-1.1.0/src/location.txt000644 001750 001750 00000310547 12277056351 021676 0ustar00saucysaucy000000 000000 北京,北京,北京:101010100:beijing 北京,北京,海淀:101010200:haidian 北京,北京,朝阳:101010300:chaoyang 北京,北京,顺义:101010400:shunyi 北京,北京,怀柔:101010500:huairou 北京,北京,通州:101010600:tongzhou 北京,北京,昌平:101010700:changping 北京,北京,延庆:101010800:yanqing 北京,北京,丰台:101010900:fengtai 北京,北京,石景山:101011000:shijingshan 北京,北京,大兴:101011100:daxing 北京,北京,房山:101011200:fangshan 北京,北京,密云:101011300:miyun 北京,北京,门头沟:101011400:mentougou 北京,北京,平谷:101011500:pinggu 上海,上海,上海:101020100:shanghai 上海,上海,闵行:101020200:minhang 上海,上海,宝山:101020300:baoshan 上海,上海,嘉定:101020500:jiading 上海,上海,浦东南汇:101020600:nanhui 上海,上海,金山:101020700:jinshan 上海,上海,青浦:101020800:qingpu 上海,上海,松江:101020900:songjiang 上海,上海,奉贤:101021000:fengxian 上海,上海,崇明:101021100:chongming 上海,上海,徐家汇:101021200:xujiahui 上海,上海,浦东:101021300:pudong 天津,天津,天津:101030100:tianjin 天津,天津,武清:101030200:wuqing 天津,天津,宝坻:101030300:baodi 天津,天津,东丽:101030400:dongli 天津,天津,西青:101030500:xiqing 天津,天津,北辰:101030600:beichen 天津,天津,宁河:101030700:ninghe 天津,天津,汉沽:101030800:hangu:han'gu 天津,天津,静海:101030900:jinghai 天津,天津,津南:101031000:jinnan 天津,天津,塘沽:101031100:tanggu 天津,天津,大港:101031200:dagang 天津,天津,蓟县:101031400:jixian 重庆,重庆,重庆:101040100:chongqing 重庆,重庆,永川:101040200:yongchuan 重庆,重庆,合川:101040300:hechuan 重庆,重庆,南川:101040400:nanchuan 重庆,重庆,江津:101040500:jiangjin 重庆,重庆,万盛:101040600:wansheng 重庆,重庆,渝北:101040700:yubei 重庆,重庆,北碚:101040800:beibei 重庆,重庆,巴南:101040900:banan:ba'nan 重庆,重庆,长寿:101041000:changshou 重庆,重庆,黔江:101041100:qianjiang 重庆,重庆,万州:101041300:wanzhou 重庆,重庆,涪陵:101041400:fuling 重庆,重庆,开县:101041500:kaixian 重庆,重庆,城口:101041600:chengkou 重庆,重庆,云阳:101041700:yunyang 重庆,重庆,巫溪:101041800:wuxi 重庆,重庆,奉节:101041900:fengjie 重庆,重庆,巫山:101042000:wushan 重庆,重庆,潼南:101042100:tongnan 重庆,重庆,垫江:101042200:dianjiang 重庆,重庆,梁平:101042300:liangping 重庆,重庆,忠县:101042400:zhongxian 重庆,重庆,石柱:101042500:shizhu 重庆,重庆,大足:101042600:dazu 重庆,重庆,荣昌:101042700:rongchang 重庆,重庆,铜梁:101042800:tongliang 重庆,重庆,璧山:101042900:bishan 重庆,重庆,丰都:101043000:fengdu 重庆,重庆,武隆:101043100:wulong 重庆,重庆,彭水:101043200:pengshui 重庆,重庆,綦江:101043300:qijiang 重庆,重庆,酉阳:101043400:youyang 重庆,重庆,秀山:101043600:xiushan 黑龙江,哈尔滨,哈尔滨:101050101:haerbin:ha'erbin 黑龙江,哈尔滨,双城:101050102:shuangcheng 黑龙江,哈尔滨,呼兰:101050103:hulan 黑龙江,哈尔滨,阿城:101050104:acheng 黑龙江,哈尔滨,宾县:101050105:binxian 黑龙江,哈尔滨,依兰:101050106:yilan 黑龙江,哈尔滨,巴彦:101050107:bayan 黑龙江,哈尔滨,通河:101050108:tonghe 黑龙江,哈尔滨,方正:101050109:fangzheng 黑龙江,哈尔滨,延寿:101050110:yanshou 黑龙江,哈尔滨,尚志:101050111:shangzhi 黑龙江,哈尔滨,五常:101050112:wuchang 黑龙江,哈尔滨,木兰:101050113:mulan 黑龙江,齐齐哈尔,齐齐哈尔:101050201:qiqihaer 黑龙江,齐齐哈尔,讷河:101050202:nehe 黑龙江,齐齐哈尔,龙江:101050203:longjiang 黑龙江,齐齐哈尔,甘南:101050204:gannan 黑龙江,齐齐哈尔,富裕:101050205:fuyu 黑龙江,齐齐哈尔,依安:101050206:yian 黑龙江,齐齐哈尔,拜泉:101050207:baiquan 黑龙江,齐齐哈尔,克山:101050208:keshan 黑龙江,齐齐哈尔,克东:101050209:kedong 黑龙江,齐齐哈尔,泰来:101050210:tailai 黑龙江,牡丹江,牡丹江:101050301:mudanjiang 黑龙江,牡丹江,海林:101050302:hailin 黑龙江,牡丹江,穆棱:101050303:muling 黑龙江,牡丹江,林口:101050304:linkou 黑龙江,牡丹江,绥芬河:101050305:suifenhe 黑龙江,牡丹江,宁安:101050306:ningan 黑龙江,牡丹江,东宁:101050307:dongning 黑龙江,佳木斯,佳木斯:101050401:jiamusi 黑龙江,佳木斯,汤原:101050402:tangyuan 黑龙江,佳木斯,抚远:101050403:fuyuan 黑龙江,佳木斯,桦川:101050404:huachuan 黑龙江,佳木斯,桦南:101050405:huanan 黑龙江,佳木斯,同江:101050406:tongjiang 黑龙江,佳木斯,富锦:101050407:fujin 黑龙江,绥化,绥化:101050501:suihua 黑龙江,绥化,肇东:101050502:zhaodong 黑龙江,绥化,安达:101050503:anda 黑龙江,绥化,海伦:101050504:hailun 黑龙江,绥化,明水:101050505:mingshui 黑龙江,绥化,望奎:101050506:wangkui 黑龙江,绥化,兰西:101050507:lanxi 黑龙江,绥化,青冈:101050508:qinggang 黑龙江,绥化,庆安:101050509:qingan 黑龙江,绥化,绥棱:101050510:suiling 黑龙江,黑河,黑河:101050601:heihe 黑龙江,黑河,嫩江:101050602:nenjiang 黑龙江,黑河,孙吴:101050603:sunwu 黑龙江,黑河,逊克:101050604:xunke 黑龙江,黑河,五大连池:101050605:wudalianchi 黑龙江,黑河,北安:101050606:beian 黑龙江,大兴安岭,大兴安岭:101050701:daxinganling 黑龙江,大兴安岭,塔河:101050702:tahe 黑龙江,大兴安岭,漠河:101050703:mohe 黑龙江,大兴安岭,呼玛:101050704:huma 黑龙江,大兴安岭,呼中:101050705:huzhong 黑龙江,大兴安岭,新林:101050706:xinlin 黑龙江,大兴安岭,加格达奇:101050708:jiagedaqi 黑龙江,伊春,伊春:101050801:yichun 黑龙江,伊春,乌伊岭:101050802:wuyiling 黑龙江,伊春,五营:101050803:wuying 黑龙江,伊春,铁力:101050804:tieli 黑龙江,伊春,嘉荫:101050805:jiayin 黑龙江,大庆,大庆:101050901:daqing 黑龙江,大庆,林甸:101050902:lindian 黑龙江,大庆,肇州:101050903:zhaozhou 黑龙江,大庆,肇源:101050904:zhaoyuan 黑龙江,大庆,杜尔伯特:101050905:duerbote:du'erbote 黑龙江,七台河,七台河:101051002:qitaihe 黑龙江,七台河,勃利:101051003:boli 黑龙江,鸡西,鸡西:101051101:jixi 黑龙江,鸡西,虎林:101051102:hulin 黑龙江,鸡西,密山:101051103:mishan 黑龙江,鸡西,鸡东:101051104:jidong 黑龙江,鹤岗,鹤岗:101051201:hegang 黑龙江,鹤岗,绥滨:101051202:suibin 黑龙江,鹤岗,萝北:101051203:luobei 黑龙江,双鸭山,双鸭山:101051301:shuangyashan 黑龙江,双鸭山,集贤:101051302:jixian 黑龙江,双鸭山,宝清:101051303:baoqing 黑龙江,双鸭山,饶河:101051304:raohe 黑龙江,双鸭山,友谊:101051305:youyi 吉林,长春,长春:101060101:changchun 吉林,长春,农安:101060102:nongan 吉林,长春,德惠:101060103:dehui 吉林,长春,九台:101060104:jiutai 吉林,长春,榆树:101060105:yushu 吉林,长春,双阳:101060106:shuangyang 吉林,吉林,吉林:101060201:jilin 吉林,吉林,舒兰:101060202:shulan 吉林,吉林,永吉:101060203:yongji 吉林,吉林,蛟河:101060204:jiaohe 吉林,吉林,磐石:101060205:panshi 吉林,吉林,桦甸:101060206:huadian 吉林,延边,延吉:101060301:yanji 吉林,延边,敦化:101060302:dunhua 吉林,延边,安图:101060303:antu 吉林,延边,汪清:101060304:wangqing 吉林,延边,和龙:101060305:helong 吉林,延边,龙井:101060307:longjing 吉林,延边,珲春:101060308:hunchun 吉林,延边,图们:101060309:tumen 吉林,四平,四平:101060401:siping 吉林,四平,双辽:101060402:shuangliao 吉林,四平,梨树:101060403:lishu 吉林,四平,公主岭:101060404:gongzhuling 吉林,四平,伊通:101060405:yitong 吉林,通化,通化:101060501:tonghua 吉林,通化,梅河口:101060502:meihekou 吉林,通化,柳河:101060503:liuhe 吉林,通化,辉南:101060504:huinan 吉林,通化,集安:101060505:jian 吉林,通化,通化县:101060506:tonghuaxian 吉林,白城,白城:101060601:baicheng 吉林,白城,洮南:101060602:taonan 吉林,白城,大安:101060603:daan 吉林,白城,镇赉:101060604:zhenlai 吉林,白城,通榆:101060605:tongyu 吉林,辽源,辽源:101060701:liaoyuan 吉林,辽源,东丰:101060702:dongfeng 吉林,辽源,东辽:101060703:dongliao 吉林,松原,松原:101060801:songyuan 吉林,松原,乾安:101060802:qianan 吉林,松原,前郭:101060803:qianguo 吉林,松原,长岭:101060804:changling 吉林,松原,扶余:101060805:fuyu 吉林,白山,白山:101060901:baishan 吉林,白山,靖宇:101060902:jingyu 吉林,白山,临江:101060903:linjiang 吉林,白山,东岗:101060904:donggang 吉林,白山,长白:101060905:changbai 吉林,白山,抚松:101060906:fusong 吉林,白山,江源:101060907:jiangyuan 辽宁,沈阳,沈阳:101070101:shenyang 辽宁,沈阳,辽中:101070103:liaozhong 辽宁,沈阳,康平:101070104:kangping 辽宁,沈阳,法库:101070105:faku 辽宁,沈阳,新民:101070106:xinming 辽宁,大连,大连:101070201:dalian 辽宁,大连,瓦房店:101070202:wafangdian 辽宁,大连,金州:101070203:jinzhou 辽宁,大连,普兰店:101070204:pulandian 辽宁,大连,旅顺:101070205:lvshun 辽宁,大连,长海:101070206:changhai 辽宁,大连,庄河:101070207:zhuanghe 辽宁,鞍山,鞍山:101070301:anshan 辽宁,鞍山,台安:101070302:taian 辽宁,鞍山,岫岩:101070303:xiuyan 辽宁,鞍山,海城:101070304:haicheng 辽宁,抚顺,抚顺:101070401:fushun 辽宁,抚顺,新宾:101070402:xinbin 辽宁,抚顺,清原:101070403:qingyuan 辽宁,抚顺,章党:101070404:zhangdang 辽宁,本溪,本溪:101070501:benxi 辽宁,本溪,本溪县:101070502:benxixian 辽宁,本溪,桓仁:101070504:huanren 辽宁,丹东,丹东:101070601:dandong 辽宁,丹东,凤城:101070602:fengcheng 辽宁,丹东,宽甸:101070603:kuandian 辽宁,丹东,东港:101070604:donggang 辽宁,锦州,锦州:101070701:jinzhou 辽宁,锦州,凌海:101070702:linghai 辽宁,锦州,义县:101070704:yixian 辽宁,锦州,黑山:101070705:heishan 辽宁,锦州,北镇:101070706:beizhen 辽宁,营口,营口:101070801:yingkou 辽宁,营口,大石桥:101070802:dashiqiao 辽宁,营口,盖州:101070803:gaizhou 辽宁,阜新,阜新:101070901:fuxin 辽宁,阜新,彰武:101070902:zhangwu 辽宁,辽阳,辽阳:101071001:liaoyang 辽宁,辽阳,辽阳县:101071002:liaoyangxian 辽宁,辽阳,灯塔:101071003:dengta 辽宁,辽阳,弓长岭:101071004:gongchangling 辽宁,铁岭,铁岭:101071101:tieling 辽宁,铁岭,开原:101071102:kaiyuan 辽宁,铁岭,昌图:101071103:changtu 辽宁,铁岭,西丰:101071104:xifeng 辽宁,铁岭,调兵山:101071105:tiefa 辽宁,朝阳,朝阳:101071201:chaoyang 辽宁,朝阳,凌源:101071203:lingyuan 辽宁,朝阳,喀左:101071204:kazuo 辽宁,朝阳,北票:101071205:beipiao 辽宁,朝阳,建平县:101071207:jianpingxian 辽宁,盘锦,盘锦:101071301:panjin 辽宁,盘锦,大洼:101071302:dawa 辽宁,盘锦,盘山:101071303:panshan 辽宁,葫芦岛,葫芦岛:101071401:huludao 辽宁,葫芦岛,建昌:101071402:jianchang 辽宁,葫芦岛,绥中:101071403:suizhong 辽宁,葫芦岛,兴城:101071404:xingcheng 内蒙古,呼和浩特,呼和浩特:101080101:huhehaote 内蒙古,呼和浩特,土左旗:101080102:tuzuoqi 内蒙古,呼和浩特,托县:101080103:tuoxian 内蒙古,呼和浩特,和林:101080104:helin 内蒙古,呼和浩特,清水河:101080105:qingshuihe 内蒙古,呼和浩特,呼市郊区:101080106:hushijiaoqu 内蒙古,呼和浩特,武川:101080107:wuchuan 内蒙古,包头,包头:101080201:baotou 内蒙古,包头,白云鄂博:101080202:baiyunebo 内蒙古,包头,满都拉:101080203:mandula 内蒙古,包头,土右旗:101080204:tuyouqi 内蒙古,包头,固阳:101080205:guyang 内蒙古,包头,达茂旗:101080206:damaoqi 内蒙古,包头,希拉穆仁:101080207:xilamuren 内蒙古,乌海,乌海:101080301:wuhai 内蒙古,乌兰察布,集宁:101080401:jining 内蒙古,乌兰察布,卓资:101080402:zhuozi 内蒙古,乌兰察布,化德:101080403:huade 内蒙古,乌兰察布,商都:101080404:shangdu 内蒙古,乌兰察布,兴和:101080406:xinghe 内蒙古,乌兰察布,凉城:101080407:liangcheng 内蒙古,乌兰察布,察右前旗:101080408:chayouqianqi 内蒙古,乌兰察布,察右中旗:101080409:chayouzhongqi 内蒙古,乌兰察布,察右后旗:101080410:chayouhouqi 内蒙古,乌兰察布,四子王旗:101080411:siziwangqi 内蒙古,乌兰察布,丰镇:101080412:fengzhen 内蒙古,通辽,通辽:101080501:tongliao 内蒙古,通辽,舍伯吐:101080502:shebotu 内蒙古,通辽,科左中旗:101080503:kezuozhongqi 内蒙古,通辽,科左后旗:101080504:kezuohouqi 内蒙古,通辽,青龙山:101080505:qinglongshan 内蒙古,通辽,开鲁:101080506:kailu 内蒙古,通辽,库伦:101080507:kulun 内蒙古,通辽,奈曼:101080508:naiman 内蒙古,通辽,扎鲁特:101080509:zhalute 内蒙古,通辽,巴雅尔吐胡硕:101080511:bayaertuhushuo 内蒙古,通辽,霍林郭勒:101081108:huolinguole 内蒙古,赤峰,赤峰:101080601:chifeng 内蒙古,赤峰,阿鲁旗:101080603:aluqi 内蒙古,赤峰,浩尔吐:101080604:haoertu 内蒙古,赤峰,巴林左旗:101080605:balinzuoqi 内蒙古,赤峰,巴林右旗:101080606:balinyouqi 内蒙古,赤峰,林西:101080607:linxi 内蒙古,赤峰,克什克腾:101080608:keshiketeng 内蒙古,赤峰,翁牛特:101080609:wengniute 内蒙古,赤峰,岗子:101080610:gangzi 内蒙古,赤峰,喀喇沁:101080611:kalaqin 内蒙古,赤峰,八里罕:101080612:balihan 内蒙古,赤峰,宁城:101080613:ningcheng 内蒙古,赤峰,敖汉:101080614:aohan 内蒙古,赤峰,宝国吐:101080615:baoguotu 内蒙古,鄂尔多斯,鄂尔多斯:101080701:eerduosi 内蒙古,鄂尔多斯,达拉特:101080703:dalate 内蒙古,鄂尔多斯,准格尔:101080704:zhungeer 内蒙古,鄂尔多斯,鄂前旗:101080705:eqianqi 内蒙古,鄂尔多斯,河南:101080706:henan 内蒙古,鄂尔多斯,伊克乌素:101080707:yikewusu 内蒙古,鄂尔多斯,鄂托克:101080708:etuoke 内蒙古,鄂尔多斯,杭锦旗:101080709:hangjinqi 内蒙古,鄂尔多斯,乌审旗:101080710:wushenqi 内蒙古,鄂尔多斯,伊金霍洛:101080711:yijinhuoluo 内蒙古,鄂尔多斯,乌审召:101080712:wushenzhao 内蒙古,鄂尔多斯,东胜:101080713:dongsheng 内蒙古,巴彦淖尔,临河:101080801:linhe 内蒙古,巴彦淖尔,五原:101080802:wuyuan 内蒙古,巴彦淖尔,磴口:101080803:dengkou 内蒙古,巴彦淖尔,乌前旗:101080804:wuqianqi 内蒙古,巴彦淖尔,大佘太:101080805:dashetai 内蒙古,巴彦淖尔,乌中旗:101080806:wuzhongqi 内蒙古,巴彦淖尔,乌后旗:101080807:wuhouqi 内蒙古,巴彦淖尔,海力素:101080808:hailisu 内蒙古,巴彦淖尔,那仁宝力格:101080809:narenbaolige 内蒙古,巴彦淖尔,杭锦后旗:101080810:hangjinhouqi 内蒙古,锡林郭勒,锡林浩特:101080901:xilinhaote 内蒙古,锡林郭勒,二连浩特:101080903:erlianhaote 内蒙古,锡林郭勒,阿巴嘎:101080904:abaga 内蒙古,锡林郭勒,苏左旗:101080906:suzuoqi 内蒙古,锡林郭勒,苏右旗:101080907:suyouqi 内蒙古,锡林郭勒,朱日和:101080908:zhurihe 内蒙古,锡林郭勒,东乌旗:101080909:dongwuqi 内蒙古,锡林郭勒,西乌旗:101080910:xiwuqi 内蒙古,锡林郭勒,太仆寺:101080911:taibusiqi 内蒙古,锡林郭勒,镶黄旗:101080912:xianghuang 内蒙古,锡林郭勒,正镶白旗:101080913:zhengxiangbaiqi 内蒙古,锡林郭勒,正蓝旗:101080914:zhenglanqi 内蒙古,锡林郭勒,多伦:101080915:duolun 内蒙古,锡林郭勒,博克图:101080916:boketu 内蒙古,锡林郭勒,乌拉盖:101080917:wulagai 内蒙古,呼伦贝尔,海拉尔:101081001:hailaer 内蒙古,呼伦贝尔,小二沟:101081002:xiaoergou 内蒙古,呼伦贝尔,阿荣旗:101081003:arongqi 内蒙古,呼伦贝尔,莫力达瓦:101081004:molidawa 内蒙古,呼伦贝尔,鄂伦春旗:101081005:elunchunqi 内蒙古,呼伦贝尔,鄂温克旗:101081006:ewenkeqi 内蒙古,呼伦贝尔,陈旗:101081007:chenqi 内蒙古,呼伦贝尔,新左旗:101081008:xinzuoqi 内蒙古,呼伦贝尔,新右旗:101081009:xinyouqi 内蒙古,呼伦贝尔,满洲里:101081010:manzhouli 内蒙古,呼伦贝尔,牙克石:101081011:yakeshi 内蒙古,呼伦贝尔,扎兰屯:101081012:zhalantun 内蒙古,呼伦贝尔,额尔古纳:101081014:eerguna 内蒙古,呼伦贝尔,根河:101081015:genhe 内蒙古,呼伦贝尔,图里河:101081016:tulihe 内蒙古,兴安盟,高力板:101080510:gaoliban 内蒙古,兴安盟,乌兰浩特:101081101:wulanhaote 内蒙古,兴安盟,阿尔山:101081102:aershan 内蒙古,兴安盟,科右中旗:101081103:keyouzhongqi 内蒙古,兴安盟,胡尔勒:101081104:huerle 内蒙古,兴安盟,扎赉特:101081105:zhanlaite 内蒙古,兴安盟,索伦:101081106:suolun 内蒙古,兴安盟,突泉:101081107:tuquan 内蒙古,兴安盟,科右前旗:101081109:keyouqianqi 内蒙古,阿拉善盟,阿左旗:101081201:azuoqi 内蒙古,阿拉善盟,阿右旗:101081202:ayouqi 内蒙古,阿拉善盟,额济纳:101081203:ejina 内蒙古,阿拉善盟,拐子湖:101081204:guanzihu 内蒙古,阿拉善盟,吉兰太:101081205:jilantai 内蒙古,阿拉善盟,锡林高勒:101081206:xilingaole 内蒙古,阿拉善盟,头道湖:101081207:toudaohu 内蒙古,阿拉善盟,中泉子:101081208:zhongquanzi 内蒙古,阿拉善盟,诺尔公:101081209:nuoergong 内蒙古,阿拉善盟,雅布赖:101081210:yabulai 内蒙古,阿拉善盟,乌斯泰:101081211:wusitai 内蒙古,阿拉善盟,孪井滩:101081212:luanjingtan 河北,石家庄,石家庄:101090101:shijiazhuang 河北,石家庄,井陉:101090102:jingxing 河北,石家庄,正定:101090103:zhengding 河北,石家庄,栾城:101090104:luancheng 河北,石家庄,行唐:101090105:xingtang 河北,石家庄,灵寿:101090106:lingshou 河北,石家庄,高邑:101090107:gaoyi 河北,石家庄,深泽:101090108:shenze 河北,石家庄,赞皇:101090109:zanhuang 河北,石家庄,无极:101090110:wuji 河北,石家庄,平山:101090111:pingshan 河北,石家庄,元氏:101090112:yuanshi 河北,石家庄,赵县:101090113:zhaoxian 河北,石家庄,辛集:101090114:xinji 河北,石家庄,藁城:101090115:gaocheng 河北,石家庄,晋州:101090116:jinzhou 河北,石家庄,新乐:101090117:xinle 河北,石家庄,鹿泉:101090118:luquan 河北,保定,保定:101090201:baoding 河北,保定,满城:101090202:mancheng 河北,保定,阜平:101090203:fuping 河北,保定,徐水:101090204:xushui 河北,保定,唐县:101090205:tangxian 河北,保定,高阳:101090206:gaoyang 河北,保定,容城:101090207:rongcheng 河北,保定,涞源:101090209:laiyuan 河北,保定,望都:101090210:wangdu 河北,保定,安新:101090211:anxin 河北,保定,易县:101090212:yixian 河北,保定,曲阳:101090214:quyang 河北,保定,蠡县:101090215:lixian 河北,保定,顺平:101090216:shunping 河北,保定,雄县:101090217:xiongxian 河北,保定,涿州:101090218:zhuozhou 河北,保定,定州:101090219:dingzhou 河北,保定,安国:101090220:anguo 河北,保定,高碑店:101090221:gaobeidian 河北,保定,涞水:101090222:laishui 河北,保定,定兴:101090223:dingxing 河北,保定,清苑:101090224:qingyuan 河北,保定,博野:101090225:boye 河北,张家口,张家口:101090301:zhangjiakou 河北,张家口,宣化:101090302:xuanhua 河北,张家口,张北:101090303:zhangbei 河北,张家口,康保:101090304:kangbao 河北,张家口,沽源:101090305:guyuan 河北,张家口,尚义:101090306:shangyi 河北,张家口,蔚县:101090307:yuxian 河北,张家口,阳原:101090308:yangyuan 河北,张家口,怀安:101090309:huaian 河北,张家口,万全:101090310:wanquan 河北,张家口,怀来:101090311:huailai 河北,张家口,涿鹿:101090312:zhuolu 河北,张家口,赤城:101090313:chicheng 河北,张家口,崇礼:101090314:chongli 河北,承德,承德:101090402:chengde 河北,承德,承德县:101090403:chengdexian 河北,承德,兴隆:101090404:xinglong 河北,承德,平泉:101090405:pingquan 河北,承德,滦平:101090406:luanping 河北,承德,隆化:101090407:longhua 河北,承德,丰宁:101090408:fengning 河北,承德,宽城:101090409:kuancheng 河北,承德,围场:101090410:weichang 河北,唐山,唐山:101090501:tangshan 河北,唐山,丰南:101090502:fengnan 河北,唐山,丰润:101090503:fengrun 河北,唐山,滦县:101090504:luanxian 河北,唐山,滦南:101090505:luannan 河北,唐山,乐亭:101090506:leting 河北,唐山,迁西:101090507:qianxi 河北,唐山,玉田:101090508:yutian 河北,唐山,唐海:101090509:tanghai 河北,唐山,遵化:101090510:zunhua 河北,唐山,迁安:101090511:qianan 河北,唐山,曹妃甸:101090512:caofeidian 河北,廊坊,廊坊:101090601:langfang 河北,廊坊,固安:101090602:guan 河北,廊坊,永清:101090603:yongqing 河北,廊坊,香河:101090604:xianghe 河北,廊坊,大城:101090605:dacheng 河北,廊坊,文安:101090606:wenan 河北,廊坊,大厂:101090607:dachang 河北,廊坊,霸州:101090608:bazhou 河北,廊坊,三河:101090609:sanhe 河北,沧州,沧州:101090701:cangzhou 河北,沧州,青县:101090702:qingxian 河北,沧州,东光:101090703:dongguang 河北,沧州,海兴:101090704:haixing 河北,沧州,盐山:101090705:yanshan 河北,沧州,肃宁:101090706:suning 河北,沧州,南皮:101090707:nanpi 河北,沧州,吴桥:101090708:wuqiao 河北,沧州,献县:101090709:xianxian 河北,沧州,孟村:101090710:mengcun 河北,沧州,泊头:101090711:botou 河北,沧州,任丘:101090712:renqiu 河北,沧州,黄骅:101090713:huanghua 河北,沧州,河间:101090714:hejian 河北,沧州,沧县:101090716:cangxian 河北,衡水,衡水:101090801:hengshui 河北,衡水,枣强:101090802:zaoqiang 河北,衡水,武邑:101090803:wuyi 河北,衡水,武强:101090804:wuqiang 河北,衡水,饶阳:101090805:raoyang 河北,衡水,安平:101090806:anping 河北,衡水,故城:101090807:gucheng 河北,衡水,景县:101090808:jingxian 河北,衡水,阜城:101090809:fucheng 河北,衡水,冀州:101090810:jizhou 河北,衡水,深州:101090811:shenzhou 河北,邢台,邢台:101090901:xingtai 河北,邢台,临城:101090902:lincheng 河北,邢台,内丘:101090904:neiqiu 河北,邢台,柏乡:101090905:baixiang 河北,邢台,隆尧:101090906:longyao 河北,邢台,南和:101090907:nanhe 河北,邢台,宁晋:101090908:ningjin 河北,邢台,巨鹿:101090909:julu 河北,邢台,新河:101090910:xinhe 河北,邢台,广宗:101090911:guangzong 河北,邢台,平乡:101090912:pingxiang 河北,邢台,威县:101090913:weixian 河北,邢台,清河:101090914:qinghe 河北,邢台,临西:101090915:linxi 河北,邢台,南宫:101090916:nangong 河北,邢台,沙河:101090917:shahe 河北,邢台,任县:101090918:renxian 河北,邯郸,邯郸:101091001:handan 河北,邯郸,峰峰:101091002:fengfeng 河北,邯郸,临漳:101091003:linzhang 河北,邯郸,成安:101091004:chengan 河北,邯郸,大名:101091005:daming 河北,邯郸,涉县:101091006:shexian 河北,邯郸,磁县:101091007:cixian 河北,邯郸,肥乡:101091008:feixiang 河北,邯郸,永年:101091009:yongnian 河北,邯郸,邱县:101091010:qiuxian 河北,邯郸,鸡泽:101091011:jize 河北,邯郸,广平:101091012:guangping 河北,邯郸,馆陶:101091013:guantao 河北,邯郸,魏县:101091014:weixian 河北,邯郸,曲周:101091015:quzhou 河北,邯郸,武安:101091016:wuan 河北,秦皇岛,秦皇岛:101091101:qinhuangdao 河北,秦皇岛,青龙:101091102:qinglong 河北,秦皇岛,昌黎:101091103:changli 河北,秦皇岛,抚宁:101091104:funing 河北,秦皇岛,卢龙:101091105:lulong 河北,秦皇岛,北戴河:101091106:beidaihe 山西,太原,太原:101100101:taiyuan 山西,太原,清徐:101100102:qingxu 山西,太原,阳曲:101100103:yangqu 山西,太原,娄烦:101100104:loufan 山西,太原,古交:101100105:gujiao 山西,太原,尖草坪区:101100106:jiancaopingqu 山西,太原,小店区:101100107:xiaodianqu 山西,大同,大同:101100201:datong 山西,大同,阳高:101100202:yanggao 山西,大同,大同县:101100203:datongxian 山西,大同,天镇:101100204:tianzhen 山西,大同,广灵:101100205:guangling 山西,大同,灵丘:101100206:lingqiu 山西,大同,浑源:101100207:hunyuan 山西,大同,左云:101100208:zuoyun 山西,阳泉,阳泉:101100301:yangquan 山西,阳泉,盂县:101100302:yuxian 山西,阳泉,平定:101100303:pingding 山西,晋中,晋中:101100401:jinzhong 山西,晋中,榆次:101100402:yuci 山西,晋中,榆社:101100403:yushe 山西,晋中,左权:101100404:zuoquan 山西,晋中,和顺:101100405:heshun 山西,晋中,昔阳:101100406:xiyang 山西,晋中,寿阳:101100407:shouyang 山西,晋中,太谷:101100408:taigu 山西,晋中,祁县:101100409:qixian 山西,晋中,平遥:101100410:pingyao 山西,晋中,灵石:101100411:lingshi 山西,晋中,介休:101100412:jiexiu 山西,长治,长治:101100501:changzhi 山西,长治,黎城:101100502:licheng 山西,长治,屯留:101100503:tunliu 山西,长治,潞城:101100504:lucheng 山西,长治,襄垣:101100505:xiangyuan 山西,长治,平顺:101100506:pingshun 山西,长治,武乡:101100507:wuxiang 山西,长治,沁县:101100508:qinxian 山西,长治,长子:101100509:zhangzi 山西,长治,沁源:101100510:qinyuan 山西,长治,壶关:101100511:huguan 山西,晋城,晋城:101100601:jincheng 山西,晋城,沁水:101100602:qinshui 山西,晋城,阳城:101100603:yangcheng 山西,晋城,陵川:101100604:lingchuan 山西,晋城,高平:101100605:gaoping 山西,晋城,泽州:101100606:zezhou 山西,临汾,临汾:101100701:linfen 山西,临汾,曲沃:101100702:quwo 山西,临汾,永和:101100703:yonghe 山西,临汾,隰县:101100704:xixian 山西,临汾,大宁:101100705:daning 山西,临汾,吉县:101100706:jixian 山西,临汾,襄汾:101100707:xiangfen 山西,临汾,蒲县:101100708:puxian 山西,临汾,汾西:101100709:fenxi 山西,临汾,洪洞:101100710:hongtong 山西,临汾,霍州:101100711:huozhou 山西,临汾,乡宁:101100712:xiangning 山西,临汾,翼城:101100713:yicheng 山西,临汾,侯马:101100714:houma 山西,临汾,浮山:101100715:fushan 山西,临汾,安泽:101100716:anze 山西,临汾,古县:101100717:guxian 山西,运城,运城:101100801:yuncheng 山西,运城,临猗:101100802:linyi 山西,运城,稷山:101100803:jishan 山西,运城,万荣:101100804:wanrong 山西,运城,河津:101100805:hejin 山西,运城,新绛:101100806:xinjiang 山西,运城,绛县:101100807:jiangxian 山西,运城,闻喜:101100808:wenxi 山西,运城,垣曲:101100809:yuanqu 山西,运城,永济:101100810:yongji 山西,运城,芮城:101100811:ruicheng 山西,运城,夏县:101100812:xiaxian 山西,运城,平陆:101100813:pinglu 山西,朔州,朔州:101100901:shuozhou 山西,朔州,平鲁:101100902:pinglu 山西,朔州,山阴:101100903:shanyin 山西,朔州,右玉:101100904:youyu 山西,朔州,应县:101100905:yingxian 山西,朔州,怀仁:101100906:huairen 山西,忻州,忻州:101101001:xinzhou 山西,忻州,定襄:101101002:dingxiang 山西,忻州,五台县:101101003:wutaixian 山西,忻州,河曲:101101004:hequ 山西,忻州,偏关:101101005:pianguan 山西,忻州,神池:101101006:shenchi 山西,忻州,宁武:101101007:ningwu 山西,忻州,代县:101101008:daixian 山西,忻州,繁峙:101101009:fanshi 山西,忻州,五台山:101101010:wutaishan 山西,忻州,保德:101101011:bode 山西,忻州,静乐:101101012:jingle 山西,忻州,岢岚:101101013:kelan 山西,忻州,五寨:101101014:wuzhai 山西,忻州,原平:101101015:yuanping 山西,吕梁,吕梁:101101100:lvliang 山西,吕梁,离石:101101101:lishi 山西,吕梁,临县:101101102:linxian 山西,吕梁,兴县:101101103:xingxian 山西,吕梁,岚县:101101104:lanxian 山西,吕梁,柳林:101101105:liulin 山西,吕梁,石楼:101101106:shilou 山西,吕梁,方山:101101107:fangshan 山西,吕梁,交口:101101108:jiaokou 山西,吕梁,中阳:101101109:zhongyang 山西,吕梁,孝义:101101110:xiaoyi 山西,吕梁,汾阳:101101111:fenyang 山西,吕梁,文水:101101112:wenshui 山西,吕梁,交城:101101113:jiaocheng 陕西,西安,西安:101110101:xian:xi'an 陕西,西安,长安:101110102:changan 陕西,西安,临潼:101110103:lintong 陕西,西安,蓝田:101110104:lantian 陕西,西安,周至:101110105:zhouzhi 陕西,西安,户县:101110106:huxian 陕西,西安,高陵:101110107:gaoling 陕西,咸阳,咸阳:101110200:xianyang 陕西,咸阳,三原:101110201:sanyuan 陕西,咸阳,礼泉:101110202:liquan 陕西,咸阳,永寿:101110203:yongshou 陕西,咸阳,淳化:101110204:chunhua 陕西,咸阳,泾阳:101110205:jingyang 陕西,咸阳,武功:101110206:wugong 陕西,咸阳,乾县:101110207:qianxian 陕西,咸阳,彬县:101110208:binxian 陕西,咸阳,长武:101110209:changwu 陕西,咸阳,旬邑:101110210:xunyi 陕西,咸阳,兴平:101110211:xingping 陕西,延安,延安:101110300:yanan 陕西,延安,延长:101110301:yanchang 陕西,延安,延川:101110302:yanchuan 陕西,延安,子长:101110303:zichang 陕西,延安,宜川:101110304:yichuan 陕西,延安,富县:101110305:fuxian 陕西,延安,志丹:101110306:zhidan 陕西,延安,安塞:101110307:ansai 陕西,延安,甘泉:101110308:ganquan 陕西,延安,洛川:101110309:luochuan 陕西,延安,黄陵:101110310:huangling 陕西,延安,黄龙:101110311:huanglong 陕西,延安,吴起:101110312:wuqi 陕西,榆林,榆林:101110401:yulin 陕西,榆林,府谷:101110402:fugu 陕西,榆林,神木:101110403:shenmu 陕西,榆林,佳县:101110404:jiaxian 陕西,榆林,定边:101110405:dingbian 陕西,榆林,靖边:101110406:jingbian 陕西,榆林,横山:101110407:hengshan 陕西,榆林,米脂:101110408:mizhi 陕西,榆林,子洲:101110409:zizhou 陕西,榆林,绥德:101110410:suide 陕西,榆林,吴堡:101110411:wubu 陕西,榆林,清涧:101110412:jingjian 陕西,榆林,榆阳:101110413:yuyang 陕西,渭南,渭南:101110501:weinan 陕西,渭南,华县:101110502:huaxian 陕西,渭南,潼关:101110503:tongguan 陕西,渭南,大荔:101110504:dali 陕西,渭南,白水:101110505:baishui 陕西,渭南,富平:101110506:fuping 陕西,渭南,蒲城:101110507:pucheng 陕西,渭南,澄城:101110508:chengcheng 陕西,渭南,合阳:101110509:heyang 陕西,渭南,韩城:101110510:hancheng 陕西,渭南,华阴:101110511:huayin 陕西,商洛,商洛:101110601:shangluo 陕西,商洛,洛南:101110602:luonan 陕西,商洛,柞水:101110603:zhashui 陕西,商洛,商州:101110604:shangxian 陕西,商洛,镇安:101110605:zhenan 陕西,商洛,丹凤:101110606:danfeng 陕西,商洛,商南:101110607:shangnan 陕西,商洛,山阳:101110608:shanyang 陕西,安康,安康:101110701:ankang 陕西,安康,紫阳:101110702:ziyang 陕西,安康,石泉:101110703:shiquan 陕西,安康,汉阴:101110704:hanyin 陕西,安康,旬阳:101110705:xunyang 陕西,安康,岚皋:101110706:langao 陕西,安康,平利:101110707:pingli 陕西,安康,白河:101110708:baihe 陕西,安康,镇坪:101110709:zhenping 陕西,安康,宁陕:101110710:ningshan 陕西,汉中,汉中:101110801:hanzhong 陕西,汉中,略阳:101110802:lueyang 陕西,汉中,勉县:101110803:mianxian 陕西,汉中,留坝:101110804:liuba 陕西,汉中,洋县:101110805:yangxian 陕西,汉中,城固:101110806:chenggu 陕西,汉中,西乡:101110807:xixiang 陕西,汉中,佛坪:101110808:fuoping 陕西,汉中,宁强:101110809:ningqiang 陕西,汉中,南郑:101110810:nanzheng 陕西,汉中,镇巴:101110811:zhenba 陕西,宝鸡,宝鸡:101110901:baoji 陕西,宝鸡,千阳:101110903:qianyang 陕西,宝鸡,麟游:101110904:linyou 陕西,宝鸡,岐山:101110905:qishan 陕西,宝鸡,凤翔:101110906:fengxiang 陕西,宝鸡,扶风:101110907:fufeng 陕西,宝鸡,眉县:101110908:meixian 陕西,宝鸡,太白:101110909:taibai 陕西,宝鸡,凤县:101110910:fengxian 陕西,宝鸡,陇县:101110911:longxian 陕西,宝鸡,陈仓:101110912:chencang 陕西,铜川,铜川:101111001:tongchuan 陕西,铜川,耀县:101111002:yaoxian 陕西,铜川,宜君:101111003:yijun 陕西,铜川,耀州:101111004:yaozhou 陕西,杨凌,杨凌:101111101:yangling 山东,济南,济南:101120101:jinan 山东,济南,长清:101120102:changqing 山东,济南,商河:101120103:shanghe 山东,济南,章丘:101120104:zhangqiu 山东,济南,平阴:101120105:pingyin 山东,济南,济阳:101120106:jiyang 山东,青岛,青岛:101120201:qingdao 山东,青岛,崂山:101120202:laoshan 山东,青岛,即墨:101120204:jimo 山东,青岛,胶州:101120205:jiaozhou 山东,青岛,胶南:101120206:jiaonan 山东,青岛,莱西:101120207:laixi 山东,青岛,平度:101120208:pingdu 山东,淄博,淄博:101120301:zibo 山东,淄博,淄川:101120302:zichuan 山东,淄博,博山:101120303:boshan 山东,淄博,高青:101120304:gaoqing 山东,淄博,周村:101120305:zhoucun 山东,淄博,沂源:101120306:yiyuan 山东,淄博,桓台:101120307:huantai 山东,淄博,临淄:101120308:linzi 山东,德州,德州:101120401:dezhou 山东,德州,武城:101120402:wucheng 山东,德州,临邑:101120403:linyi 山东,德州,陵县:101120404:lingxian 山东,德州,齐河:101120405:qihe 山东,德州,乐陵:101120406:leling 山东,德州,庆云:101120407:qingyun 山东,德州,平原:101120408:pingyuan 山东,德州,宁津:101120409:ningjin 山东,德州,夏津:101120410:xiajin 山东,德州,禹城:101120411:yucheng 山东,烟台,烟台:101120501:yantai 山东,烟台,莱州:101120502:laizhou 山东,烟台,长岛:101120503:changdao 山东,烟台,蓬莱:101120504:penglai 山东,烟台,龙口:101120505:longkou 山东,烟台,招远:101120506:zhaoyuan 山东,烟台,栖霞:101120507:qixia 山东,烟台,福山:101120508:fushan 山东,烟台,牟平:101120509:moup 山东,烟台,莱阳:101120510:laiyang 山东,烟台,海阳:101120511:haiyang 山东,潍坊,潍坊:101120601:weifang 山东,潍坊,青州:101120602:qingzhou 山东,潍坊,寿光:101120603:shouguang 山东,潍坊,临朐:101120604:linqu 山东,潍坊,昌乐:101120605:changle 山东,潍坊,昌邑:101120606:changyi 山东,潍坊,安丘:101120607:anqiu 山东,潍坊,高密:101120608:gaomi 山东,潍坊,诸城:101120609:zhucheng 山东,济宁,济宁:101120701:jining 山东,济宁,嘉祥:101120702:jiaxiang 山东,济宁,微山:101120703:weishan 山东,济宁,鱼台:101120704:yutai 山东,济宁,兖州:101120705:yanzhou 山东,济宁,金乡:101120706:jinxiang 山东,济宁,汶上:101120707:wenshang 山东,济宁,泗水:101120708:sishui 山东,济宁,梁山:101120709:liangshan 山东,济宁,曲阜:101120710:qufu 山东,济宁,邹城:101120711:zoucheng 山东,泰安,泰安:101120801:taian 山东,泰安,新泰:101120802:xintai 山东,泰安,肥城:101120804:feicheng 山东,泰安,东平:101120805:dongping 山东,泰安,宁阳:101120806:ningyang 山东,临沂,临沂:101120901:linyi 山东,临沂,莒南:101120902:junan 山东,临沂,沂南:101120903:yinan 山东,临沂,苍山:101120904:cangshan 山东,临沂,临沭:101120905:linshu 山东,临沂,郯城:101120906:tancheng 山东,临沂,蒙阴:101120907:mengyin 山东,临沂,平邑:101120908:pingyi 山东,临沂,费县:101120909:feixian 山东,临沂,沂水:101120910:yishui 山东,菏泽,菏泽:101121001:heze 山东,菏泽,鄄城:101121002:juancheng 山东,菏泽,郓城:101121003:yuncheng 山东,菏泽,东明:101121004:dongming 山东,菏泽,定陶:101121005:dingtao 山东,菏泽,巨野:101121006:juye 山东,菏泽,曹县:101121007:caoxian 山东,菏泽,成武:101121008:chengwu 山东,菏泽,单县:101121009:shanxian 山东,滨州,滨州:101121101:binzhou 山东,滨州,博兴:101121102:boxing 山东,滨州,无棣:101121103:wudi 山东,滨州,阳信:101121104:yangxin 山东,滨州,惠民:101121105:huimin 山东,滨州,沾化:101121106:zhanhua 山东,滨州,邹平:101121107:zouping 山东,东营,东营:101121201:dongying 山东,东营,河口:101121202:hekou 山东,东营,垦利:101121203:kenli 山东,东营,利津:101121204:lijin 山东,东营,广饶:101121205:guangrao 山东,威海,威海:101121301:weihai 山东,威海,文登:101121302:wendeng 山东,威海,荣成:101121303:rongcheng 山东,威海,乳山:101121304:rushan 山东,威海,成山头:101121305:chengshantou 山东,威海,石岛:101121306:shidao 山东,枣庄,枣庄:101121401:zaozhuang 山东,枣庄,薛城:101121402:xuecheng 山东,枣庄,峄城:101121403:yicheng 山东,枣庄,台儿庄:101121404:taierzhuang 山东,枣庄,滕州:101121405:tengzhou 山东,日照,日照:101121501:rizhao 山东,日照,五莲:101121502:wulian 山东,日照,莒县:101121503:juxian 山东,莱芜,莱芜:101121601:laiwu 山东,聊城,聊城:101121701:liaocheng 山东,聊城,冠县:101121702:guanxian 山东,聊城,阳谷:101121703:yanggu 山东,聊城,高唐:101121704:gaotang 山东,聊城,茌平:101121705:chiping 山东,聊城,东阿:101121706:donge 山东,聊城,临清:101121707:linqing 山东,聊城,莘县:101121709:shenxian 新疆,乌鲁木齐,乌鲁木齐:101130101:wulumuqi 新疆,乌鲁木齐,小渠子:101130103:xiaoquzi 新疆,乌鲁木齐,达坂城:101130105:dabancheng 新疆,乌鲁木齐,乌鲁木齐牧试站:101130108:wulumuqimushizhan 新疆,乌鲁木齐,天池:101130109:tianchi 新疆,乌鲁木齐,白杨沟:101130110:baiyanggou 新疆,克拉玛依,克拉玛依:101130201:kelamayi 新疆,克拉玛依,乌尔禾:101130202:wuerhe 新疆,克拉玛依,白碱滩:101130203:baijiantan 新疆,石河子,石河子:101130301:shihezi 新疆,石河子,炮台:101130302:paotai 新疆,石河子,莫索湾:101130303:mosuowan 新疆,昌吉,昌吉:101130401:changji 新疆,昌吉,呼图壁:101130402:hutubi 新疆,昌吉,米泉:101130403:miquan 新疆,昌吉,阜康:101130404:fukang 新疆,昌吉,吉木萨尔:101130405:jimusaer 新疆,昌吉,奇台:101130406:qitai 新疆,昌吉,玛纳斯:101130407:manasi 新疆,昌吉,木垒:101130408:mulei 新疆,昌吉,蔡家湖:101130409:caijiahu 新疆,吐鲁番,吐鲁番:101130501:tulufan 新疆,吐鲁番,托克逊:101130502:tuokexun 新疆,吐鲁番,鄯善:101130504:shanshan 新疆,巴音郭楞,库尔勒:101130601:kuerle 新疆,巴音郭楞,轮台:101130602:luntai 新疆,巴音郭楞,尉犁:101130603:weili 新疆,巴音郭楞,若羌:101130604:ruoqiang 新疆,巴音郭楞,且末:101130605:qiemo 新疆,巴音郭楞,和静:101130606:hejing 新疆,巴音郭楞,焉耆:101130607:yanqi 新疆,巴音郭楞,和硕:101130608:shuo 新疆,巴音郭楞,巴音布鲁克:101130610:bayinbuluke 新疆,巴音郭楞,铁干里克:101130611:tieganlike 新疆,巴音郭楞,博湖:101130612:bohu 新疆,巴音郭楞,塔中:101130613:tazhong 新疆,巴音郭楞,巴仑台:101130614:baluntai 新疆,阿拉尔,阿拉尔:101130701:alaer 新疆,阿克苏,阿克苏:101130801:akesu 新疆,阿克苏,乌什:101130802:wushi 新疆,阿克苏,温宿:101130803:wensu 新疆,阿克苏,拜城:101130804:baicheng 新疆,阿克苏,新和:101130805:xinhe 新疆,阿克苏,沙雅:101130806:shaya 新疆,阿克苏,库车:101130807:kuche 新疆,阿克苏,柯坪:101130808:keping 新疆,阿克苏,阿瓦提:101130809:awati 新疆,喀什,喀什:101130901:kashi 新疆,喀什,英吉沙:101130902:yingjisha 新疆,喀什,塔什库尔干:101130903:tashikuergan 新疆,喀什,麦盖提:101130904:maigaiti 新疆,喀什,莎车:101130905:shache 新疆,喀什,叶城:101130906:yecheng 新疆,喀什,泽普:101130907:zepu 新疆,喀什,巴楚:101130908:bachu 新疆,喀什,岳普湖:101130909:yuepuhu 新疆,喀什,伽师:101130910:jiashi 新疆,喀什,疏附:101130911:shufu 新疆,喀什,疏勒:101130912:shule 新疆,伊犁,伊宁:101131001:yining 新疆,伊犁,察布查尔:101131002:chabuchaer 新疆,伊犁,尼勒克:101131003:nileke 新疆,伊犁,伊宁县:101131004:yiningxian 新疆,伊犁,巩留:101131005:gongliu 新疆,伊犁,新源:101131006:xinyuan 新疆,伊犁,昭苏:101131007:zhaosu 新疆,伊犁,特克斯:101131008:tekesi 新疆,伊犁,霍城:101131009:huocheng 新疆,伊犁,霍尔果斯:101131010:huoerguosi 新疆,伊犁,奎屯:101131011:kuitunshi 新疆,塔城,塔城:101131101:tacheng 新疆,塔城,裕民:101131102:yumin 新疆,塔城,额敏:101131103:emin 新疆,塔城,和布克赛尔:101131104:hebukesaier 新疆,塔城,托里:101131105:tuoli 新疆,塔城,乌苏:101131106:wusu 新疆,塔城,沙湾:101131107:shawan 新疆,哈密,哈密:101131201:hami 新疆,哈密,巴里坤:101131203:balikun 新疆,哈密,伊吾:101131204:yiwu 新疆,和田,和田:101131301:hetian 新疆,和田,皮山:101131302:pishan 新疆,和田,策勒:101131303:cele 新疆,和田,墨玉:101131304:moyu 新疆,和田,洛浦:101131305:luopu 新疆,和田,民丰:101131306:minfeng 新疆,和田,于田:101131307:yutian 新疆,阿勒泰,阿勒泰:101131401:aletai 新疆,阿勒泰,哈巴河:101131402:habahe 新疆,阿勒泰,吉木乃:101131405:jimunai 新疆,阿勒泰,布尔津:101131406:buerjin 新疆,阿勒泰,福海:101131407:fuhai 新疆,阿勒泰,富蕴:101131408:fuyun 新疆,阿勒泰,青河:101131409:qinghe 新疆,克州,阿图什:101131501:atushi 新疆,克州,乌恰:101131502:wuqia 新疆,克州,阿克陶:101131503:aketao 新疆,克州,阿合奇:101131504:aheqi 新疆,博尔塔拉,博乐:101131601:bole 新疆,博尔塔拉,温泉:101131602:wenquan 新疆,博尔塔拉,精河:101131603:jinghe 新疆,博尔塔拉,阿拉山口:101131606:alashankou 西藏,拉萨,拉萨:101140101:lasa 西藏,拉萨,当雄:101140102:dangxiong 西藏,拉萨,尼木:101140103:nimu 西藏,拉萨,林周:101140104:linzhou 西藏,拉萨,堆龙德庆:101140105:duilongdeqing 西藏,拉萨,曲水:101140106:qushui 西藏,拉萨,达孜:101140107:dazi 西藏,拉萨,墨竹工卡:101140108:mozhugongka 西藏,日喀则,日喀则:101140201:rikaze 西藏,日喀则,拉孜:101140202:lazi 西藏,日喀则,南木林:101140203:nanmulin 西藏,日喀则,聂拉木:101140204:nielamu 西藏,日喀则,定日:101140205:anri 西藏,日喀则,江孜:101140206:jiangzi 西藏,日喀则,帕里:101140207:pali 西藏,日喀则,仲巴:101140208:zhongba 西藏,日喀则,萨嘎:101140209:saga 西藏,日喀则,吉隆:101140210:jilong 西藏,日喀则,昂仁:101140211:angren 西藏,日喀则,定结:101140212:dingjie 西藏,日喀则,萨迦:101140213:sajia 西藏,日喀则,谢通门:101140214:xietongmen 西藏,日喀则,岗巴:101140216:gangba 西藏,日喀则,白朗:101140217:bailang 西藏,日喀则,亚东:101140218:yadong 西藏,日喀则,康马:101140219:kangma 西藏,日喀则,仁布:101140220:renbu 西藏,山南,山南:101140301:shannan 西藏,山南,贡嘎:101140302:gongga 西藏,山南,扎囊:101140303:zhanan 西藏,山南,加查:101140304:jiacha 西藏,山南,浪卡子:101140305:langkazi 西藏,山南,错那:101140306:cuona 西藏,山南,隆子:101140307:longzi 西藏,山南,泽当:101140308:zedang 西藏,山南,乃东:101140309:naidong 西藏,山南,桑日:101140310:sangri 西藏,山南,洛扎:101140311:luozha 西藏,山南,措美:101140312:cuomei 西藏,山南,琼结:101140313:qiongjie 西藏,山南,曲松:101140314:qusong 西藏,林芝,林芝:101140401:linzhi 西藏,林芝,波密:101140402:bomi 西藏,林芝,米林:101140403:milin 西藏,林芝,察隅:101140404:chayu 西藏,林芝,工布江达:101140405:gongbujiangda 西藏,林芝,朗县:101140406:langxian 西藏,林芝,墨脱:101140407:motuo 西藏,昌都,昌都:101140501:changdu 西藏,昌都,丁青:101140502:dingqing 西藏,昌都,边坝:101140503:bianba 西藏,昌都,洛隆:101140504:luolong 西藏,昌都,左贡:101140505:zuogong 西藏,昌都,芒康:101140506:mangkang 西藏,昌都,类乌齐:101140507:leiwuqi 西藏,昌都,八宿:101140508:basu 西藏,昌都,江达:101140509:jiangda 西藏,昌都,察雅:101140510:chaya 西藏,昌都,贡觉:101140511:gongjue 西藏,那曲,那曲:101140601:naqu 西藏,那曲,尼玛:101140602:nima 西藏,那曲,嘉黎:101140603:jiali 西藏,那曲,班戈:101140604:bange 西藏,那曲,安多:101140605:anduo 西藏,那曲,索县:101140606:suoxian 西藏,那曲,聂荣:101140607:nierong 西藏,那曲,巴青:101140608:baqing 西藏,那曲,比如:101140609:biru 西藏,那曲,双湖:101140610:shuanghu 西藏,阿里,阿里:101140701:ali 西藏,阿里,改则:101140702:gaize 西藏,阿里,申扎:101140703:shenzha 西藏,阿里,狮泉河:101140704:shiquanhe 西藏,阿里,普兰:101140705:pulan 西藏,阿里,札达:101140706:zhada 西藏,阿里,噶尔:101140707:gaer 西藏,阿里,日土:101140708:ritu 西藏,阿里,革吉:101140709:geji 西藏,阿里,措勤:101140710:cuoqin 青海,西宁,西宁:101150101:xining 青海,西宁,大通:101150102:datong 青海,西宁,湟源:101150103:huangyuan 青海,西宁,湟中:101150104:huangzhong 青海,海东,海东:101150201:haidong 青海,海东,乐都:101150202:ledu 青海,海东,民和:101150203:minhe 青海,海东,互助:101150204:huzhu 青海,海东,化隆:101150205:hualong 青海,海东,循化:101150206:xunhua 青海,海东,冷湖:101150207:lenghu 青海,海东,平安:101150208:pingan 青海,黄南,黄南:101150301:huangnan 青海,黄南,尖扎:101150302:jianzha 青海,黄南,泽库:101150303:zeku 青海,黄南,河南:101150304:henan 青海,黄南,同仁:101150305:tongren 青海,海南,海南:101150401:hainan 青海,海南,贵德:101150404:guide 青海,海南,兴海:101150406:xinghai 青海,海南,贵南:101150407:guinan 青海,海南,同德:101150408:tongde 青海,海南,共和:101150409:gonghe 青海,果洛,果洛:101150501:guoluo 青海,果洛,班玛:101150502:banma 青海,果洛,甘德:101150503:gande 青海,果洛,达日:101150504:dari 青海,果洛,久治:101150505:jiuzhi 青海,果洛,玛多:101150506:madu 青海,果洛,多县:101150507:duoxian 青海,果洛,玛沁:101150508:maqin 青海,玉树,玉树:101150601:yushu 青海,玉树,称多:101150602:chenduo 青海,玉树,治多:101150603:zhiduo 青海,玉树,杂多:101150604:zaduo 青海,玉树,囊谦:101150605:nangqian 青海,玉树,曲麻莱:101150606:qumacai 青海,海西,海西:101150701:haixi 青海,海西,天峻:101150708:tianjun 青海,海西,乌兰:101150709:wulan 青海,海西,茫崖:101150712:mangai 青海,海西,大柴旦:101150713:dachaidan 青海,海西,德令哈:101150716:delingha 青海,海北,海北:101150801:haibei 青海,海北,门源:101150802:menyuan 青海,海北,祁连:101150803:qilian 青海,海北,海晏:101150804:haiman 青海,海北,刚察:101150806:gangcha 青海,格尔木,格尔木:101150901:geermu 青海,格尔木,都兰:101150902:dulan 甘肃,兰州,兰州:101160101:lanzhou 甘肃,兰州,皋兰:101160102:gaolan 甘肃,兰州,永登:101160103:yongdeng 甘肃,兰州,榆中:101160104:yuzhong 甘肃,定西,定西:101160201:dingxi 甘肃,定西,通渭:101160202:tongwei 甘肃,定西,陇西:101160203:longxi 甘肃,定西,渭源:101160204:weiyuan 甘肃,定西,临洮:101160205:lintao 甘肃,定西,漳县:101160206:zhangxian 甘肃,定西,岷县:101160207:minxian 甘肃,定西,安定:101160208:anding 甘肃,平凉,平凉:101160301:pingliang 甘肃,平凉,泾川:101160302:jingchuan 甘肃,平凉,灵台:101160303:lingtai 甘肃,平凉,崇信:101160304:chongxin 甘肃,平凉,华亭:101160305:huating 甘肃,平凉,庄浪:101160306:zhuanglang 甘肃,平凉,静宁:101160307:jingning 甘肃,平凉,崆峒:101160308:kongtong 甘肃,庆阳,西峰:101160401:qingyang 甘肃,庆阳,环县:101160403:huanxian 甘肃,庆阳,华池:101160404:huachi 甘肃,庆阳,合水:101160405:heshui 甘肃,庆阳,正宁:101160406:zhengning 甘肃,庆阳,宁县:101160407:ningxian 甘肃,庆阳,镇原:101160408:zhenyuan 甘肃,庆阳,庆城:101160409:qingcheng 甘肃,武威,武威:101160501:wuwei 甘肃,武威,民勤:101160502:minqin 甘肃,武威,古浪:101160503:gulang 甘肃,武威,天祝:101160505:tianzhu 甘肃,金昌,金昌:101160601:jinchang 甘肃,金昌,永昌:101160602:yongchang 甘肃,张掖,张掖:101160701:zhangye 甘肃,张掖,肃南:101160702:sunan 甘肃,张掖,民乐:101160703:minle 甘肃,张掖,临泽:101160704:linze 甘肃,张掖,高台:101160705:gaotai 甘肃,张掖,山丹:101160706:shandan 甘肃,酒泉,酒泉:101160801:jiuquan 甘肃,酒泉,金塔:101160803:jinta 甘肃,酒泉,阿克塞:101160804:akesai 甘肃,酒泉,瓜州:101160805:guazhou 甘肃,酒泉,肃北:101160806:subei 甘肃,酒泉,玉门:101160807:yumen 甘肃,酒泉,敦煌:101160808:dunhuang 甘肃,天水,天水:101160901:tianshui 甘肃,天水,清水:101160903:qingshui 甘肃,天水,秦安:101160904:qinan 甘肃,天水,甘谷:101160905:gangu 甘肃,天水,武山:101160906:wushan 甘肃,天水,张家川:101160907:zhangjiachuan 甘肃,天水,麦积:101160908:maiji 甘肃,陇南,武都:101161001:wudu 甘肃,陇南,成县:101161002:chengxian 甘肃,陇南,文县:101161003:wenxian 甘肃,陇南,宕昌:101161004:dangchang 甘肃,陇南,康县:101161005:kangxian 甘肃,陇南,西和:101161006:xihe 甘肃,陇南,礼县:101161007:lixian 甘肃,陇南,徽县:101161008:huixian 甘肃,陇南,两当:101161009:liangdang 甘肃,临夏,临夏:101161101:linxia 甘肃,临夏,康乐:101161102:kangle 甘肃,临夏,永靖:101161103:yongjing 甘肃,临夏,广河:101161104:guanghe 甘肃,临夏,和政:101161105:hezheng 甘肃,临夏,东乡:101161106:dongxiang 甘肃,临夏,积石山:101161107:jishishan 甘肃,甘南,合作:101161201:hezuo 甘肃,甘南,临潭:101161202:lintan 甘肃,甘南,卓尼:101161203:zhuoni 甘肃,甘南,舟曲:101161204:zhouqu 甘肃,甘南,迭部:101161205:diebu 甘肃,甘南,玛曲:101161206:maqu 甘肃,甘南,碌曲:101161207:luqu 甘肃,甘南,夏河:101161208:xiahe 甘肃,白银,白银:101161301:baiyin 甘肃,白银,靖远:101161302:jingyuan 甘肃,白银,会宁:101161303:huining 甘肃,白银,平川:101161304:pingchuan 甘肃,白银,景泰:101161305:jingtai 甘肃,嘉峪关,嘉峪关:101161401:jiayuguan 宁夏,银川,银川:101170101:yinchuan 宁夏,银川,永宁:101170102:yongning 宁夏,银川,灵武:101170103:lingwu 宁夏,银川,贺兰:101170104:helan 宁夏,石嘴山,石嘴山:101170201:shizuishan 宁夏,石嘴山,惠农:101170202:huinong 宁夏,石嘴山,平罗:101170203:pingluo 宁夏,石嘴山,陶乐:101170204:taole 宁夏,吴忠,吴忠:101170301:wuzhong 宁夏,吴忠,同心:101170302:tongxin 宁夏,吴忠,盐池:101170303:yanchi 宁夏,吴忠,青铜峡:101170306:qingtongxia 宁夏,固原,固原:101170401:guyuan 宁夏,固原,西吉:101170402:xiji 宁夏,固原,隆德:101170403:longde 宁夏,固原,泾源:101170404:jinyuan 宁夏,固原,彭阳:101170406:pengyang 宁夏,中卫,中卫:101170501:zhongwei 宁夏,中卫,中宁:101170502:zhongning 宁夏,中卫,海原:101170504:haiyuan 河南,郑州,郑州:101180101:zhengzhou 河南,郑州,巩义:101180102:gongyi 河南,郑州,荥阳:101180103:xingyang 河南,郑州,登封:101180104:dengfeng 河南,郑州,新密:101180105:xinmi 河南,郑州,新郑:101180106:xinzheng 河南,郑州,中牟:101180107:zhongmou 河南,郑州,上街:101180108:shangjie 河南,安阳,安阳:101180201:anyang 河南,安阳,汤阴:101180202:tangyin 河南,安阳,滑县:101180203:huaxian 河南,安阳,内黄:101180204:neihuang 河南,安阳,林州:101180205:linzhou 河南,新乡,新乡:101180301:xinxiang 河南,新乡,获嘉:101180302:huojia 河南,新乡,原阳:101180303:yuanyang 河南,新乡,辉县:101180304:huixian 河南,新乡,卫辉:101180305:weihui 河南,新乡,延津:101180306:yanjin 河南,新乡,封丘:101180307:fengqiu 河南,新乡,长垣:101180308:changyuan 河南,许昌,许昌:101180401:xuchang 河南,许昌,鄢陵:101180402:yanling 河南,许昌,襄城:101180403:xiangcheng 河南,许昌,长葛:101180404:changge 河南,许昌,禹州:101180405:yuzhou 河南,平顶山,平顶山:101180501:pingdingshan 河南,平顶山,郏县:101180502:jiaxian 河南,平顶山,宝丰:101180503:baofeng 河南,平顶山,汝州:101180504:ruzhou 河南,平顶山,叶县:101180505:yexian 河南,平顶山,舞钢:101180506:wugang 河南,平顶山,鲁山:101180507:lushan 河南,平顶山,石龙:101180508:shilong 河南,信阳,信阳:101180601:xinyang 河南,信阳,息县:101180602:xixian 河南,信阳,罗山:101180603:luoshan 河南,信阳,光山:101180604:guangshan 河南,信阳,新县:101180605:xinxian 河南,信阳,淮滨:101180606:huaibin 河南,信阳,潢川:101180607:huangchuan 河南,信阳,固始:101180608:gushi 河南,信阳,商城:101180609:shangcheng 河南,南阳,南阳:101180701:nanyang 河南,南阳,南召:101180702:nanzhao 河南,南阳,方城:101180703:fangcheng 河南,南阳,社旗:101180704:sheqi 河南,南阳,西峡:101180705:xixia 河南,南阳,内乡:101180706:neixiang 河南,南阳,镇平:101180707:zhenping 河南,南阳,淅川:101180708:xichuan 河南,南阳,新野:101180709:xinye 河南,南阳,唐河:101180710:tanghe 河南,南阳,邓州:101180711:dengzhou 河南,南阳,桐柏:101180712:tongbai 河南,开封,开封:101180801:kaifeng 河南,开封,杞县:101180802:qixian 河南,开封,尉氏:101180803:weishi 河南,开封,通许:101180804:tongxu 河南,开封,兰考:101180805:lankao 河南,洛阳,洛阳:101180901:luoyang 河南,洛阳,新安:101180902:xinan 河南,洛阳,孟津:101180903:mengjin 河南,洛阳,宜阳:101180904:yiyang 河南,洛阳,洛宁:101180905:luoning 河南,洛阳,伊川:101180906:yichuan 河南,洛阳,嵩县:101180907:songxian 河南,洛阳,偃师:101180908:yanshi 河南,洛阳,栾川:101180909:luanchuan 河南,洛阳,汝阳:101180910:ruyang 河南,洛阳,吉利:101180911:jili 河南,商丘,商丘:101181001:shangqiu 河南,商丘,睢县:101181003:suixian 河南,商丘,民权:101181004:minquan 河南,商丘,虞城:101181005:yucheng 河南,商丘,柘城:101181006:zhecheng 河南,商丘,宁陵:101181007:ningling 河南,商丘,夏邑:101181008:xiayi 河南,商丘,永城:101181009:yongcheng 河南,焦作,焦作:101181101:jiaozuo 河南,焦作,修武:101181102:xiuwu 河南,焦作,武陟:101181103:wuzhi 河南,焦作,沁阳:101181104:qinyang 河南,焦作,博爱:101181106:boai 河南,焦作,温县:101181107:wenxian 河南,焦作,孟州:101181108:mengzhou 河南,鹤壁,鹤壁:101181201:hebi 河南,鹤壁,浚县:101181202:xunxian 河南,鹤壁,淇县:101181203:qixian 河南,濮阳,濮阳:101181301:puyang 河南,濮阳,台前:101181302:taiqian 河南,濮阳,南乐:101181303:nanle 河南,濮阳,清丰:101181304:qingfeng 河南,濮阳,范县:101181305:fanxian 河南,周口,周口:101181401:zhoukou 河南,周口,扶沟:101181402:fugou 河南,周口,太康:101181403:taikang 河南,周口,淮阳:101181404:huaiyang 河南,周口,西华:101181405:xihua 河南,周口,商水:101181406:shangshui 河南,周口,项城:101181407:xiangcheng 河南,周口,郸城:101181408:dancheng 河南,周口,鹿邑:101181409:luyi 河南,周口,沈丘:101181410:shenqiu 河南,漯河,漯河:101181501:luohe 河南,漯河,临颍:101181502:linying 河南,漯河,舞阳:101181503:wuyang 河南,驻马店,驻马店:101181601:zhumadian 河南,驻马店,西平:101181602:xiping 河南,驻马店,遂平:101181603:suiping 河南,驻马店,上蔡:101181604:shangcai 河南,驻马店,汝南:101181605:runan 河南,驻马店,泌阳:101181606:biyang 河南,驻马店,平舆:101181607:pingyu 河南,驻马店,新蔡:101181608:xincai 河南,驻马店,确山:101181609:queshan 河南,驻马店,正阳:101181610:zhengyang 河南,三门峡,三门峡:101181701:sanmenxia 河南,三门峡,灵宝:101181702:lingbao 河南,三门峡,渑池:101181703:mianchi 河南,三门峡,卢氏:101181704:lushi 河南,三门峡,义马:101181705:yima 河南,三门峡,陕县:101181706:shanxian 河南,济源,济源:101181801:jiyuan 江苏,南京,南京:101190101:nanjing 江苏,南京,溧水:101190102:lishui 江苏,南京,高淳:101190103:gaochun 江苏,南京,江宁:101190104:jiangning 江苏,南京,六合:101190105:luhe 江苏,南京,江浦:101190106:jiangpu 江苏,南京,浦口:101190107:pukou 江苏,无锡,无锡:101190201:wuxi 江苏,无锡,江阴:101190202:jiangyin 江苏,无锡,宜兴:101190203:yixing 江苏,无锡,锡山:101190204:xishan 江苏,镇江,镇江:101190301:zhenjiang 江苏,镇江,丹阳:101190302:danyang 江苏,镇江,扬中:101190303:yangzhong 江苏,镇江,句容:101190304:jurong 江苏,镇江,丹徒:101190305:dantu 江苏,苏州,苏州:101190401:suzhou 江苏,苏州,常熟:101190402:changshu 江苏,苏州,张家港:101190403:zhangjiagang 江苏,苏州,昆山:101190404:kunshan 江苏,苏州,吴中:101190405:wuzhong 江苏,苏州,吴江:101190407:wujiang 江苏,苏州,太仓:101190408:taicang 江苏,南通,南通:101190501:nantong 江苏,南通,海安:101190502:haian 江苏,南通,如皋:101190503:rugao 江苏,南通,如东:101190504:rudong 江苏,南通,启东:101190507:qidong 江苏,南通,海门:101190508:haimen 江苏,南通,通州:101190509:tongzhou 江苏,扬州,扬州:101190601:yangzhou 江苏,扬州,宝应:101190602:baoying 江苏,扬州,仪征:101190603:yizheng 江苏,扬州,高邮:101190604:gaoyou 江苏,扬州,江都:101190605:jiangdu 江苏,扬州,邗江:101190606:hanjiang 江苏,盐城,盐城:101190701:yancheng 江苏,盐城,响水:101190702:xiangshui 江苏,盐城,滨海:101190703:binhai 江苏,盐城,阜宁:101190704:funing 江苏,盐城,射阳:101190705:sheyang 江苏,盐城,建湖:101190706:jianhu 江苏,盐城,东台:101190707:dongtai 江苏,盐城,大丰:101190708:dafeng 江苏,盐城,盐都:101190709:yandu 江苏,徐州,徐州:101190801:xuzhou 江苏,徐州,铜山:101190802:tongshan 江苏,徐州,丰县:101190803:fengxian 江苏,徐州,沛县:101190804:peixian 江苏,徐州,邳州:101190805:pizhou 江苏,徐州,睢宁:101190806:suining 江苏,徐州,新沂:101190807:xinyi 江苏,淮安,淮安:101190901:huaian 江苏,淮安,金湖:101190902:jinhu 江苏,淮安,盱眙:101190903:xuyi 江苏,淮安,洪泽:101190904:hongze 江苏,淮安,涟水:101190905:lianshui 江苏,淮安,淮阴区:101190906:huaiyinqu 江苏,淮安,淮安区:101190908:huaianqu 江苏,连云港,连云港:101191001:lianyungang 江苏,连云港,东海:101191002:donghai 江苏,连云港,赣榆:101191003:ganyu 江苏,连云港,灌云:101191004:guanyun 江苏,连云港,灌南:101191005:guannan 江苏,常州,常州:101191101:changzhou 江苏,常州,溧阳:101191102:liyang 江苏,常州,金坛:101191103:jintan 江苏,常州,武进:101191104:wujin 江苏,泰州,泰州:101191201:taizhou 江苏,泰州,兴化:101191202:xinghua 江苏,泰州,泰兴:101191203:taixing 江苏,泰州,姜堰:101191204:jiangyan 江苏,泰州,靖江:101191205:jingjiang 江苏,宿迁,宿迁:101191301:suqian 江苏,宿迁,沭阳:101191302:shuyang 江苏,宿迁,泗阳:101191303:siyang 江苏,宿迁,泗洪:101191304:sihong 江苏,宿迁,宿豫:101191305:suyu 湖北,武汉,武汉:101200101:wuhan 湖北,武汉,蔡甸:101200102:caidian 湖北,武汉,黄陂:101200103:huangpi 湖北,武汉,新洲:101200104:xinzhou 湖北,武汉,江夏:101200105:jiangxia 湖北,武汉,东西湖:101200106:dongxihu 湖北,襄阳,襄阳:101200201:xiangyang 湖北,襄阳,襄州:101200202:xiangzhou 湖北,襄阳,保康:101200203:baokang 湖北,襄阳,南漳:101200204:nanzhang 湖北,襄阳,宜城:101200205:yicheng 湖北,襄阳,老河口:101200206:laohekou 湖北,襄阳,谷城:101200207:gucheng 湖北,襄阳,枣阳:101200208:zaoyang 湖北,鄂州,鄂州:101200301:ezhou 湖北,鄂州,梁子湖:101200302:liangzihu 湖北,孝感,孝感:101200401:xiaogan 湖北,孝感,安陆:101200402:anlu 湖北,孝感,云梦:101200403:yunmeng 湖北,孝感,大悟:101200404:dawu 湖北,孝感,应城:101200405:yingcheng 湖北,孝感,汉川:101200406:hanchuan 湖北,孝感,孝昌:101200407:xiaochang 湖北,黄冈,黄冈:101200501:huanggang 湖北,黄冈,红安:101200502:hongan 湖北,黄冈,麻城:101200503:macheng 湖北,黄冈,罗田:101200504:luotian 湖北,黄冈,英山:101200505:yingshan 湖北,黄冈,浠水:101200506:xishui 湖北,黄冈,蕲春:101200507:qichun 湖北,黄冈,黄梅:101200508:huangmei 湖北,黄冈,武穴:101200509:wuxue 湖北,黄冈,团风:101200510:tuanfeng 湖北,黄石,黄石:101200601:huangshi 湖北,黄石,大冶:101200602:daye 湖北,黄石,阳新:101200603:yangxin 湖北,黄石,铁山:101200604:tieshan 湖北,黄石,下陆:101200605:xialu 湖北,黄石,西塞山:101200606:xisaishan 湖北,咸宁,咸宁:101200701:xianning 湖北,咸宁,赤壁:101200702:chibi 湖北,咸宁,嘉鱼:101200703:jiayu 湖北,咸宁,崇阳:101200704:chongyang 湖北,咸宁,通城:101200705:tongcheng 湖北,咸宁,通山:101200706:tongshan 湖北,荆州,荆州:101200801:jingzhou 湖北,荆州,江陵:101200802:jiangling 湖北,荆州,公安:101200803:gongan 湖北,荆州,石首:101200804:shishou 湖北,荆州,监利:101200805:jianli 湖北,荆州,洪湖:101200806:honghu 湖北,荆州,松滋:101200807:songzi 湖北,荆州,沙市:101201406:shashi 湖北,宜昌,宜昌:101200901:yichang 湖北,宜昌,远安:101200902:yuanan 湖北,宜昌,秭归:101200903:zigui 湖北,宜昌,兴山:101200904:xingshan 湖北,宜昌,五峰:101200906:wufeng 湖北,宜昌,当阳:101200907:dangyang 湖北,宜昌,长阳:101200908:changyang 湖北,宜昌,宜都:101200909:yidu 湖北,宜昌,枝江:101200910:zhijiang 湖北,宜昌,三峡:101200911:sanxia 湖北,宜昌,夷陵:101200912:yiling 湖北,恩施,恩施:101201001:enshi 湖北,恩施,利川:101201002:lichuan 湖北,恩施,建始:101201003:jianshi 湖北,恩施,咸丰:101201004:xianfeng 湖北,恩施,宣恩:101201005:xuanen 湖北,恩施,鹤峰:101201006:hefeng 湖北,恩施,来凤:101201007:laifeng 湖北,恩施,巴东:101201008:badong 湖北,十堰,十堰:101201101:shiyan 湖北,十堰,竹溪:101201102:zhuxi 湖北,十堰,郧西:101201103:yunxi 湖北,十堰,郧县:101201104:yunxian 湖北,十堰,竹山:101201105:zhushan 湖北,十堰,房县:101201106:fangxian 湖北,十堰,丹江口:101201107:danjiangkou 湖北,十堰,茅箭:101201108:maojian 湖北,十堰,张湾:101201109:zhangwan 湖北,神农架,神农架:101201201:shennongjia 湖北,随州,随州:101201301:suizhou 湖北,随州,广水:101201302:guangshui 湖北,荆门,荆门:101201401:jingmen 湖北,荆门,钟祥:101201402:zhongxiang 湖北,荆门,京山:101201403:jingshan 湖北,荆门,掇刀:101201404:duodao 湖北,荆门,沙洋:101201405:shayang 湖北,天门,天门:101201501:tianmen 湖北,仙桃,仙桃:101201601:xiantao 湖北,潜江,潜江:101201701:qianjiang 浙江,杭州,杭州:101210101:hangzhou 浙江,杭州,萧山:101210102:xiaoshan 浙江,杭州,桐庐:101210103:tonglu 浙江,杭州,淳安:101210104:chunan 浙江,杭州,建德:101210105:jiande 浙江,杭州,余杭:101210106:yuhang 浙江,杭州,临安:101210107:linan 浙江,杭州,富阳:101210108:fuyang 浙江,湖州,湖州:101210201:huzhou 浙江,湖州,长兴:101210202:changxing 浙江,湖州,安吉:101210203:anji 浙江,湖州,德清:101210204:deqing 浙江,嘉兴,嘉兴:101210301:jiaxing 浙江,嘉兴,嘉善:101210302:jiashan 浙江,嘉兴,海宁:101210303:haining 浙江,嘉兴,桐乡:101210304:tongxiang 浙江,嘉兴,平湖:101210305:pinghu 浙江,嘉兴,海盐:101210306:haiyan 浙江,宁波,宁波:101210401:ningbo 浙江,宁波,慈溪:101210403:cixi 浙江,宁波,余姚:101210404:yuyao 浙江,宁波,奉化:101210405:fenghua 浙江,宁波,象山:101210406:xiangshan 浙江,宁波,宁海:101210408:ninghai 浙江,宁波,北仑:101210410:beilun 浙江,宁波,鄞州:101210411:yinzhou 浙江,宁波,镇海:101210412:zhenhai 浙江,绍兴,绍兴:101210501:shaoxing 浙江,绍兴,诸暨:101210502:zhuji 浙江,绍兴,上虞:101210503:shangyu 浙江,绍兴,新昌:101210504:xinchang 浙江,绍兴,嵊州:101210505:shengzhou 浙江,台州,台州:101210601:taizhou 浙江,台州,玉环:101210603:yuhuan 浙江,台州,三门:101210604:sanmen 浙江,台州,天台:101210605:tiantai 浙江,台州,仙居:101210606:xianju 浙江,台州,温岭:101210607:wenling 浙江,台州,洪家:101210609:hongjia 浙江,台州,临海:101210610:linhai 浙江,台州,椒江:101210611:jiaojiang 浙江,台州,黄岩:101210612:huangyan 浙江,台州,路桥:101210613:luqiao 浙江,温州,温州:101210701:wenzhou 浙江,温州,泰顺:101210702:taishun 浙江,温州,文成:101210703:wencheng 浙江,温州,平阳:101210704:pingyang 浙江,温州,瑞安:101210705:ruian 浙江,温州,洞头:101210706:dongtou 浙江,温州,乐清:101210707:yueqing 浙江,温州,永嘉:101210708:yongjia 浙江,温州,苍南:101210709:cangnan 浙江,丽水,丽水:101210801:lishui 浙江,丽水,遂昌:101210802:suichang 浙江,丽水,龙泉:101210803:longquan 浙江,丽水,缙云:101210804:jinyun 浙江,丽水,青田:101210805:qingtian 浙江,丽水,云和:101210806:yunhe 浙江,丽水,庆元:101210807:qingyuan 浙江,丽水,松阳:101210808:songyang 浙江,丽水,景宁:101210809:jingning 浙江,金华,金华:101210901:jinhua 浙江,金华,浦江:101210902:pujiang 浙江,金华,兰溪:101210903:lanxi 浙江,金华,义乌:101210904:yiwu 浙江,金华,东阳:101210905:dongyang 浙江,金华,武义:101210906:wuyi 浙江,金华,永康:101210907:yongkang 浙江,金华,磐安:101210908:panan 浙江,衢州,衢州:101211001:quzhou 浙江,衢州,常山:101211002:changshan 浙江,衢州,开化:101211003:kaihua 浙江,衢州,龙游:101211004:longyou 浙江,衢州,江山:101211005:jiangshan 浙江,衢州,衢江:101211006:qujiang 浙江,舟山,舟山:101211101:zhoushan 浙江,舟山,嵊泗:101211102:shengsi 浙江,舟山,岱山:101211104:daishan 浙江,舟山,普陀:101211105:putuo 浙江,舟山,定海:101211106:dinghai 安徽,合肥,合肥:101220101:hefei 安徽,合肥,长丰:101220102:changfeng 安徽,合肥,肥东:101220103:feidong 安徽,合肥,肥西:101220104:feixi 安徽,蚌埠,蚌埠:101220201:bengbu 安徽,蚌埠,怀远:101220202:huaiyuan 安徽,蚌埠,固镇:101220203:guzhen 安徽,蚌埠,五河:101220204:wuhe 安徽,芜湖,芜湖:101220301:wuhu 安徽,芜湖,繁昌:101220302:fanyang 安徽,芜湖,芜湖县:101220303:wuhuxian 安徽,芜湖,南陵:101220304:nanling 安徽,淮南,淮南:101220401:huainan 安徽,淮南,凤台:101220402:fengtai 安徽,淮南,潘集:101220403:panji 安徽,马鞍山,马鞍山:101220501:maanshan 安徽,马鞍山,当涂:101220502:dangtu 安徽,安庆,安庆:101220601:anqing 安徽,安庆,枞阳:101220602:zongyang 安徽,安庆,太湖:101220603:taihu 安徽,安庆,潜山:101220604:qianshan 安徽,安庆,怀宁:101220605:huaining 安徽,安庆,宿松:101220606:susong 安徽,安庆,望江:101220607:wangjiang 安徽,安庆,岳西:101220608:yuexi 安徽,安庆,桐城:101220609:tongcheng 安徽,宿州,宿州:101220701:suzhou 安徽,宿州,砀山:101220702:dangshan 安徽,宿州,灵璧:101220703:lingbi 安徽,宿州,泗县:101220704:sixian 安徽,宿州,萧县:101220705:xiaoxian 安徽,阜阳,阜阳:101220801:fuyang 安徽,阜阳,阜南:101220802:funan 安徽,阜阳,颍上:101220803:yingshang 安徽,阜阳,临泉:101220804:linquan 安徽,阜阳,界首:101220805:jieshou 安徽,阜阳,太和:101220806:taihe 安徽,亳州,亳州:101220901:bozhou 安徽,亳州,涡阳:101220902:guoyang 安徽,亳州,利辛:101220903:lixin 安徽,亳州,蒙城:101220904:mengcheng 安徽,黄山,黄山市:101221001:huangshan 安徽,黄山,黄山区:101221002:huangshanqu 安徽,黄山,屯溪:101221003:tunxi 安徽,黄山,祁门:101221004:qimen 安徽,黄山,黟县:101221005:yixian 安徽,黄山,歙县:101221006:shexian 安徽,黄山,休宁:101221007:xiuning 安徽,黄山,黄山风景区:101221008:huangshanfengjingqu 安徽,滁州,滁州:101221101:chuzhou 安徽,滁州,凤阳:101221102:fengyang 安徽,滁州,明光:101221103:mingguang 安徽,滁州,定远:101221104:dingyuan 安徽,滁州,全椒:101221105:quanjiao 安徽,滁州,来安:101221106:laian 安徽,滁州,天长:101221107:tianchang 安徽,淮北,淮北:101221201:huaibei 安徽,淮北,濉溪:101221202:suixi 安徽,铜陵,铜陵:101221301:tongling 安徽,宣城,宣城:101221401:xuancheng 安徽,宣城,泾县:101221402:jingxian 安徽,宣城,旌德:101221403:jingde 安徽,宣城,宁国:101221404:ningguo 安徽,宣城,绩溪:101221405:jixi 安徽,宣城,广德:101221406:guangde 安徽,宣城,郎溪:101221407:langxi 安徽,六安,六安:101221501:luan 安徽,六安,霍邱:101221502:huoqiu 安徽,六安,寿县:101221503:shouxian 安徽,六安,金寨:101221505:jinzhai 安徽,六安,霍山:101221506:huoshan 安徽,六安,舒城:101221507:shucheng 安徽,巢湖,巢湖:101221601:chaohu 安徽,巢湖,庐江:101221602:lujiang 安徽,巢湖,无为:101221603:wuwei 安徽,巢湖,含山:101221604:hanshan 安徽,巢湖,和县:101221605:hexian 安徽,池州,池州:101221701:chizhou 安徽,池州,东至:101221702:dongzhi 安徽,池州,青阳:101221703:qingyang 安徽,池州,九华山:101221704:jiuhuashan 安徽,池州,石台:101221705:shitai 福建,福州,福州:101230101:fuzhou 福建,福州,闽清:101230102:minqing 福建,福州,闽侯:101230103:minhou 福建,福州,罗源:101230104:luoyuan 福建,福州,连江:101230105:lianjiang 福建,福州,永泰:101230107:yongtai 福建,福州,平潭:101230108:pingtan 福建,福州,长乐:101230110:changle 福建,福州,福清:101230111:fuqing 福建,厦门,厦门:101230201:xiamen 福建,厦门,同安:101230202:tongan 福建,宁德,宁德:101230301:ningde 福建,宁德,古田:101230302:gutian 福建,宁德,霞浦:101230303:xiapu 福建,宁德,寿宁:101230304:shouning 福建,宁德,周宁:101230305:zhouning 福建,宁德,福安:101230306:fuan 福建,宁德,柘荣:101230307:zherong 福建,宁德,福鼎:101230308:fuding 福建,宁德,屏南:101230309:pingnan 福建,莆田,莆田:101230401:putian 福建,莆田,仙游:101230402:xianyou 福建,莆田,秀屿港:101230403:xiuyugang 福建,莆田,涵江:101230404:hanjiang 福建,莆田,秀屿:101230405:xiuyu 福建,莆田,荔城:101230406:licheng 福建,莆田,城厢:101230407:chengxiang 福建,泉州,泉州:101230501:quanzhou 福建,泉州,安溪:101230502:anxi 福建,泉州,永春:101230504:yongchun 福建,泉州,德化:101230505:dehua 福建,泉州,南安:101230506:nanan 福建,泉州,崇武:101230507:chongwu 福建,泉州,惠安:101230508:huian 福建,泉州,晋江:101230509:jinjiang 福建,泉州,石狮:101230510:shishi 福建,漳州,漳州:101230601:zhangzhou 福建,漳州,长泰:101230602:changtai 福建,漳州,南靖:101230603:nanjing 福建,漳州,平和:101230604:pinghe 福建,漳州,龙海:101230605:longhai 福建,漳州,漳浦:101230606:zhangpu 福建,漳州,诏安:101230607:zhaoan 福建,漳州,东山:101230608:dongshan 福建,漳州,云霄:101230609:yunxiao 福建,漳州,华安:101230610:huaan 福建,龙岩,龙岩:101230701:longyan 福建,龙岩,长汀:101230702:changting 福建,龙岩,连城:101230703:liancheng 福建,龙岩,武平:101230704:wuping 福建,龙岩,上杭:101230705:shanghang 福建,龙岩,永定:101230706:yongding 福建,龙岩,漳平:101230707:zhangping 福建,三明,三明:101230801:sanming 福建,三明,宁化:101230802:ninghua 福建,三明,清流:101230803:qingliu 福建,三明,泰宁:101230804:taining 福建,三明,将乐:101230805:jiangle 福建,三明,建宁:101230806:jianning 福建,三明,明溪:101230807:mingxi 福建,三明,沙县:101230808:shaxian 福建,三明,尤溪:101230809:youxi 福建,三明,永安:101230810:yongan 福建,三明,大田:101230811:datian 福建,南平,南平:101230901:nanping 福建,南平,顺昌:101230902:shunchang 福建,南平,光泽:101230903:guangze 福建,南平,邵武:101230904:shaowu 福建,南平,武夷山:101230905:wuyishan 福建,南平,浦城:101230906:pucheng 福建,南平,建阳:101230907:jianyang 福建,南平,松溪:101230908:songxi 福建,南平,政和:101230909:zhenghe 福建,南平,建瓯:101230910:jianou 江西,南昌,南昌:101240101:nanchang 江西,南昌,新建:101240102:xinjian 江西,南昌,南昌县:101240103:nanchangxian 江西,南昌,安义:101240104:anyi 江西,南昌,进贤:101240105:jinxian 江西,九江,九江:101240201:jiujiang 江西,九江,瑞昌:101240202:ruichang 江西,九江,庐山:101240203:lushan 江西,九江,武宁:101240204:wuning 江西,九江,德安:101240205:dean 江西,九江,永修:101240206:yongxiu 江西,九江,湖口:101240207:hukou 江西,九江,彭泽:101240208:pengze 江西,九江,星子:101240209:xingzi 江西,九江,都昌:101240210:duchang 江西,九江,修水:101240212:xiushui 江西,上饶,上饶:101240301:shangrao 江西,上饶,鄱阳:101240302:poyang 江西,上饶,婺源:101240303:wuyuan 江西,上饶,余干:101240305:yugan 江西,上饶,万年:101240306:wannian 江西,上饶,德兴:101240307:dexing 江西,上饶,上饶县:101240308:shangraoxian 江西,上饶,弋阳:101240309:yiyang 江西,上饶,横峰:101240310:hengfeng 江西,上饶,铅山:101240311:yanshan 江西,上饶,玉山:101240312:yushan 江西,上饶,广丰:101240313:guangfeng 江西,抚州,抚州:101240401:fuzhou 江西,抚州,广昌:101240402:guangchang 江西,抚州,乐安:101240403:anle 江西,抚州,崇仁:101240404:chongren 江西,抚州,金溪:101240405:jinxi 江西,抚州,资溪:101240406:zixi 江西,抚州,宜黄:101240407:yihuang 江西,抚州,南城:101240408:nancheng 江西,抚州,南丰:101240409:nanfeng 江西,抚州,黎川:101240410:lichuan 江西,抚州,东乡:101240411:dongxiang 江西,宜春,宜春:101240501:yichun 江西,宜春,铜鼓:101240502:tonggu 江西,宜春,宜丰:101240503:yifeng 江西,宜春,万载:101240504:wanzai 江西,宜春,上高:101240505:shanggao 江西,宜春,靖安:101240506:jingan 江西,宜春,奉新:101240507:fengxin 江西,宜春,高安:101240508:gaoan 江西,宜春,樟树:101240509:zhangshu 江西,宜春,丰城:101240510:fengcheng 江西,吉安,吉安:101240601:jian 江西,吉安,吉安县:101240602:jianxian 江西,吉安,吉水:101240603:jishui 江西,吉安,新干:101240604:xingan 江西,吉安,峡江:101240605:xiajiang 江西,吉安,永丰:101240606:yongfeng 江西,吉安,永新:101240607:yongxin 江西,吉安,井冈山:101240608:jinggangshan 江西,吉安,万安:101240609:wanan 江西,吉安,遂川:101240610:suichuan 江西,吉安,泰和:101240611:taihe 江西,吉安,安福:101240612:anfu 江西,吉安,宁冈:101240613:ninggang 江西,赣州,赣州:101240701:ganzhou 江西,赣州,崇义:101240702:chongyi 江西,赣州,上犹:101240703:shangyou 江西,赣州,南康:101240704:nankang 江西,赣州,大余:101240705:dayu 江西,赣州,信丰:101240706:xinfeng 江西,赣州,宁都:101240707:ningdu 江西,赣州,石城:101240708:shicheng 江西,赣州,瑞金:101240709:ruijin 江西,赣州,于都:101240710:yudu 江西,赣州,会昌:101240711:huichang 江西,赣州,安远:101240712:anyuan 江西,赣州,全南:101240713:quannan 江西,赣州,龙南:101240714:longnan 江西,赣州,定南:101240715:dingnan 江西,赣州,寻乌:101240716:xunwu 江西,赣州,兴国:101240717:xingguo 江西,赣州,赣县:101240718:ganxian 江西,景德镇,景德镇:101240801:jingdezhen 江西,景德镇,乐平:101240802:leping 江西,景德镇,浮梁:101240803:fuliang 江西,萍乡,萍乡:101240901:pingxiang 江西,萍乡,莲花:101240902:lianhua 江西,萍乡,上栗:101240903:shangli 江西,萍乡,安源:101240904:anyuan 江西,萍乡,芦溪:101240905:luxi 江西,萍乡,湘东:101240906:xiangdong 江西,新余,新余:101241001:xinyu 江西,新余,分宜:101241002:fenyi 江西,鹰潭,鹰潭:101241101:yingtan 江西,鹰潭,余江:101241102:yujiang 江西,鹰潭,贵溪:101241103:guixi 湖南,长沙,长沙:101250101:changsha 湖南,长沙,宁乡:101250102:ningxiang 湖南,长沙,浏阳:101250103:liuyang 湖南,长沙,马坡岭:101250104:mapoling 湖南,长沙,望城:101250105:wangcheng 湖南,湘潭,湘潭:101250201:xiangtan 湖南,湘潭,韶山:101250202:shaoshan 湖南,湘潭,湘乡:101250203:xiangxiang 湖南,株洲,株洲:101250301:zhuzhou 湖南,株洲,攸县:101250302:youxian 湖南,株洲,醴陵:101250303:liling 湖南,株洲,茶陵:101250305:chaling 湖南,株洲,炎陵:101250306:yanling 湖南,衡阳,衡阳:101250401:hengyang 湖南,衡阳,衡山:101250402:hengshan 湖南,衡阳,衡东:101250403:hengdong 湖南,衡阳,祁东:101250404:qidong 湖南,衡阳,衡阳县:101250405:hengyangxian 湖南,衡阳,常宁:101250406:changning 湖南,衡阳,衡南:101250407:hengnan 湖南,衡阳,耒阳:101250408:leiyang 湖南,衡阳,南岳:101250409:nanyue 湖南,郴州,郴州:101250501:chenzhou 湖南,郴州,桂阳:101250502:guiyang 湖南,郴州,嘉禾:101250503:jiahe 湖南,郴州,宜章:101250504:yizhang 湖南,郴州,临武:101250505:linwu 湖南,郴州,资兴:101250507:zixing 湖南,郴州,汝城:101250508:rucheng 湖南,郴州,安仁:101250509:anren 湖南,郴州,永兴:101250510:yongxing 湖南,郴州,桂东:101250511:guidong 湖南,郴州,苏仙:101250512:suxian 湖南,常德,常德:101250601:changde 湖南,常德,安乡:101250602:anxiang 湖南,常德,桃源:101250603:taoyuan 湖南,常德,汉寿:101250604:hanshou 湖南,常德,澧县:101250605:lixian 湖南,常德,临澧:101250606:linli 湖南,常德,石门:101250607:shimen 湖南,常德,津市:101250608:jinshi 湖南,益阳,益阳:101250700:yiyang 湖南,益阳,赫山区:101250701:heshanqu 湖南,益阳,南县:101250702:nanxian 湖南,益阳,桃江:101250703:taojiang 湖南,益阳,安化:101250704:anhua 湖南,益阳,沅江:101250705:yuanjiang 湖南,娄底,娄底:101250801:loudi 湖南,娄底,双峰:101250802:shuangfeng 湖南,娄底,冷水江:101250803:lengshuijiang 湖南,娄底,新化:101250805:xinhua 湖南,娄底,涟源:101250806:lianyuan 湖南,邵阳,邵阳:101250901:shaoyang 湖南,邵阳,隆回:101250902:longhui 湖南,邵阳,洞口:101250903:dongkou 湖南,邵阳,新邵:101250904:xinshao 湖南,邵阳,邵东:101250905:shaodong 湖南,邵阳,绥宁:101250906:suining 湖南,邵阳,新宁:101250907:xinning 湖南,邵阳,武冈:101250908:wugang 湖南,邵阳,城步:101250909:chengbu 湖南,邵阳,邵阳县:101250910:shaoyangxian 湖南,岳阳,岳阳:101251001:yueyang 湖南,岳阳,华容:101251002:huarong 湖南,岳阳,湘阴:101251003:xiangyin 湖南,岳阳,汨罗:101251004:miluo 湖南,岳阳,平江:101251005:pingjiang 湖南,岳阳,临湘:101251006:linxiang 湖南,张家界,张家界:101251101:zhangjiajie 湖南,张家界,桑植:101251102:sangzhi 湖南,张家界,慈利:101251103:cili 湖南,张家界,武陵源:101251104:wulingyuan 湖南,怀化,怀化:101251201:huaihua 湖南,怀化,沅陵:101251203:yuanling 湖南,怀化,辰溪:101251204:chenxi 湖南,怀化,靖州:101251205:jingzhou 湖南,怀化,会同:101251206:huitong 湖南,怀化,通道:101251207:tongdao 湖南,怀化,麻阳:101251208:mayang 湖南,怀化,新晃:101251209:xinhuang 湖南,怀化,芷江:101251210:zhijiang 湖南,怀化,溆浦:101251211:xupu 湖南,怀化,中方:101251212:zhongfang 湖南,怀化,洪江:101251213:hongjiang 湖南,永州,永州:101251401:yongzhou 湖南,永州,祁阳:101251402:qiyang 湖南,永州,东安:101251403:dongan 湖南,永州,双牌:101251404:shuangpai 湖南,永州,道县:101251405:daoxian 湖南,永州,宁远:101251406:ningyuan 湖南,永州,江永:101251407:jiangyong 湖南,永州,蓝山:101251408:lanshan 湖南,永州,新田:101251409:xintian 湖南,永州,江华:101251410:jianghua 湖南,永州,冷水滩:101251411:lengshuitan 湖南,湘西,吉首:101251501:jishou 湖南,湘西,保靖:101251502:baojing 湖南,湘西,永顺:101251503:yongshun 湖南,湘西,古丈:101251504:guzhang 湖南,湘西,凤凰:101251505:fenghuang 湖南,湘西,泸溪:101251506:luxi 湖南,湘西,龙山:101251507:longshan 湖南,湘西,花垣:101251508:huayuan 贵州,贵阳,贵阳:101260101:guiyang 贵州,贵阳,白云:101260102:baiyun 贵州,贵阳,花溪:101260103:huaxi 贵州,贵阳,乌当:101260104:wudang 贵州,贵阳,息烽:101260105:xifeng 贵州,贵阳,开阳:101260106:kaiyang 贵州,贵阳,修文:101260107:xiuwen 贵州,贵阳,清镇:101260108:qingzhen 贵州,贵阳,小河:101260109:xiaohe 贵州,贵阳,云岩:101260110:yunyan 贵州,贵阳,南明:101260111:nanming 贵州,遵义,遵义:101260201:zunyi 贵州,遵义,遵义县:101260202:zunyixian 贵州,遵义,仁怀:101260203:renhuai 贵州,遵义,绥阳:101260204:suiyang 贵州,遵义,湄潭:101260205:meitan 贵州,遵义,凤冈:101260206:fenggang 贵州,遵义,桐梓:101260207:tongzi 贵州,遵义,赤水:101260208:chishui 贵州,遵义,习水:101260209:xishui 贵州,遵义,道真:101260210:daozhen 贵州,遵义,正安:101260211:zhengan 贵州,遵义,务川:101260212:wuchuan 贵州,遵义,余庆:101260213:yuqing 贵州,遵义,汇川:101260214:huichuan 贵州,遵义,红花岗:101260215:honghuagang 贵州,安顺,安顺:101260301:anshun 贵州,安顺,普定:101260302:puding 贵州,安顺,镇宁:101260303:zhenning 贵州,安顺,平坝:101260304:pingba 贵州,安顺,紫云:101260305:ziyun 贵州,安顺,关岭:101260306:guanling 贵州,黔南,都匀:101260401:duyun 贵州,黔南,贵定:101260402:guiding 贵州,黔南,瓮安:101260403:wengan 贵州,黔南,长顺:101260404:changshun 贵州,黔南,福泉:101260405:fuquan 贵州,黔南,惠水:101260406:huishui 贵州,黔南,龙里:101260407:longli 贵州,黔南,罗甸:101260408:luodian 贵州,黔南,平塘:101260409:pingtang 贵州,黔南,独山:101260410:dushan 贵州,黔南,三都:101260411:sandu 贵州,黔南,荔波:101260412:libo 贵州,黔东南,凯里:101260501:kaili 贵州,黔东南,岑巩:101260502:cengong 贵州,黔东南,施秉:101260503:shibing 贵州,黔东南,镇远:101260504:zhenyuan 贵州,黔东南,黄平:101260505:huangping 贵州,黔东南,麻江:101260507:majiang 贵州,黔东南,丹寨:101260508:danzhai 贵州,黔东南,三穗:101260509:sansui 贵州,黔东南,台江:101260510:taijiang 贵州,黔东南,剑河:101260511:jianhe 贵州,黔东南,雷山:101260512:leishan 贵州,黔东南,黎平:101260513:liping 贵州,黔东南,天柱:101260514:tianzhu 贵州,黔东南,锦屏:101260515:jinping 贵州,黔东南,榕江:101260516:rongjiang 贵州,黔东南,从江:101260517:congjiang 贵州,铜仁,铜仁:101260601:tongren 贵州,铜仁,江口:101260602:jiangkou 贵州,铜仁,玉屏:101260603:yuping 贵州,铜仁,万山:101260604:wanshan 贵州,铜仁,思南:101260605:sinan 贵州,铜仁,印江:101260607:yinjiang 贵州,铜仁,石阡:101260608:shiqian 贵州,铜仁,沿河:101260609:yanhe 贵州,铜仁,德江:101260610:dejiang 贵州,铜仁,松桃:101260611:songtao 贵州,毕节,毕节:101260701:bijie 贵州,毕节,赫章:101260702:hezhang 贵州,毕节,金沙:101260703:jinsha 贵州,毕节,威宁:101260704:weining 贵州,毕节,大方:101260705:dafang 贵州,毕节,纳雍:101260706:nayong 贵州,毕节,织金:101260707:zhijin 贵州,毕节,黔西:101260708:qianxi 贵州,六盘水,水城:101260801:shuicheng 贵州,六盘水,六枝:101260802:liuzhi 贵州,六盘水,盘县:101260804:panxian 贵州,黔西南,兴义:101260901:xingyi 贵州,黔西南,晴隆:101260902:qinglong 贵州,黔西南,兴仁:101260903:xingren 贵州,黔西南,贞丰:101260904:zhenfeng 贵州,黔西南,望谟:101260905:wangmo 贵州,黔西南,安龙:101260907:anlong 贵州,黔西南,册亨:101260908:ceheng 贵州,黔西南,普安:101260909:puan 四川,成都,成都:101270101:chengdu 四川,成都,龙泉驿:101270102:longquanyi 四川,成都,新都:101270103:xindu 四川,成都,温江:101270104:wenjiang 四川,成都,金堂:101270105:jintang 四川,成都,双流:101270106:shuangliu 四川,成都,郫县:101270107:pixian 四川,成都,大邑:101270108:dayi 四川,成都,蒲江:101270109:pujiang 四川,成都,新津:101270110:xinjin 四川,成都,都江堰:101270111:dujiangyan 四川,成都,彭州:101270112:pengzhou 四川,成都,邛崃:101270113:qionglai 四川,成都,崇州:101270114:chongzhou 四川,攀枝花,攀枝花:101270201:panzhihua 四川,攀枝花,仁和:101270202:renhe 四川,攀枝花,米易:101270203:miyi 四川,攀枝花,盐边:101270204:yanbian 四川,自贡,自贡:101270301:zigong 四川,自贡,富顺:101270302:fushun 四川,自贡,荣县:101270303:rongxian 四川,绵阳,绵阳:101270401:mianyang 四川,绵阳,三台:101270402:santai 四川,绵阳,盐亭:101270403:yanting 四川,绵阳,安县:101270404:anxian 四川,绵阳,梓潼:101270405:zitong 四川,绵阳,北川:101270406:beichuan 四川,绵阳,平武:101270407:pingwu 四川,绵阳,江油:101270408:jiangyou 四川,南充,南充:101270501:nanchong 四川,南充,南部:101270502:nanbu 四川,南充,营山:101270503:yingshan 四川,南充,蓬安:101270504:pengan 四川,南充,仪陇:101270505:yilong 四川,南充,西充:101270506:xichong 四川,南充,阆中:101270507:langzhong 四川,达州,达州:101270601:dazhou 四川,达州,宣汉:101270602:xuanhan 四川,达州,开江:101270603:kaijiang 四川,达州,大竹:101270604:dazhu 四川,达州,渠县:101270605:quxian 四川,达州,万源:101270606:wanyuan 四川,达州,通川:101270607:tongchuan 四川,达州,达县:101270608:daxian 四川,遂宁,遂宁:101270701:suining 四川,遂宁,蓬溪:101270702:pengxi 四川,遂宁,射洪:101270703:shehong 四川,广安,广安:101270801:guangan 四川,广安,岳池:101270802:yuechi 四川,广安,武胜:101270803:wusheng 四川,广安,邻水:101270804:linshui 四川,广安,华蓥:101270805:huaying 四川,巴中,巴中:101270901:bazhong 四川,巴中,通江:101270902:tongjiang 四川,巴中,南江:101270903:nanjiang 四川,巴中,平昌:101270904:pingchang 四川,泸州,泸州:101271001:luzhou 四川,泸州,泸县:101271003:luxian 四川,泸州,合江:101271004:hejiang 四川,泸州,叙永:101271005:xuyong 四川,泸州,古蔺:101271006:gulin 四川,泸州,纳溪:101271007:naxi 四川,宜宾,宜宾:101271101:yibin 四川,宜宾,宜宾县:101271103:yibinxian 四川,宜宾,南溪:101271104:nanxi 四川,宜宾,江安:101271105:jiangan 四川,宜宾,长宁:101271106:changning 四川,宜宾,高县:101271107:gaoxian 四川,宜宾,珙县:101271108:gongxian 四川,宜宾,筠连:101271109:junlian 四川,宜宾,兴文:101271110:xingwen 四川,宜宾,屏山:101271111:pingshan 四川,内江,内江:101271201:neijiang 四川,内江,东兴:101271202:dongxing 四川,内江,威远:101271203:weiyuan 四川,内江,资中:101271204:zizhong 四川,内江,隆昌:101271205:longchang 四川,资阳,资阳:101271301:ziyang 四川,资阳,安岳:101271302:anyue 四川,资阳,乐至:101271303:lezhi 四川,资阳,简阳:101271304:jianyang 四川,乐山,乐山:101271401:leshan 四川,乐山,犍为:101271402:qianwei 四川,乐山,井研:101271403:jingyan 四川,乐山,夹江:101271404:jiajiang 四川,乐山,沐川:101271405:muchuan 四川,乐山,峨边:101271406:ebian 四川,乐山,马边:101271407:mabian 四川,乐山,峨眉:101271408:emei 四川,乐山,峨眉山:101271409:emeishan 四川,眉山,眉山:101271501:meishan 四川,眉山,仁寿:101271502:renshou 四川,眉山,彭山:101271503:pengshan 四川,眉山,洪雅:101271504:hongya 四川,眉山,丹棱:101271505:danleng 四川,眉山,青神:101271506:qingshen 四川,凉山,凉山:101271601:liangshan 四川,凉山,木里:101271603:muli 四川,凉山,盐源:101271604:yanyuan 四川,凉山,德昌:101271605:dechang 四川,凉山,会理:101271606:huili 四川,凉山,会东:101271607:huidong 四川,凉山,宁南:101271608:ningnan 四川,凉山,普格:101271609:puge 四川,凉山,西昌:101271610:xichang 四川,凉山,金阳:101271611:jinyang 四川,凉山,昭觉:101271612:zhaojue 四川,凉山,喜德:101271613:xide 四川,凉山,冕宁:101271614:mianning 四川,凉山,越西:101271615:yuexi 四川,凉山,甘洛:101271616:ganluo 四川,凉山,雷波:101271617:leibo 四川,凉山,美姑:101271618:meigu 四川,凉山,布拖:101271619:butuo 四川,雅安,雅安:101271701:yaan:ya'an 四川,雅安,名山:101271702:mingshan 四川,雅安,荥经:101271703:yingjing 四川,雅安,汉源:101271704:hanyuan 四川,雅安,石棉:101271705:shimian 四川,雅安,天全:101271706:tianquan 四川,雅安,芦山:101271707:lushan 四川,雅安,宝兴:101271708:baoxing 四川,甘孜,甘孜:101271801:ganzi 四川,甘孜,康定:101271802:kangding 四川,甘孜,泸定:101271803:luding 四川,甘孜,丹巴:101271804:danba 四川,甘孜,九龙:101271805:jiulong 四川,甘孜,雅江:101271806:yajiang 四川,甘孜,道孚:101271807:daofu 四川,甘孜,炉霍:101271808:luhuo 四川,甘孜,新龙:101271809:xinlong 四川,甘孜,德格:101271810:dege 四川,甘孜,白玉:101271811:baiyu 四川,甘孜,石渠:101271812:shiqu 四川,甘孜,色达:101271813:seda 四川,甘孜,理塘:101271814:litang 四川,甘孜,巴塘:101271815:batang 四川,甘孜,乡城:101271816:xiangcheng 四川,甘孜,稻城:101271817:daocheng 四川,甘孜,得荣:101271818:derong 四川,阿坝,阿坝:101271901:aba 四川,阿坝,汶川:101271902:wenchuan 四川,阿坝,理县:101271903:lixian 四川,阿坝,茂县:101271904:maoxian 四川,阿坝,松潘:101271905:songfan 四川,阿坝,九寨沟:101271906:jiuzhaigou 四川,阿坝,金川:101271907:jinchuan 四川,阿坝,小金:101271908:xiaojin 四川,阿坝,黑水:101271909:heishui 四川,阿坝,马尔康:101271910:maerkang 四川,阿坝,壤塘:101271911:rangtang 四川,阿坝,若尔盖:101271912:nuoergai 四川,阿坝,红原:101271913:hongyuan 四川,德阳,德阳:101272001:deyang 四川,德阳,中江:101272002:zhongjiang 四川,德阳,广汉:101272003:guanghan 四川,德阳,什邡:101272004:shifang 四川,德阳,绵竹:101272005:mianzhu 四川,德阳,罗江:101272006:luojiang 四川,广元,广元:101272101:guangyuan 四川,广元,旺苍:101272102:wangcang 四川,广元,青川:101272103:qingchuan 四川,广元,剑阁:101272104:jiange 四川,广元,苍溪:101272105:cangxi 广东,广州,广州:101280101:guangzhou 广东,广州,番禺:101280102:panyu 广东,广州,从化:101280103:conghua 广东,广州,增城:101280104:zengcheng 广东,广州,花都:101280105:huadu 广东,韶关,韶关:101280201:shaoguan 广东,韶关,乳源:101280202:ruyuan 广东,韶关,始兴:101280203:shixing 广东,韶关,翁源:101280204:wengyuan 广东,韶关,乐昌:101280205:lechang 广东,韶关,仁化:101280206:renhua 广东,韶关,南雄:101280207:nanxiong 广东,韶关,新丰:101280208:xinfeng 广东,韶关,曲江:101280209:qujiang 广东,韶关,浈江:101280210:zhenjiang 广东,韶关,武江:101280211:wujiang 广东,惠州,惠州:101280301:huizhou 广东,惠州,博罗:101280302:boluo 广东,惠州,惠阳:101280303:huiyang 广东,惠州,惠东:101280304:huidong 广东,惠州,龙门:101280305:longmen 广东,梅州,梅州:101280401:meizhou 广东,梅州,兴宁:101280402:xingning 广东,梅州,蕉岭:101280403:jiaoling 广东,梅州,大埔:101280404:dabu 广东,梅州,丰顺:101280406:fengshun 广东,梅州,平远:101280407:pingyuan 广东,梅州,五华:101280408:wuhua 广东,梅州,梅县:101280409:meixian 广东,汕头,汕头:101280501:shantou 广东,汕头,潮阳:101280502:chaoyang 广东,汕头,澄海:101280503:chenghai 广东,汕头,南澳:101280504:nanao 广东,深圳,深圳:101280601:shenzhen 广东,珠海,珠海:101280701:zhuhai 广东,珠海,斗门:101280702:doumen 广东,珠海,金湾:101280703:jinwan 广东,佛山,佛山:101280800:foshan 广东,佛山,顺德:101280801:shunde 广东,佛山,三水:101280802:sanshui 广东,佛山,南海:101280803:nanhai 广东,佛山,高明:101280804:gaoming 广东,肇庆,肇庆:101280901:zhaoqing 广东,肇庆,广宁:101280902:guangning 广东,肇庆,四会:101280903:sihui 广东,肇庆,德庆:101280905:deqing 广东,肇庆,怀集:101280906:huaiji 广东,肇庆,封开:101280907:fengkai 广东,肇庆,高要:101280908:gaoyao 广东,湛江,湛江:101281001:zhanjiang 广东,湛江,吴川:101281002:wuchuan 广东,湛江,雷州:101281003:leizhou 广东,湛江,徐闻:101281004:xuwen 广东,湛江,廉江:101281005:lianjiang 广东,湛江,赤坎:101281006:chikan 广东,湛江,遂溪:101281007:suixi 广东,湛江,坡头:101281008:potou 广东,湛江,霞山:101281009:xiashan 广东,湛江,麻章:101281010:mazhang 广东,江门,江门:101281101:jiangmen 广东,江门,开平:101281103:kaiping 广东,江门,新会:101281104:xinhui 广东,江门,恩平:101281105:enping 广东,江门,台山:101281106:taishan 广东,江门,蓬江:101281107:pengjiang 广东,江门,鹤山:101281108:heshan 广东,江门,江海:101281109:jianghai 广东,河源,河源:101281201:heyuan 广东,河源,紫金:101281202:zijin 广东,河源,连平:101281203:lianping 广东,河源,和平:101281204:heping 广东,河源,龙川:101281205:longchuan 广东,河源,东源:101281206:dongyuan 广东,清远,清远:101281301:qingyuan 广东,清远,连南:101281302:liannan 广东,清远,连州:101281303:lianzhou 广东,清远,连山:101281304:lianshan 广东,清远,阳山:101281305:yangshan 广东,清远,佛冈:101281306:fogang 广东,清远,英德:101281307:yingde 广东,清远,清新:101281308:qingxin 广东,云浮,云浮:101281401:yunfu 广东,云浮,罗定:101281402:luoding 广东,云浮,新兴:101281403:xinxing 广东,云浮,郁南:101281404:yunan 广东,云浮,云安:101281406:yunan 广东,潮州,潮州:101281501:chaozhou 广东,潮州,饶平:101281502:raoping 广东,潮州,潮安:101281503:chaoan 广东,东莞,东莞:101281601:dongguan 广东,中山,中山:101281701:zhongshan 广东,阳江,阳江:101281801:yangjiang 广东,阳江,阳春:101281802:yangchun 广东,阳江,阳东:101281803:yangdong 广东,阳江,阳西:101281804:yangxi 广东,揭阳,揭阳:101281901:jieyang 广东,揭阳,揭西:101281902:jiexi 广东,揭阳,普宁:101281903:puning 广东,揭阳,惠来:101281904:huilai 广东,揭阳,揭东:101281905:jiedong 广东,茂名,茂名:101282001:maoming 广东,茂名,高州:101282002:gaozhou 广东,茂名,化州:101282003:huazhou 广东,茂名,电白:101282004:dianbai 广东,茂名,信宜:101282005:xinyi 广东,茂名,茂港:101282006:maogang 广东,汕尾,汕尾:101282101:shanwei 广东,汕尾,海丰:101282102:haifeng 广东,汕尾,陆丰:101282103:lufeng 广东,汕尾,陆河:101282104:luhe 云南,昆明,昆明:101290101:kunming 云南,昆明,东川:101290103:dongchuan 云南,昆明,寻甸:101290104:xundian 云南,昆明,晋宁:101290105:jinning 云南,昆明,宜良:101290106:yiliang 云南,昆明,石林:101290107:shilin 云南,昆明,呈贡:101290108:chenggong 云南,昆明,富民:101290109:fumin 云南,昆明,嵩明:101290110:songming 云南,昆明,禄劝:101290111:luquan 云南,昆明,安宁:101290112:anning 云南,昆明,太华山:101290113:taihuashan 云南,大理,大理:101290201:dali 云南,大理,云龙:101290202:yunlong 云南,大理,漾濞:101290203:yangbi 云南,大理,永平:101290204:yongping 云南,大理,宾川:101290205:binchuan 云南,大理,弥渡:101290206:midu 云南,大理,祥云:101290207:xiangyun 云南,大理,巍山:101290208:weishan 云南,大理,剑川:101290209:jianchuan 云南,大理,洱源:101290210:eryuan 云南,大理,鹤庆:101290211:heqing 云南,大理,南涧:101290212:nanjian 云南,红河,红河:101290301:honghe 云南,红河,石屏:101290302:shiping 云南,红河,建水:101290303:jianshui 云南,红河,弥勒:101290304:mile 云南,红河,元阳:101290305:yuanyang 云南,红河,绿春:101290306:lvchun 云南,红河,开远:101290307:kaiyuan 云南,红河,个旧:101290308:gejiu 云南,红河,蒙自:101290309:mengzi 云南,红河,屏边:101290310:pingbian 云南,红河,泸西:101290311:luxi 云南,红河,金平:101290312:jinping 云南,红河,河口:101290313:hekou 云南,曲靖,曲靖:101290401:qujing 云南,曲靖,沾益:101290402:zhanyi 云南,曲靖,陆良:101290403:luliang 云南,曲靖,富源:101290404:fuyuan 云南,曲靖,马龙:101290405:malong 云南,曲靖,师宗:101290406:shizong 云南,曲靖,罗平:101290407:luoping 云南,曲靖,会泽:101290408:huize 云南,曲靖,宣威:101290409:xuanwei 云南,保山,保山:101290501:baoshan 云南,保山,龙陵:101290503:longling 云南,保山,施甸:101290504:sidian 云南,保山,昌宁:101290505:changning 云南,保山,腾冲:101290506:tengchong 云南,文山,文山:101290601:wenshan 云南,文山,西畴:101290602:xichou 云南,文山,马关:101290603:maguan 云南,文山,麻栗坡:101290604:malipo 云南,文山,砚山:101290605:yanshan 云南,文山,丘北:101290606:qiubei 云南,文山,广南:101290607:guangnan 云南,文山,富宁:101290608:funing 云南,玉溪,玉溪:101290701:yuxi 云南,玉溪,澄江:101290702:chengjiang 云南,玉溪,江川:101290703:jiangchuan 云南,玉溪,通海:101290704:tonghai 云南,玉溪,华宁:101290705:huaning 云南,玉溪,新平:101290706:xinping 云南,玉溪,易门:101290707:yimen 云南,玉溪,峨山:101290708:eshan 云南,玉溪,元江:101290709:yuanjiang 云南,楚雄,楚雄:101290801:chuxiong 云南,楚雄,大姚:101290802:dayao 云南,楚雄,元谋:101290803:yuanmou 云南,楚雄,姚安:101290804:yaoan 云南,楚雄,牟定:101290805:mouding 云南,楚雄,南华:101290806:nanhua 云南,楚雄,武定:101290807:wuding 云南,楚雄,禄丰:101290808:lufeng 云南,楚雄,双柏:101290809:shuangbai 云南,楚雄,永仁:101290810:yongren 云南,普洱,普洱:101290901:puer 云南,普洱,景谷:101290902:jinggu 云南,普洱,景东:101290903:jingdong 云南,普洱,澜沧:101290904:lancang 云南,普洱,墨江:101290906:mojiang 云南,普洱,江城:101290907:jiangcheng 云南,普洱,孟连:101290908:menglian 云南,普洱,西盟:101290909:ximeng 云南,普洱,镇沅:101290911:zhenyuan 云南,普洱,宁洱:101290912:ninger 云南,昭通,昭通:101291001:zhaotong 云南,昭通,鲁甸:101291002:ludian 云南,昭通,彝良:101291003:yiliang 云南,昭通,镇雄:101291004:zhenxiong 云南,昭通,威信:101291005:weixin 云南,昭通,巧家:101291006:qiaojia 云南,昭通,绥江:101291007:suijiang 云南,昭通,永善:101291008:yongshan 云南,昭通,盐津:101291009:yanjin 云南,昭通,大关:101291010:daguan 云南,昭通,水富:101291011:shuifu 云南,临沧,临沧:101291101:lincang 云南,临沧,沧源:101291102:cangyuan 云南,临沧,耿马:101291103:gengma 云南,临沧,双江:101291104:shuangjiang 云南,临沧,凤庆:101291105:fengqing 云南,临沧,永德:101291106:yongde 云南,临沧,云县:101291107:yunxian 云南,临沧,镇康:101291108:zhenkang 云南,怒江,怒江:101291201:nujiang 云南,怒江,福贡:101291203:fugong 云南,怒江,兰坪:101291204:lanping 云南,怒江,泸水:101291205:lushui 云南,怒江,六库:101291206:liuku 云南,怒江,贡山:101291207:gongshan 云南,迪庆,香格里拉:101291301:xianggelila 云南,迪庆,德钦:101291302:deqin 云南,迪庆,维西:101291303:weixi 云南,迪庆,中甸:101291304:zhongdian 云南,丽江,丽江:101291401:lijiang 云南,丽江,永胜:101291402:yongsheng 云南,丽江,华坪:101291403:huaping 云南,丽江,宁蒗:101291404:ninglang 云南,德宏,德宏:101291501:dehong 云南,德宏,陇川:101291503:longchuan 云南,德宏,盈江:101291504:yingjiang 云南,德宏,瑞丽:101291506:ruili 云南,德宏,梁河:101291507:lianghe 云南,德宏,潞西:101291508:luxi 云南,西双版纳,景洪:101291601:jinghong 云南,西双版纳,勐海:101291603:menghai 云南,西双版纳,勐腊:101291605:mengla 广西,南宁,南宁:101300101:nanning 广西,南宁,邕宁:101300103:yongning 广西,南宁,横县:101300104:hengxian 广西,南宁,隆安:101300105:longan 广西,南宁,马山:101300106:mashan 广西,南宁,上林:101300107:shanglin 广西,南宁,武鸣:101300108:wuming 广西,南宁,宾阳:101300109:binyang 广西,崇左,崇左:101300201:chongzuo 广西,崇左,天等:101300202:tiandeng 广西,崇左,龙州:101300203:longzhou 广西,崇左,凭祥:101300204:pingxiang 广西,崇左,大新:101300205:daxin 广西,崇左,扶绥:101300206:fusui 广西,崇左,宁明:101300207:ningming 广西,柳州,柳州:101300301:liuzhou 广西,柳州,柳城:101300302:liucheng 广西,柳州,鹿寨:101300304:luzhai 广西,柳州,柳江:101300305:liujiang 广西,柳州,融安:101300306:rongan 广西,柳州,融水:101300307:rongshui 广西,柳州,三江:101300308:sanjiang 广西,来宾,来宾:101300401:laibin 广西,来宾,忻城:101300402:xicheng 广西,来宾,金秀:101300403:jinxiu 广西,来宾,象州:101300404:xiangzhou 广西,来宾,武宣:101300405:wuxuan 广西,来宾,合山:101300406:heshan 广西,桂林,桂林:101300501:guilin 广西,桂林,龙胜:101300503:longsheng 广西,桂林,永福:101300504:yongfu 广西,桂林,临桂:101300505:lingui 广西,桂林,兴安:101300506:xingan 广西,桂林,灵川:101300507:lingchuan 广西,桂林,全州:101300508:quanzhou 广西,桂林,灌阳:101300509:guanyang 广西,桂林,阳朔:101300510:yangshuo 广西,桂林,恭城:101300511:gongcheng 广西,桂林,平乐:101300512:pingle 广西,桂林,荔浦:101300513:lipu 广西,桂林,资源:101300514:ziyuan 广西,梧州,梧州:101300601:wuzhou 广西,梧州,藤县:101300602:tengxian 广西,梧州,苍梧:101300604:cangwu 广西,梧州,蒙山:101300605:mengshan 广西,梧州,岑溪:101300606:cenxi 广西,贺州,贺州:101300701:hezhou 广西,贺州,昭平:101300702:zhaoping 广西,贺州,富川:101300703:fuchuan 广西,贺州,钟山:101300704:zhongshan 广西,贵港,贵港:101300801:guigang 广西,贵港,桂平:101300802:guiping 广西,贵港,平南:101300803:pingnan 广西,玉林,玉林:101300901:yulin 广西,玉林,博白:101300902:bobai 广西,玉林,北流:101300903:beiliu 广西,玉林,容县:101300904:rongxian 广西,玉林,陆川:101300905:luchuan 广西,玉林,兴业:101300906:xingye 广西,百色,百色:101301001:baise 广西,百色,那坡:101301002:napo 广西,百色,田阳:101301003:tianyang 广西,百色,德保:101301004:debao 广西,百色,靖西:101301005:jingxi 广西,百色,田东:101301006:tiandong 广西,百色,平果:101301007:pingguo 广西,百色,隆林:101301008:longlin 广西,百色,西林:101301009:xilin 广西,百色,乐业:101301010:leye 广西,百色,凌云:101301011:lingyun 广西,百色,田林:101301012:tianlin 广西,钦州,钦州:101301101:qinzhou 广西,钦州,浦北:101301102:pubei 广西,钦州,灵山:101301103:lingshan 广西,河池,河池:101301201:hechi 广西,河池,天峨:101301202:tiane 广西,河池,东兰:101301203:donglan 广西,河池,巴马:101301204:bama 广西,河池,环江:101301205:huanjiang 广西,河池,罗城:101301206:luocheng 广西,河池,宜州:101301207:yizhou 广西,河池,凤山:101301208:fengshan 广西,河池,南丹:101301209:nandan 广西,河池,都安:101301210:andu 广西,河池,大化:101301211:dahua 广西,北海,北海:101301301:beihai 广西,北海,合浦:101301302:hepu 广西,北海,涠洲岛:101301303:weizhoudao 广西,防城港,防城港:101301401:fangchenggang 广西,防城港,上思:101301402:shangsi 广西,防城港,东兴:101301403:dongxing 广西,防城港,防城:101301405:fangcheng 海南,海口,海口:101310101:haikou 海南,三亚,三亚:101310201:sanya 海南,东方,东方:101310202:dongfang 海南,临高,临高:101310203:lingao 海南,澄迈,澄迈:101310204:chengmai 海南,儋州,儋州:101310205:danzhou 海南,昌江,昌江:101310206:changjiang 海南,白沙,白沙:101310207:baisha 海南,琼中,琼中:101310208:qiongzhong 海南,定安,定安:101310209:dingan 海南,屯昌,屯昌:101310210:tunchang 海南,琼海,琼海:101310211:qionghai 海南,文昌,文昌:101310212:wenchang 海南,保亭,保亭:101310214:baoting 海南,万宁,万宁:101310215:wanning 海南,陵水,陵水:101310216:lingshui 海南,西沙,西沙:101310217:xisha 海南,南沙,南沙:101310220:nansha 海南,乐东,乐东:101310221:ledong 海南,五指山,五指山:101310222:wuzhishan 香港,香港,香港:101320101:hongkong:xianggang 香港,香港,九龙:101320102:jiulong 香港,香港,新界:101320103:xinjie 澳门,澳门,澳门:101330101:macao:aomen 澳门,澳门,氹仔岛:101330102:dangzidao 澳门,澳门,路环岛:101330103:luhuandao 台湾,台北,台北:101340101:taibeixian 台湾,台北,桃园:101340102:taoyuan 台湾,台北,新竹:101340103:xinzhu 台湾,台北,宜兰:101340104:yilan 台湾,高雄,高雄:101340201:gaoxiong 台湾,高雄,嘉义:101340202:jiayi 台湾,高雄,台南:101340203:tainan 台湾,高雄,台东:101340204:taidong 台湾,高雄,屏东:101340205:pingdong 台湾,台中,台中:101340401:taizhong 台湾,台中,苗栗:101340402:miaoli 台湾,台中,彰化:101340403:zhanghua 台湾,台中,南投:101340404:nantou 台湾,台中,花莲:101340405:hualian 台湾,台中,云林:101340406:yunlin indicator-china-weather-1.1.0/icons/d0.gif000644 001750 001750 00000005463 12277056351 020641 0ustar00saucysaucy000000 000000 GIF89a00}99<>=<>?A@ACCBDFEGHJMPRVWX_]dgrx}69::9;;<===?@@@BBBCEDFEGIJMOPSRUVYZ_^bdilpsuyy{~FJQYesasѫދРւƿȥԳą؞pʺ^ܑjINRQTW߿P[^\!%*.045859;?>@DDFHJEMNQSRUitzރ $&)(*..-117:=KJOTߎ!,00ң@:*\ȰÅ0# Hc {0ǎ z4CCT@&ONÈ@aGCPcЧPzG @j  B,k"@,ʖ%J$ PRDȑx"`5۠oÈV!1JK,&Z7B%$ L*L@dIְaO` ԡZc ^ &@pbysR(@ab!V:VN0aNPB'_“6T )$NAAULa*"a7"*,X THT$EU4X*,"UpxA*/h /l/J.p[XAP&J6#0øNhK7)Z`qjWhY4H[)M7O?̷Ì=.p3**klXdrAn)>jζpL3<#4"Q"%:jc2P-sc SFґ4a~cH1 P+ s012kdQÅ-jQh,;:эfcӀ+Ta3@ `06 gTHi g9xg! `F̱~cؠ3A6q@0ؑsWGG };fh<2FO(aGs\$pNzғ0tCH1H F1_ $ .5 L0u _d0G: aЌ&4`c| G>D'n&HI9*t0`3ivfs/Nrk@K9‘r8(DPsCG7^A5AL0R%PC)ҕq# uLe qC)HS64m8APz7m(6p0ͦKp|9{pT6B7lb=Eࠪ8TiXjֳ(X@Ӑ7 tu}+d YQ 8栂96) z*Y+⠬Uo#z)`&X`(pC T@\;ȡuBWDyYj;q-];VQH(7rb8RHȑlW,`/ V1TVp<܁/84 ;^A)Z_ɖ(E^8,?!-xA U\B2~Db0A*X1np Zb<Ìayp π4bRH~$g?,ϋ  IHB7iJ%MA~ش!fBAgmU|D fi> 'd T4HlıQf';} lJ؀(D QKbN=P"5ٍUb6(DO ' A'a Bt"?!&NCԀ"n b )nMy9 C|"w;indicator-china-weather-1.1.0/icons/d18.gif000644 001750 001750 00000003633 12277056351 020727 0ustar00saucysaucy000000 000000 GIF89a00TW3o5q4p6q8t8s;w:uy=u{=z=x?}=y?|?z?{CA}@zDB}FDCC|EGGE~HGJJHKILKINLKPNMPNSPRRSSOZY[\^b_a`eaeehekjgmlkionkpmoqpusryuwv}yw{zy}|{݀}߀~䁴ヶ典焴⃳ዺ暸2s3t5vIKQRPTSU]``djlqqn|}~ށဳサ!,00 pS%K[l9Ç#:T}ܴ J-Iɓ%ҍ1`( 1]rɳϞ^n㥨7/_RӧP>"F7/bVgKٳd,M3eҸL[˷^m,0CƌPH3! ǐ#KL99\*!G l*ySӨS^Zu:Щ#N ]9w(דg@·K<}]@2;zA {GH"8r8R R0bȇ ($舅DB" $ r "@b88v$@BI#,r%"4PF)%|"8,E-F袋bg ꬷ>3;Ox<> !<00>>GQL1 C 2I$` 1$2J,'=pJ28s0)Ӿ4L2O4c. H0K@fȣKF<H Z`2h0c̈5A(D L W- )@Aaq@=x1h LІ &JMH*RhbQ'ZհH2h4c6z4aUG6q0^x̣G>G6*#=9E:򑐌$!9lLA ;indicator-china-weather-1.1.0/icons/n14.gif000644 001750 001750 00000005071 12277056351 020733 0ustar00saucysaucy000000 000000 GIF89a008Z7Y~6X}ҼϾĩ¶ͺ݅Ůƫþѽ1S~ɰǢ˸̴/N&=\4Ry7T|ú3U0Q1R6X/N2S3T1O5V3R9Z#@c%Be*Jp,Lr0Pv/Ms/Mq3Sy4Tz6V|3Qu9Y9Y:Z9W{;Y}EZtع0P/O2R/M3S0N0M4T1O5U2P6V2O9[3Q7W8X4R;]9Y5S<^7U8V6S;["Be!?a >^7U6S!>]"=Z,Ns(Fh-Ot!9T/Qv'Ba0Rw,Jm1Sx2Ty5X~3Uz6Y4V{7Z5W|/Mm9[4Rt6Uw>`Eg5Mh?Xu=TmYqWi}k~}ɭֶ0N2Q2P4R5S0K6T:Y;Z@c?`<[=\!Bc>]!@_%Fi#Ba#A`'Hi&Ef*Kn+Mp)Ik&Dc+Ln-Nq2X}1Uy.Or4Z2Vz/Ps%@[0Qt.Op1Sv/Pq1Ru0Qr3Tw7[4Ux8\5Vy7Y|6Wz9Z}:[~8YzMe~gyu1M4Q3O6S5Q;Z<[8T>]CBdN[q$ɻ>}UӨST wH.׸֕Ӏp麣ȋhovp9wBut)n8;CF'*>F~ h *k!k@g.y/!$<0bƃ |F -.d ˇB/Di䑼IB" p @ =˗ 0 =S0~K _s cg|AX+81f"(#""L Bi̗!A,x *B "o #0"!R+ȃw(k@,g@?B(l2 "J+"t;" .R1b$* |쩩-܀B {rt1NS|"$x@9dN'P=BԥVFT+ h7%PQCBPF%aV M}% bhk\zV6k0qW+hr}7zr&06q@8!qPx,&P{+DֲxkA> >T!Fֵ @l:WG10bP?PzW#00}K^ͯ~0M\C@:'Xᾛo~@!y_?տp 78sg~ۉ4OKzXy<~Q2Խb(w,"T)Rs>2UT<'2zOGJa><&JjF/;YQBYp,Lqi!B ؤ} >w⥘RG讱I9s}$`Wjb*GXV9} Np',@7 ;ύⳜks0BM0P2`piAb'==C{#H>? zl>)=YWCW%#+tiTT!l(r!s#t">tnC-z\a` Vvb*zE֕c .j[ w0H`8GCH[_z\q> o0'[̏B\aOYIZ^I̽<2f {i@yH"=Ţd+FFP |*uzD`bP=ZURk簬x{w1sȶqQ** ;|a9Ïyd3wXܫC8,e7*o @g=oOl)3b'Iv܂u,_0 V_aᓘRqz@0Ɲ 4 z;qEK7C_@NΕ?D)ʸvmõ7|+ {B< 4Jfv I?khevO6vщXMJv׍E!;yC/POH3D]<ogA:5Ll3 _2-=\1m}d2)n_:L*nxi*44k"uLU|LW}lsl*c7k2be]0DJ}L[cuGq*0I(A,:WW;<7p1PX`JwibQ>> h.稄٪==)v΂UjYG&ncA; -0ho$x1Ksx &cL"py_4ƘQ, / !#a˴+{5YW*em`719ZSԢEfV:sУE eo"n?;= >G> $*#nK6Ew0 K[zk\$sq(%%dRud=^Tr.A2,[ˏGwM&I_.Ӌ!}4OWE&P!K-j hs̚Zh[bnE^@5.\X 5tewSVʭf$V i꼡O'R%TO%Ri!)ˆZlMTD5BEa7؈x#$"{yESĿ4fQ(5:z. Wn cB/?{;gb ފM:=߷ 7-)w*& "o 6-20ۄq!)jѳBJ39 \/s-Bx ySXS l']Ⱦ=#b)u>],L@-"fV5u4QHn6 0G8a}߷1o "㩲_n"‰CfS{軣Jᒻ=ąF2Fy@_ԉAbb)q{?t 9$/Mr|k`fA>qz4oP[/S/wF(k?Zvp]W vn3)jI˴#78}CQ ZjS.m̰=om7H8 qmQ bR.yd~~eo:݅~/ޙˏ SdUxKpl5(w@ 3OS R%V|uBm-f>PzpZ™+Mm +>+3<Fj"#*d|?$eƳ<"m;{KYBllJ_m{ [OQ-V9 `7<#0u$[a!jd*1_'?TՓٲoi+QHn +!WLu^1DH)pwy:1kU`0 ܔ$uL3-T2Kvyh`P! EcgyEy#]AïsVT$xE2{ϧ~O?9* <4ȶp{ ɡF[R(7=d! !L 9\eKhq70IPRsMrD6G5$"g'ܺ2" $ ~JyB׿b11D~hrc+3x -"i?B!~!ډ}J;'@aϯ,xvء~u ģvN,P]qF7}ƷK(~"fLo{fdGɵڥ>Ks U+B@ev M B Betޠ8}{;|8QlmO KxqP=[O1o0eЙ4mb40()@ƀ)Y<"! =CV{P~/_E}x z|{|'f.6ǢOL .KM K?ϲyxͧL~le:V7wKs*A輡.3)_)|P(#l3&?yj#CSpDfRӳ,+P5(n-jX5 1τtCYa*^V%'FWp K<Esj&N!9:zsLG`/gi2Xް עiU(7r n@#i#en⹨? sxFp.$X f!={ C sfXe^ >qnVP!$ c[5Xnq}~5giX(Bq tn }5M*Γ#= K ?sql(9 O2-eQ~+25dnAbC">93 pQ85ʬވ{U^dN hMi.X0: (&./1] -lPQ@P"1[8DT(D z ɜeYZɳAPB  ("{/lתpUe> c9ªj]I,IDޡ:,zZabRjHjWfYFK%s,Gb(h//v5QPk %e[{ިUxj4Wx EOu!z>Vr4JPY)dQzN yfp|oL7sk7pߐfzl=k:5 ܋ ge) 74ȏ*M84mv*w5q]yf1R, ,.'nҠ@ZY@԰o<ċ_;ـSlO.{շ(1gxhbisE!b3V ӾApqJ:@e)JNCz%iS 3];LԨY*9(K廯:@ro+ceBxB7CR/R ĮXG*3mbP*Gt]@׵ <'^(UR4s׻x7_̯*uy'gUv"]{~Sm."ޕJQ!땟 ^Kyw_ۿ*?r+ 3YEbyܮuU-fv?Nd߳-YD~I:u`iEа?Ro\yEoՠj_\|мQӬ2vqrnH|^I<êH=JfϝwQ]D&Yƫh2C{5s7t٬)Z\۫'ݲ)>ydC~HEb9vݫ$9szE>z]3qEl6Ȁq8,9z-aI-`r(F5" t~ts1B0<e$/\ BH{>J,Їt" iXZZA"'&oIAqA0+4 "1/21paxP0KPc*U}Vj,! iPq/TwP4 !.AqȪMQUZ6 PPHV0?0@\-Ѽ7x 6Y(PfP:\ŀt,h= @gfw[Z! (&P8Uҫ_{[(Ȃ; 0Nӭj-B0&DЀ؅ }$[]N0D"&>AM0}]Zg0:v 0DLO(0{Z0ALO.(1)pcx* 0_HqpcP)2 /Mv2ML09C <(P΄0 5QvA!!m2,g2}&s6{BPnC;indicator-china-weather-1.1.0/src/pycwapi.py000644 001750 001750 00000007642 12277056351 021352 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # Authors: Zhang Zhao vaguedream@hotmail.com # Kobe Lee kobe24_lixiang@126.com # wyan yiwuhehe@163.com # binghe kylinhebing@163.com # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE """ Fetches weather reports from Chinese Weather """ import os, sys import urllib2, urllib import json from base import PROJECT_ROOT_DIRECTORY, WEATHER_URL, WEATHER_URL1, WEATHER_URL2 CHN_CITY_LIST_FILE = os.path.join(PROJECT_ROOT_DIRECTORY, 'src/location.txt') def read_from_url(url): # returns weather info by json_string request = urllib2.Request(url, headers={'User-Agent' : 'Magic Browser'}) f = urllib2.urlopen(request) json_string = f.read() f.close() return json_string def get_weather_from_nmc(location_id, method = 0): """ Fetches weather report from NMC Parameters: location_id: City ID for request weather method: 'simple' 0 or 'complex' 1 Returns: weather_data: a dictionary of weather data that exists in Json feed. """ weather_data = {} if method == 0: url1 = WEATHER_URL1 % (location_id) url2 = WEATHER_URL2 % (location_id) json_string1 = read_from_url(url1) json_string2 = read_from_url(url2) parsed_json1 = json.loads(json_string1) parsed_json2 = json.loads(json_string2) for key in ('city', 'temp', 'SD', 'WD', 'WS', 'time'): weather_data[key] = parsed_json1['weatherinfo'][key] for key in ('weather', 'temp1', 'temp2', 'img1', 'img2', 'ptime'): weather_data[key] = parsed_json2['weatherinfo'][key] elif method == 1: url = WEATHER_URL % (location_id) json_string = read_from_url(url) parsed_json = json.loads(json_string) tp_forecast = ('city', 'date_y', 'fchh', 'temp1', 'temp2', 'temp3', 'temp4', 'temp5', 'temp6', \ 'weather1', 'weather2', 'weather3', 'weather4', 'weather5', 'weather6', \ 'wind1', 'wind2', 'wind3', 'wind4', 'wind5', 'wind6', \ 'img1', 'img2', 'img3', 'img4', 'img5', 'img6', 'img7', 'img8', 'img9', 'img10', 'img11', 'img12', 'img_single', \ 'img_title1', 'img_title2', 'img_title3', 'img_title4', 'img_title5', 'img_title6', \ 'img_title7', 'img_title8', 'img_title9', 'img_title10', 'img_title11', 'img_title12', 'img_title_single', \ 'wind1', 'wind2', 'wind3', 'wind4', 'wind5', 'wind6', \ 'fx1', 'fx2', 'fl1', 'fl2', 'fl3', 'fl4', 'fl5', 'fl6', \ 'index', 'index_d', 'index48', 'index48_d', 'index_uv', 'index_xc', 'index_tr', 'index_co', 'index_cl', 'index_ls', 'index_ag') for key in tp_forecast: weather_data[key] = parsed_json['weatherinfo'][key] else: print "Error,choose method for 0 or 1" exit(1) return weather_data def get_location_from_cityid(cityid): """ returns city location by search cityid, added by kobe """ location = '' f = open(CHN_CITY_LIST_FILE, 'r') for line in f.readlines(): if cityid in line: location = line.split(':')[0] break f.close() return location if __name__ == "__main__": weatherinfo = get_weather_from_nmc('101281601', 0) cities = get_cities_from_localfile('长沙') download_icon_from_nmc('d0.gif', 'd') indicator-china-weather-1.1.0/icons/n15.gif000644 001750 001750 00000005313 12277056351 020733 0ustar00saucysaucy000000 000000 GIF89a008ẔɁܠŠ»܆ȷ᷻ٛǾ6Z~¶/N :]6S{wȪĘŻ.O3U0Q1R/M7Y2S0N3T1P9[4U:\5V7W3Q!>a9Z#@c :[%Be,Lr(Df,Jn*Gi!6Q1Qw4Tz3Qu9Y7W}9Y9Y5Sw:Z9W}7Uy;Y}?_^"@`!=[(Im%Bb&Dd$@^.Ou/Qv0Rw":T2Sy4V{0Nq5W|'@[7Z6X}7Y~8Z4Rt*C^1LkFh=Vs?UnNe~1P0N4S8Y2P9Z.I4R5S1L6T:Y7U;Z2M@b Ab=\9V!Bd:X;Y7R >]%Fh'Ij&Ef+Mq+Ln-Or+Ll*Ij2Uz/Ps0Qt4X|2Tw1Ru.Mn2Sv7[4Ux2St5Wz5Vy7Y|/Lj9\7X{9Z}5Mfg{w0M1M2O9X6S4P;Z7S>]?^%^ʚKݻxz-$띬B)NȻB'pBUa>|1XqZ Eӵ ъ H#,Yz4jӶٲudA]##7kРq.K+JYd"DWe_DJRfaӆx裄! .tL ΒK ;ԡ +hAe2".<.)d <(B -r0A. 9030cc0`Nbs9s̑UH"x0#@B P!PrO6" GN;9"tJD *J0!$N@1HO+CI:̩@ A!x &P |0!1@1 2L : ,0&x % 'A9c,1D8h.5n[s d-AiHs 1z 0)Pa1SA0lpt>q5 j0`BH<@*昳JtD1͐)Za@55AkH:שB[ "1e tFj $4@SA!H= eD0"$ P`omb~98 mX@ T#H3 j$MF@Gp-!@WiQ{X0((nl2`QP[ \``8@}9#Aa5J,x2ыN 5@0( VQ~/ ) 1 I,H-gx3qpg8!}?Ё"fpKh@޴?O,@CP$sNp, Gd(80 ` (pNc%VjKt՘%Vp#:pD8v fT VPF3 G`(? *㤙@O/Zh8r"VC0 t\-C$aU^] '"k8CθF&L a G! ^!5q&҈)t^5 ihC`P7RѴ/4qMtַ`6 gpBXRQ~45k5Ml PShpZ=.'lp"I}\{TlBF4 N$xAURHýF{B 78e( 2Od ' ' Ԁ5@b":‹AOZ)ЈC>汒A!+ F2o, PPWVLftM7!khfrnbrFsǜg3Y'm9mVs @̡( ; ^P|#~t,H97leO>.d֢C7PeQԞŝP؂5<-R\4}MjYl2z 1,a;indicator-china-weather-1.1.0/icons/d53.gif000644 001750 001750 00000003356 12277056351 020730 0ustar00saucysaucy000000 000000 GIF89a00SNBD@?V;CZHFMLQ9#om9sh[r]}gu#^ycx<Sա؞#_9=܋=ɷуR©7Xʑ̸ō ?px˘-LΘ?_i O.z֥qMڸgM{D 0yŏ O\€УKN)hνkҠӫ_Ͼ ˇcZ~ ' -L ?$1p @hC rC *Xa:t‡!‹.1*pċBB 6iG D>&H"p 0 "`% V*Qˎ+(dH % 0lg;PrRa { 4砄"~C $"饘J*dꩂ`C :ꩨ'"JGb 2) jc뮻"L+L& , 1~e,LA̰ J=HqDkF p1qhbZB*\2H.̺`VË`&|D/B+{ ʗp>x3C-/G3)o@-DmϏ@L7PG5TmXg\W`-dm`[rlp-T`Lv|݄P`L7+~Tn]y[dNz窛zNL LFw;@/o7G/K`gwo=k E@ 觟> !<А ~E\OCuQUxЄY KW!`xP$AѠV;indicator-china-weather-1.1.0/icons/d26.gif000644 001750 001750 00000005466 12277056351 020734 0ustar00saucysaucy000000 000000 GIF89a00:;=>ABCDEEFFKDPOU^jrؗ}ʞͨޔ؜:9;;:<>=>?>@@?B@BBABEDFFFJIKA>LKGLL;~ONNOPRQ g;HcÓs'ҡX ʵ+;zUREӧNW7ܻwӇ:ɥ'!CПLe"!!E ?##t" vh#N2{ɢH2EZ#I̶ [P焞KBDHQ42r[@]Hc>"DO~|B8Į ` ̐,5*$VHND& A $B `"ZX!0#>H%7>$M<čCA  pO&T#0HWJ" &ZriX$pH$94C H '@p," ]RBI\"ht|sp&`B h薄^%NxpD'EI'Kb@ *rv -`Bd"ZNx'&<.P0`CF@)~AK3-ZL(x- ޑ + `+^BK[`A+0B skpB܀ )y(04D/B GcrO 7p p;@!)P)Р}%rOKA $hB4H0;bFḰ% ˎ%(Tb|(pт{7׻] <0 ̣ R/ [ RtXœ6 ~@Z@` ] S Ȃ0`_(@b nR8 fE'^ $"p VYȂ>atP*z!]Ti0v_cxGrJwdaNNq`H7]E юq 9^_ #Pa `,㦹(™4@1e,]0j˜k1bG d]0^&̈ts eT/|ZD| X8` *PVB=z73A SЀ3 +Wp4jcP,AB#h1c8q5n|ci\ҠƎ xuý?PjdC4 WB6 -c ؂-pAcFcaюX.y ]63aoxc؂?ڨej k4-FNk_B71l x0OW§=jm| ȵu n|MbƯml`w!7pb8n{8{;67!ez@~@:M3C98!sP8>omGC(3sL\A;indicator-china-weather-1.1.0/src/base.py000644 001750 001750 00000003176 12277056351 020606 0ustar00saucysaucy000000 000000 #!/usr/bin/env python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # Authors: Zhang Zhao vaguedream@hotmail.com # Kobe Lee kobe24_lixiang@126.com # wyan yiwuhehe@163.com # binghe kylinhebing@163.com # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os, sys def get_parent_path(folderpath, level=1): parent_path = os.path.realpath(folderpath) while(level > 0): parent_path = os.path.dirname(parent_path) level -= 1 return parent_path VERSION = "1.1.0" WEATHER_URL = 'http://m.weather.com.cn/data/%s.html' WEATHER_URL1 = 'http://www.weather.com.cn/data/sk/%s.html' WEATHER_URL2 = 'http://www.weather.com.cn/data/cityinfo/%s.html' PM25_URL = 'http://pm25.in/api/querys/pm2_5.json?city=' TOKEN = '&token=wYpDvD83HMDy553JqFNx' PROJECT_ROOT_DIRECTORY = os.path.abspath( os.path.dirname(os.path.dirname(os.path.realpath(sys.argv[0])))) DATA_PATH = os.path.join(PROJECT_ROOT_DIRECTORY, "data") ICON_PATH = os.path.join(PROJECT_ROOT_DIRECTORY, "icons") indicator-china-weather-1.1.0/icons/d21.gif000644 001750 001750 00000005221 12277056351 020714 0ustar00saucysaucy000000 000000 GIF89a00Ҁ׼݂ɰǸδʶ߈¿ѻ䂍ɱȶīٸѨմ9qѱ3p6q:uyB}GLL|VJscdffhkqowwvuy{Z~ゲⁱ܅lԋ'[2t3p-d4r3p4q2k7t6s6s6q8u5n2i9v8s;x:v9v9t8t:u;x;v=z{=z=xwҽ@} *;w"|rCnHj|X>Š {w#gG}{vB$B$'ҍ?hM~h"$O"HިF`#4r"xFꭷB, 7C k,_(ɇ ȇ#JRI%4j^ t $X⇓y 8$\R%TDg AH 7A 2ddNb%\bH &׀@pe\B(X 5ǙJX JhF$S>P>| A`3ppfɣ<ʨ'd y8qr-AzVhz&0B 6!zKTIdb@C| `B+A-\`y@Rk&ZD%$h{' + -'0l'.G RBpdz B .`y3(  hCvPl0(,A /h rѤp3jB1BW`76 )|=YCf*1 ºL } 6cߥRp .@ 0/;3V096Λ)2ܐ'İ%\ծÞx1JTo}*a s@mr܏n7<?ݞէ"x/'P^\: d@^+^AVL p%<2 VO)( Vȏ`+PZp)@Yȡ8Q;O ȰM@YZ"W|8'bM`( 1&hE Md8D Y gdGZ" Q,hZHAp,NaSOB+`A Ubhc+p 'b*)(\XN 8,@|" e.f\В$>AcR4y *ri/ɋ[8o1 ^ @$nqoR3/zs H.O] ?Mutg0VD}|B@:@]X4VZ0i0|A (Q'"50S]t?aJbæ@1V5 U5F,> >VaT+XAV[kVֱRU Ѕ2uSUWbh+XAعv)b! e,am [86 Ȃ0*Y:#B2B{ e~jWѪ^؇(de3 f(- +l[Hry g4`&z[i,B3[h G6 yDE<[" $/p7ԀF~A rC4xՠNR;4Am,7a Sc^bFq9mfj o8Ʊ5ËqІoLeot!x6$k# Tr.gC`=`lXCnpsl=wrs6/tEZF6"-}tN{Ӡn@>эRc gMZ˺cG>1T;indicator-china-weather-1.1.0/icons/d19.gif000644 001750 001750 00000005314 12277056351 020726 0ustar00saucysaucy000000 000000 GIF89a00ځҶʹɻݍ°վм؈Ʋȶʹ׀С͓ҬĞԅʽӴư޺6q8s7n:uyA~?z>z@{4dA|A}B};p4bC~CDC{HE~GK?nDvBr=jOJRL~V^Q]`b\Jsbhehbkimkjpmnrqpuvqus{zwvuyw{zy~}|{݀}߀~典܂߆䅵⋺4n7helkhlpqtsxz~߁ჶサ⦻̰!,00 N9|ðÇ#:3O5 SG9Iɓ$ >r8ӣ͛8sɧ&=d3tѣH*]=w3O=Pʵׯ`12>gY~ *$NkzW$~)^m@B獚z@|B͛8 "CJ ZͺkDJ:B~4o% (!CRH)J$D #7 z "CHW4yɟOwC  lA|'$D(B(I!Dyp'` $KL"P"2FH3JH,Ѓ  pЁ %0@ 9@(%T%XbYIzG%Ph"@ 0 #`qtV:& "tX=0 сBI$d,FtNd&w~+֟iF h @ ` lQɧ~ɯPIAEp) B6 bሯ&TlRPÈFd1p ){`P x "(yCxy $fBo 7p"? , Y BF d 7 p2p)@G=>ȮðC p܂7 3Ԡ"A}J) A8@LO*PӬU 3,ק! epaHF;0< 2/aBp4BAЋXF4,ah#80(z@ƁGLex(.A2  F6> QpolckXF3(Cd?(3 k ~3l2X.35l jP c`61jk6 7;^3a4n> i0Z@i#p3h3hГ;R13 dƢMMZ֥t<n|cІ<y {Nf+[5{6n{kx;indicator-china-weather-1.1.0/icons/n16.gif000644 001750 001750 00000005412 12277056351 020734 0ustar00saucysaucy000000 000000 GIF89a008Z7Y~6X}2Pڳ܄㔞˷̀ͭƫį܁սս〉Ȣ˰Ĵ2T6S{:W~Ѻͺ/P0Q1R8\6X3T1O9[4U3R3Q<^#@e9Z%Be+Kq)Fi-Ms.Lr&?^/Lp4Tz1Os8Z3Pt9Y9Y:Z6Tx9Vz;Y}]"De;Y"Aa!?^%Fi7R"@_ =Z'Ik&Ef%Dc*Km+Lo,Mp-Or-Nq*Ij.Ps.Or*Ih2Uz-Mn0Qt5[1Sv%?Y4X|2Tw1Ru3Ux2Sv7[2St1Rr5Wz/Ml8\5Vy6Wz6Xz5Vw9Z}:[~8Yz>Yu*@իXZcUNU9vCٳhӪ]V׫SugnݻwG =F Lꮩ+o!E1˘ӇRDJ9.C;TWCsQIgNR}n]:lG| bpGF\8>UԩSsԩsjP;t!C t|"JSU(q u 1pB 1l>t OGxl<"hb$賃r|rA #dlj"BʐH&D*|F ;D8#x ?p8󰒊+C9,+n&,d"4VA /@"眬+GH<, <!`ƍYC>`"0qʬK,R2IF-0%dpbT@.S+ă+ȭQ*ఞ 6 x@&3"~RK-HR =~ ;0'8@ `*HxA,TG.B .B!GP.g -& #)H 2!J(AȠ>s9.+/`҂mt x:ԼԌƧ%`e J | `|'ߴdK"Ā} + d,B)8 ILb.lr Ath [4?N,1 o.f: S _ S/,d="I*0 ]oJ: Z:6Ur ? E1 D*qd"@ "@ 6qC48p 0ԑy„81z _qOX 0X8b6|!Jl$2qEZ,'\P`L/foH 8+VbKx"_#%(B&D8,Qo87O@TGZ PB!Q (4$11LbD1AB=!WB8 AVZ>bz01vb&p#A%z~؅,p ]@8A&paMB0Nd (0vdg/AC3aC>40J/ g§΀jQ {`D DP!,=D":CPa&MlLO &B74vYf8J.iUG>qC!Yf$ⱎ p @8D8#Qf4;{Kƈ2gψ0*Bx~&E`~x- Y<Q1) ?@~0#.AFXDx^(<"[}D"E`CD=|V䥆0~|"ˈbFj0#-E0D֑tMȂ"`BTh"`. 0 .F6BrG-!fLdCDqipr gH9d&3H#0h& E4bx9( OT\4f!fAka5|[%4 %$AҖ.s5mB #}_ "xQi@"ЯkMЖ~qd VQo3a2:ְ§ Lƀ kٜε#1fZ~-dleF2 hh/{ГD*!ajk# m;|v;indicator-china-weather-1.1.0/src/forecastui.py000644 001750 001750 00000016556 12277056351 022046 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # Authors: Zhang Zhao vaguedream@hotmail.com # Kobe Lee kobe24_lixiang@126.com # wyan yiwuhehe@163.com # binghe kylinhebing@163.com # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os, sys import gtk import pycwapi import time from base import DATA_PATH, ICON_PATH class ExtendedForecast(): def __init__(self, forecast_data): self.builder = gtk.Builder() self.builder.add_from_file(os.path.join(DATA_PATH, 'ui/ExtendedForecast.ui')) self.img_ct = self.builder.get_object("img_ct") self.img_uv = self.builder.get_object("img_uv") self.img_xc = self.builder.get_object("img_xc") self.img_tr = self.builder.get_object("img_tr") self.img_cl = self.builder.get_object("img_cl") self.img_ls = self.builder.get_object("img_ls") self.img_ag = self.builder.get_object("img_ag") self.img_ct.set_from_file(os.path.join(ICON_PATH, 'ct1.gif')) self.img_uv.set_from_file(os.path.join(ICON_PATH, 'uv1.gif')) self.img_xc.set_from_file(os.path.join(ICON_PATH, 'xc1.gif')) self.img_tr.set_from_file(os.path.join(ICON_PATH, 'tr1.gif')) self.img_cl.set_from_file(os.path.join(ICON_PATH, 'cl1.gif')) self.img_ls.set_from_file(os.path.join(ICON_PATH, 'ls1.gif')) self.img_ag.set_from_file(os.path.join(ICON_PATH, 'ag.jpg')) self.window = self.builder.get_object("window") self.builder.connect_signals(self) self.window.show() self.forecast_data = forecast_data # added by kobe 20140212 self.window.set_title(self.forecast_data['city'] + " - 六天天气预报") self.builder.get_object("img1").set_from_file(self.get_weather_icon('img1')) self.builder.get_object("img2").set_from_file(self.get_weather_icon('img2')) self.builder.get_object("img3").set_from_file(self.get_weather_icon('img3')) self.builder.get_object("img4").set_from_file(self.get_weather_icon('img4')) self.builder.get_object("img5").set_from_file(self.get_weather_icon('img5')) self.builder.get_object("img6").set_from_file(self.get_weather_icon('img6')) self.builder.get_object("img7").set_from_file(self.get_weather_icon('img7')) self.builder.get_object("img8").set_from_file(self.get_weather_icon('img8')) self.builder.get_object("img9").set_from_file(self.get_weather_icon('img9')) self.builder.get_object("img10").set_from_file(self.get_weather_icon('img10')) self.builder.get_object("img11").set_from_file(self.get_weather_icon('img11')) self.builder.get_object("img12").set_from_file(self.get_weather_icon('img12')) self.builder.get_object("weather1").set_text(self.forecast_data['weather1']) self.builder.get_object("weather2").set_text(self.forecast_data['weather2']) self.builder.get_object("weather3").set_text(self.forecast_data['weather3']) self.builder.get_object("weather4").set_text(self.forecast_data['weather4']) self.builder.get_object("weather5").set_text(self.forecast_data['weather5']) self.builder.get_object("weather6").set_text(self.forecast_data['weather6']) self.builder.get_object("temp1").set_text(self.forecast_data['temp1']) self.builder.get_object("temp2").set_text(self.forecast_data['temp2']) self.builder.get_object("temp3").set_text(self.forecast_data['temp3']) self.builder.get_object("temp4").set_text(self.forecast_data['temp4']) self.builder.get_object("temp5").set_text(self.forecast_data['temp5']) self.builder.get_object("temp6").set_text(self.forecast_data['temp6']) self.builder.get_object("wind1").set_text(self.forecast_data['wind1']) self.builder.get_object("wind2").set_text(self.forecast_data['wind2']) self.builder.get_object("wind3").set_text(self.forecast_data['wind3']) self.builder.get_object("wind4").set_text(self.forecast_data['wind4']) self.builder.get_object("wind5").set_text(self.forecast_data['wind5']) self.builder.get_object("wind6").set_text(self.forecast_data['wind6']) self.time = time.strftime('%w', time.localtime(time.time())) #self.time = time.strftime('%Y-%m-%d', time.localtime(time.time())) labelofweek = ["week1", "week2", "week3", "week4", "week5", "week6"] dayofweek = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] for i in range(0,6): weektime = int(self.time) + i if weektime > 7: weektime -= 7 if i == 0: self.builder.get_object(labelofweek[i]).set_text("今天 " + dayofweek[int(self.time)-1]) else: self.builder.get_object(labelofweek[i]).set_text(dayofweek[weektime-1]) self.img_ct.set_tooltip_text(u'24小时穿衣指数: %s\n%s\n48小时穿衣指数:%s\n%s' % (forecast_data['index'], forecast_data['index_d'], forecast_data['index48'], forecast_data['index48_d'])) self.img_uv.set_tooltip_text(u'紫外线指数: %s' % (forecast_data['index_uv'])) self.img_xc.set_tooltip_text(u'洗车指数: %s' % (forecast_data['index_xc'])) self.img_tr.set_tooltip_text(u'旅游指数: %s' % (forecast_data['index_tr'])) self.img_cl.set_tooltip_text(u'晨练指数: %s' % (forecast_data['index_cl'])) self.img_ls.set_tooltip_text(u'晾晒指数: %s' % (forecast_data['index_ls'])) self.img_ag.set_tooltip_text(u'过敏气象指数: %s' % (forecast_data['index_ag'])) def get_weather_icon(self, img): fchh = int(self.forecast_data['fchh']) if 6 <= fchh < 18: icons_day = ('img1', 'img3', 'img5', 'img7', 'img9', 'img11') icons_night = ('img2', 'img4', 'img6', 'img8', 'img10', 'img12') else: icons_day = ('img2', 'img4', 'img6', 'img8', 'img10', 'img12') icons_night = ('img1', 'img3', 'img5', 'img7', 'img9', 'img11') if img in icons_day: if self.forecast_data[img] == '99': return os.path.join(ICON_PATH, 'd') + self.forecast_data[icons_night[icons_day.index(img)]] + '.gif' else: return os.path.join(ICON_PATH, 'd') + self.forecast_data[img] + '.gif' elif img in icons_night: if self.forecast_data[img] == '99': return os.path.join(ICON_PATH, 'n') + self.forecast_data[icons_day[icons_night.index(img)]] + '.gif' else: return os.path.join(ICON_PATH, 'n') + self.forecast_data[img] + '.gif' if __name__ == "__main__": forecast_data = pycwapi.get_weather_from_nmc(sys.argv[1], 1) forecastpage = ExtendedForecast(forecast_data) forecastpage.window.show() gtk.main() indicator-china-weather-1.1.0/icons/d22.gif000644 001750 001750 00000005345 12277056351 020724 0ustar00saucysaucy000000 000000 GIF89a00˰ƺʱՂŨ܅Ūµ}ŷԼкΰԿ텑萛ܩǴ6q:u;v:s>y>xAzC{9fHJ~dIrhfejjhqxwswy{}⁳]儳cԀԙҭ&Z*`3t3q/j,c4r3p4q3o8v6s5r5q0f7t6s8u9v8s7s7q5m3i9v9t;w:u9ujQKURWCn^Z_TV^bae\e_[hmckjnmpolT|ronqpurtvutsvuyws{zy}|y}~䁳}چ䅶⋺앿p7uacpjqtux}|w~{܁ჶサ⇸!,00}Qf͙5*\Ȱ8ma&Φ/aL CIR5ϰQAqްnʵׯ`֫uQ>ؙN@=UO2dA3Ou qӧ>ǎAА' x!C]vmmA}m{m;M/3V|nj:ĕS7oA؇#=w H"=Jxc 7&Dx/C#䐢*)B!B8rdB{P@7A )0 e_6"A#8QFF8a \X &@B`ȑH8҈DI%EFRdHVR0"3HxClp#$D!8ˆNF"ɚlH{QFr졇)3H@a :j `p{Hrɚ,*%Ea x"%^!|b| ;L%8ZdG\2餙dRED ,^{;sa&@ j@ C$jm&lR&h+Gc *P""4P/d!#&t"/Ex xc$~XPA.|*/vURpe:Zb 0.T  B vI(^<[7T#@`+Mr%Ba)Gi.Ou*Ik/Qv,Jm3V|2Sy/Mp&?Z7Z6X~5W|6X}7Y~3Qs5Sv1Lk?a0IdFh=Zz6Nh=WtLdI_x[ph{ġ/M0N2P3Q/J4R0K5S6T7U3N?a@b=^:X Ab!Bc;Y#De&Gi#Ba#@^(Ij*Km,Mp-Or-Nq(Fe0Sx.Or-Mn2Uy0Qt/Pr.Op4X}1Sv1Ru3Ux2Sv7[5W{4Vy3Tv8[7Y|6Wz9\7X{5Uv9[~/Kh9Z}?Yt`m3! \P9pCC7|M+jCrNyҬ uag `0"P '@x ,G,`Bt( 8CY둸B {\8 0,z.y8> '^ p6L ۠8 Boͷ9"̓Df:]l0 +oв 1C]MDBD:"vE] : 6@T '\N-xdA(< t6061S0u'AOG>y^\8ۼ;xB %p&di 4~0 Y`E B` a-璽v &ۀrŸ垫 p7v%-p lH.;@ l i`o4 T,\ @(( ?C F8B]P5C$@+lA Ѐ7.*_>PqP` X "b7H h-l`$0@8 x!`'P0@y a]QF kdB"`>b0LK`B ƁU N]DرAaE/vq> 8}@  qYAC`F.XG8, fHEvPM`pc&a@vЂ<`E% `ncxb4FA _XxDDk WjPJC^1LX⨁+,W0!bb(B.SGB}@2`Q|QyȄ8,1|Jȃ_ #t Lc(P2ԉ<@NH-Ql5%tBB Jp,Q # P/ B(Cp2 B<_ a8AD!LAȈk!; eЫ_7[gL+a>AH]\Tԇ>>> H3&# /d$ `5_h k2q\&!'LbQ v0A q˄6|f4# h6xXf+!c`!hDCE >A" `A:@0 aD&V!@H3F{=z;tA~>y?|?z=vwB}B~C~DE;n5bG@tKJIHGKDxPKTOXU\`dcikinptrsrwyvu}yxw|{zzy|}߀~ヵނ߅ዺg{xՋ5t8w@yrtvux{}{}yՁჶサⅸ債ାͧǾ!,00g=*\Ȱ>zSF3QO CIdHq[#?0cʜIM"(P> JQyd( !+JJիSa)Ĉi:CŠKٳc 2"GʝKݻstqQ#M" LÈ ;jD Ɨ"KL˓!usK:Q3N']TIΝTwBiRϸ;O%K>0yITOykiQd:'ND=t@'Q_£=RJ) 8h"b4"\8|PB¡ bʈ#R+' (970p L@B8|2+&(RʒF*x@p3lAbp+J"bʙh +k>LL+L0CMs"栫a(|< *# P$E9r$G%j**K(~1N6+\9C  C K𡎡J`",O 'pi 0ld R *"ɴR2(`y.:BH1Bp -ۛ1v ĄJH |g&,`*萁29BM8 bK-a<@A@(n5`AN /L#D PA60qCBg - *0@&saJbF2F)DJ8%q4c#a4 td\A*p R,nQ U F0X Z(" kO`A p03Ao,d`Uǰc1E, 2 pO1z(2 3D 5m4Nkh,CPaFP;x[԰hИ-jq[h(41_gWyA~?z>z@{A|6gB};pC~C4bD6eD|HE~8eGKDx?n=jOLJ~DuRWVMCn^UR][U`dcba[hfe_hjckiRznmkpmpuswqvutsv|ywY{zy}|{〳~}ނ側ㅸ炴Ⴒ߆䅵⋺pXoihipnptuxzw}s~߃サ⦻!,00 lFM4pԴAðÇ#:$ͨ- <4ӈIɓ$w %8gذ8ӣ͛8s f7tdt3ѣH*] 7l޸35N7tPʵׯ`1V8gY6rޱzuʔ÷kzr(^mb;fp2th3ɣd>@Yͺ>@Qzb\ -c'=t?xanrbC HɟO?P{" ܠ B \0B|"F!Q  03! Aᄈ(c bȌ.xy"Ѐ,\@(?!Ȍ1*Ȕ(b^Z&f0 3P @)\,B%C $uNGpA C,Ђ "Y$d X` tF#4RBbDbwH0$~'PBp)%7$TP &L@2k k-if,`lFf *pp 'c<+%K އb8ñ0n )0RB1`^0 5 "D*1 RByP*NqT"TE.>a D  6l}#T8 OT'F %l.hcNW*\#\D Wؐct "hb *P.bv#XԢcEq Vq d%DQX 0) H%&c!NP,Zd|aȅ'KyTƂ7t` r , U.hq Z"H ] s2)L\h$IOh-rD-n\bG@ab@Q g&#)[#9׹]Bp.t0a_G[0ը$qt@>t Z-xAӚ Qh/b0-L1 &B0 F`N7a|!LhBU&0VX"0/0s5(8 Xl N0n:W* aP(0!%:ܡZ  0z_(v0bִE0 d pf!Y 2h;uVm1[droZ)H̘3;c<&!eLڕq S QhA/ ^2cU` iX2_X82P`5E2Lce/ e`ó'B/ac<#b?Hvx @}Vp3as@2QΠ30ʏ~ rHbțALf yQ2 iL$X1 i4A]s<1kF66႕n5af0O#4! XHB `;hV8"f4YhGҘ%@U#Р4 mh@ҰFah( 5jkX#u6+d 4jlDѸ<+\n{Ɔ5o`cؐ<ҭy oyl=эmlCYNF5;indicator-china-weather-1.1.0/icons/n20.gif000644 001750 001750 00000005734 12277056351 020736 0ustar00saucysaucy000000 000000 GIF89a008Z2P0R1T6Y&Af'@c-Jp3S}4Ry;X1S/P0Q1R7Y2S0N3T1P9[4U5V3R;]7X#@c :[%Ch%Bd'Ei,Ls+Kq'Df/Mr.Lp-Jm4T{5U|2Ot7W~9Y7W}9Y9Y7U{:Z9W}Wq2R4U/M3S0N6X0M1O5U6V2O3Q=a7W8X4R5S:Z=_;[:X!?`'Eg(Fi*Jm.Pu*Hj2Sy 6N5X~4V{2Rv5W|7Z6X}7Y~8Z7UxEe0O/M1P0N2P=^6T2M:Y7U4O=\ Aa#Ef >]6Q%Fg'Hj(Ij$B`+Nq'Fe,Mp+Ln-Or-Nq.Qs.Or2Uz-Mn0Ru.Op5Y}7[4Ux5Wz-Jg8\5Vy*E`6Wz8Z}5Vv8Y|4Sr2Nk7Us<[z0M1M2O3O4Q6R0I>]9V?^;XZ(Kl%Eb(Ih5[0Sr2Uv/Po7[}6Yz8\}9[{;Wp1K[)Ki1Y|*Lj6]~*BV0Ka;Zu5Od"јC>>~ pA "I還!= 0_ʨ1q!˟ȐC$ 0I 3Ȍ6(C ɃE(a4;+,s3 7d6Ha0J!0bÍ8@D@Ā J8` Ì5Q8)`)L:QVwCpZ h#C]P: 'HHDrq\Tv ,qҪ 1~}: 2A bP{аG܎u/C PpBEAkz~1 "x1Fb'?YDO9QX r~'? CT0r.dxo0̂*L! ~D P)BF)@ U@*Q`?=b{/Q]( ~ãQ=A@( A X+"*`!QM" PA.~ VAX`GC[sm+ {6 Y:] !n&MQ@pN `~.! ^ =p\'Z칈.` !`\a. `P_ 07 \ pA)n{ #7ļ/. *!yIOW}·+ws6B X>+og.z s\* E}P>! nF@ 28!sOl\q0q@>;? d;indicator-china-weather-1.1.0/icons/n18.gif000644 001750 001750 00000003502 12277056351 020734 0ustar00saucysaucy000000 000000 GIF89a008Z0N.P1U1S-M3V2R%Af&Bg)Ej3Px8U}9V~2T.O4V0Q/N/M7Y2S0O8Z1P4U5V;] >b<^7X =_$Bf#@b'Ek$Ac%Bd#=^(Fj&Ce+Kq+Im/Ov'Ab/Ou-Ko0Pv/Ms1Qw2Rx/Mq3Sz3Sy0Nr.Km3Qw8Y5U{4Rx7W~8X7W}4Rv9Y7Uy9W{Ig/O0P1Q2R/M3S0M7Y1O3Q6V2O3Q7W;]9Y5R;[ >`!?a8U =]9V"?_ ;Y)Kp&Df+Mr'Eg%Bb&Cc-Ot)Gi*Hj(Ee3V}1Sx2Ty-Km+Hh 6N3U{6Y7Z4V{/Mo-Jj5W|0Np7Z6X}7Y~/Ll2Pr9[6Tv6LdTq0O/M2Q0N4S5T2P6U4R;\5S6T2M:Y1L>_9X7U3N;Z?`@a<[9W=\!Bc>]#Dg;Y"Cd ?^$Eh#De!@_;m4l83O1u˞GSDxZB {A;ʛ;!|DFd!MiŮ<|sL# HD4 H  40 "-HBpz@N04" ZJPGG5A5A`?,IBA ;indicator-china-weather-1.1.0/icons/n53.gif000644 001750 001750 00000003377 12277056351 020745 0ustar00saucysaucy000000 000000 GIF89a00߰'8Z2Sy3Q5U{7Z1Ru8Z}6X}7Y~<\:Z)Gi2R3U =[0M!>^1M0N2N/Ps&Df8X9Y5R6T7U(Fh!?a,Jl+Lo"@b.Or1N6W|2P9Y =]@[v#BaHcw0GZ9[7W$Cb6X~1Qw/M8Y|~P,Hf,Mp3(IlroI4Ux54R2Sv5UK`i7W}9ͦ.0NJ.M7[0Qt-Nq6V;["?_2P3Tv42OΧ.4W{=_#Be"A`3Ql?`]65Vw|P30Mfo]52Pv0K8YV`Rcl\{yN8Tn4OiCAU`5[{D{F%Fg|xM$EfuwVbk[qtV!,00oRU*\ȰC1)ƓC&hȱǏ 5^d5" ˗0cd LE"r> 5ϟ@ JgN `MPJJ*"(TD7ŠKٳa)5(1D2myK,8Ȱ L_xhq-Hˑ'Yf>hAhϥS.z֥Тlr޽7ݾs@ƓG8KyկK.}ËOw% WˏQ'<Ͽ *'D F(a0!RxDKlAcdA(v#EH B#@5xc)0E@Yd $9(.D9(v6+%QNa81-c FNJD$iZ'.#"gY8Şi&2pɈ&(4Iâ6٣800gr0馜2HPi'#)!9Q x ˈx뮺f$&jȈb|b26[mE{ňA 5ıB찃B(D܆nD+ADVo!AJw)Qo ;lp/XqGp\ \3C,-*0<Ϝ CD F$L7IpM4Pgm4:@@b`hlEl`(Н6 QB gnjx. t8k8px%/!  xꬷޅg].0 /Qzk&Xxשׂ/P@s$P ԯg= B`o諠*&a  ;@?LQVXa4 G Z|,DFZ|/{ G8pa";indicator-china-weather-1.1.0/icons/d24.gif000644 001750 001750 00000005433 12277056351 020724 0ustar00saucysaucy000000 000000 GIF89a008uȁܽǴ܀źعʲ㌖ȗâշ}ѱǭY㍡6q8t9t:uy?zA~@|A|;pB}B~5eDGF6dF}IBw:hKMEz>n@pI~CtLQ?kUPK}NCnT]\SVHrb`eaeb\ZeMugakjcimkrpotpW~rutxv{zyxwy}xր}|ۂ側ㄷ]`₲߆n3t4s7x6tGxtsぶ⁴ჶサ⃶Ⴔߗꦹ!,00 5s(\ȰÇ tӆTaJl3 CI2=)͛x޴I͛8meJҝs 9H*]ʴ?oAz.N;`!ׯ`Ê?*_9{GϏAuجٻM<#G>}Rb:kPÎ1 Ũ ^:O׫ćO!@lƑa ] ֬)_sB -'OJ-j́hPࠃC3Oľ={#!Jd"@khN! lB ,_{4.D agwhAN0">Ȋ,"<򈄎P /t`P jB&С4n" ȞjA (< (I&J(AƖfbP*ہ 'x T[Ƈ!) 2\02 q(T='D@C +# 1{ ,0=tXmu4ҍ<& } d۲ܴmzFuН*'!y#B c %XKv,:x"㐫zБ0B r24 2뮧J*' %LP [ l p#Nܲ(/J,\BI#0"08Ck"@D#6A }{g1Itw54lh82 3AX Bs p+7'̂ L!qxCT0+DŽYk1nb/& l XEp&p \1N). T,\ф&8ᏼcq^8+0 D" Xd#q\ hE#H(, ًUB /~]@'@KZRP`.P q\e/`bń.z ]DaXE1H좙f(oF!/i q䃛$(z(((( G(O%H(AoPgO$`x45`(I9}2={t" Ɛi> Sc0:a@ @FPjT)(a @'v02AEP["jWTc J'! Vc 8F-:Q FcȘB.> $ȅ:(\6H l.:0zcPc0z1d`=Fe bv-4gPȅ2@+@Cȭ,o QVg( 3 r !XHF4u8ɨK7 XE7dѐ/}FXaH4 h F#6%[Z TƁ Sm3q ^ܳ3a#͘g5@Nf`#? h̘4<ϔ^ɗ(NjkkpH(Sʌk| Ca/טF1 ݠ45\؂4 gZ\L-C+ra k,E! 2W$h!vt %ha ilimla/Pw"ռ71kkC]хy|Cx4awh –QwT¬qp\KڨюjTcrN՝ /hA!eG6~!yF=Qpx&N[7mx G@;indicator-china-weather-1.1.0/icons/n21.gif000644 001750 001750 00000005327 12277056351 020735 0ustar00saucysaucy000000 000000 GIF89a008Z8Z6X}2PӽɽᄋȸϺ±ȶیùγȾѺꂌŏƳɵ6S{őյ/P1R6X3T4U :Z%Be,Lr/Ou.Lr-Ko1Qw.Lp3Sy3Qw8Y5U{7W}6Tz9Y9Y5Ru:Z7Uy.Fd;Y^!?`*Lq*Kq7S%Bb(Fi'Ef*Ik1Tz0Rw1Sx-Km%>Y3Uz4V{-Jj7Z5W|1Or7Y~/Lk)B]9[1Jf^ @_-Pp.Qq/Rr2Vx/Po7[}9\|3Oܲ K"bdG9b$(2Xi` *" m" a^ ƭ^t p( ?@@A$2o"K,1CA NZ 8;lF fR.2!R1C |ri=Pp.10B 9A63QK(S#,-' mPjpp)t03~. #3y !8l`p~{褣{:/<ĸ:x)40(tjh , *ц*$H/;bEB>!8 a1 P%( 31B')&,.x!J$C+@2xC E aF)@A €0!`t"R0r I]p~& C$@#:aH1' #1N'l2!8 bNhIO`hʁ`ăE@*M@Bp сN# ,MRc ?](c̐2 4>G7 L fDAF$C`3ԢN" 0*3~؂$PԲuxZڅ&b(()5 Ѐ: hBG(zVuu^k)8. iH#{b` K(6LD"*;l3,!jX3.K@ x%.K4+WVp;VVn5.A /,"D.jtӝ%^)B %kЄ|+ߔ#};_:" 6_җl ^TKІ5 # Є/F-Lsb>FT%N6PFprQrXF ZX\?Y M2'e.k4Ї8@1/\]Ns98 5P1p{lB<-DCP@D(AɄ^haF"-h-\ĦOP#]3gc-Jr-In7Tz/P0Q1R/N/M2S8Z9[:\5V3R6U8Y9Z"?a :[-Ms+Im,Jn0Pv/Ms1Qw,Ik2Pv1Os8Y7W5U{4Rx3Qu7W}9Y9Y8V|6Tx:Z;Y.M0Q1Q2R/M3S0N4U0M5U1N2P6V3Q7W8X4R>a4Q9Y5S:Z=_8V;[<\!?a#Be"@b =]!>^#Ac"?_%Ce9U*Lq&Df$Aa,Ns(Fh)Gi+Ik)Ff,Jl2Sy+Hh/Mp6X~7Z6X}7Y~6W|4Ru9[Nj0N0K6T:Y>_7U:X>]#Eh;Y5P#De$Ef"A` =[%Fg#Ba(Il'Hj$Cb%Dc)Jk+Lo 9R,Mp+Lm-Nq,Mn.Or2Uz/Ps+Ji0Qt.Op1Sv1Ru0Qr4W{2Sv7[4Wy4Ux3Tv6X{1Po9\8Z}5Vw9[~8Y|8Z{?`0M/K2O1M3P2N5Q5R?^@_=Z#Dc&Gf(Jj'Hg$C`*Ll+Nn.Qq5[%>V7[}8\~1K2L9U)Lj8N`5\{5IWCU_L]eXcbalfmxqox{ہп|Ȏڡހ߃ށ߅ޅ΀ۉԏؚނ܂߈އ߉ތ܂ۃ!,00|E P8*\0!ǮOCC CV:DEQ<|S8|H1jϟ@V?uHT |HAG)QXj*5JÇ R6n@ݻCT^tKEjWrǒ ^~Е os2ŘHϠC|* D$FpDr΍Dw] k"{GSO8E SHv \аbΝK\`ө_:6=ڴy" ʕ0iO>s1 | 6|@JH! LA99:ꘓ0;,, 1Č4ΘG ;>PΈ3 56GD)eqD" 4P;c9KX0ĔlepƙqXpA=M:^3 ; K$ʩI0DB4AOa ͑Mx*tDX͵\-zm9|?9 snx[lG\l;cϘw砇9\n:}팉̘#1~N:]R"|@cN9CSN8G pB tw|]B~BLL_4]O B 0 ueN8A07ABd` 1Ca'!@ p*pN{=fnC 0Ї(a A∇(!-hG;VQh<jH c D21hL!FF| x{G?W`H XC$jLcOG@R =qp4#8am̃@DHE."}C"NyJG8bd+a'uf#~۠G< !< ,!*,p#M@YVӕ0A#" bc̠= opܠG'1e8c;ݠ,VPMD`&ЈF`51xS8k#F7Pkx4O2@JT`* J50 rr7 N g^PS,!XA&̀>D&`I/Ȑ@OE, 3'},I"+-dXG P`Nx˒H N+[Y_FAf+Y/DͰYBřPOln $ 3`2p/f+@B#NÖY},#;indicator-china-weather-1.1.0/icons/n19.gif000644 001750 001750 00000005406 12277056351 020742 0ustar00saucysaucy000000 000000 GIF89a008Z2Pڇڱɯܽ˺ᇓ}̭Ƿ̼ϾԷ职Ĥҳ2T0Lq;Xδɣ.O1R/M6Y:^1O9[4U:\5V6U;\%Be+Kq,Lr)Fj1Qw.Lp*Ee2Pv4Tz8Y2Pt7W~8X7W}5Sy:Z9Y:Z7Uy;Y6Sul|}Ũ0P3U1Q2R/M3S0N5U0M1O5U8Z6V7W3P8X4R9Y=]3O#Be!?`!>^9W*Lq7S'Eg%Bb-Ot%A_.Pu1Tz-Ln2Ty-Km2Sx,Jj&?[3Uz4V{0Nq5W|6X}7Y~2Qs8Z/Lk:\6Uw?a/Hd5LeNn>WrG]vSh\pǸ/M0N2P3Q/J4R0K5S>a6T7U;Z:X9V Aa;Y#Df"Ab'Il&Fh*Km)Ik0V{,Mp+Ln'Ec-Or-Nq.Ps0Sw.Or2Vz0Qt.Op4X|1Ru2Sv3Tw7[7[4Ux2St6X{5Vy6Wz9Z}7Xy:[~;Tm0L3O6R<[ EKV7‚wk@/}␕-Z4ѥ/ &NafSogZKE8h\R^-JBb.͂ BN%\s•k=׻-Xxw}ƌV#`+y |DaJx<]4`"P <a2/~ 2za#-h; 1 # B?1F#/ȕTɋ!bg† #6 p$J1\ H.r-!8-D$ N jÒ 48/<.70r3PEi"d  tA020(P( !YBICCoAȠ%/X'y"rJ83#md8NOCq2M ,A Ax-jp98`J/ #L~:N )HoP ; S1HI 0`DDpo =| /[PSe /P@bp(`$@P$ nP A ( v$hHqBB KB+1&'ƒ8t[| $ N$aDNda$؉cDƈx) "`aT!C(Jq A!pc#Ee(P1By )ʨB*R e01F' Ґ4! I1PDڸ&K+ԭ06FTah.vw60!b p!컍h`@QLL}LDc٠| .dš)q'\8F"@#(a%Cg'Dg,Lr,Kq)Fi.Lr1Qw2Rx0Ns5U~3Sy/Lp4T{2Pv7X5U|8Y2Pt7W~7W}:Z9Y9Y7U{:Z7Ty;Y;Y}1Q2R/M3S4U0M1O5U6V2O3Q7W8X4R4Q9Y5S7U=_6S;Z!=]#Ab&Fi$Bd)Jp%Ce.Ou0Rw-Kn,Jj3Uz4V{6X~5W|7Z6X}7Y~8Z5Sv>\|EdUq/M1O2P3Q4R<]0K6T;Z?`=\ Aa:X>]"Ce#Ef$Ef$Ba+Mp*Km'Fe&Dc)Ij,Mp+Ln-Or-Nq/Qu.Or.Pr-No0Qt.Op2Tw1Ru5Y}3Ux2Sv7[4Vy8\6X{6Wz5Wx8Z}5Vv8Y|:[~:[|<]1N2O=\>]9V?^¬GI6@BDDFؼD˲BE12576:9=ݺ:ִ;ǩ9>.۱-1߶024ӫ09Ġ3ެ$(֩(+Φ/!,00ţ*\Wf2Hb&~HP>v&S$g~xƗvv鐸2ShԴR'g`Aѣhޥ3wLѣG5M8dP2B4Šٹw ;3DыVCvZ]hvG4DީKwlm4Dv"G =0cfHgЊC #DQsJ|QݷmAH2@ o G(Nz#W!Hn%HonI[BY@o 3k}v ׆-gUpD QăKREaK Xɀ#48#5lDrq-tBacII؂A6.AL88c'7trA:vEXĖn$!xAk`Љ5Xs6lx ]&ѥr`|:r,r"rb~x747DD-N||'):>$|8ވ#M2s3x4O)8C <ᄰFs,Lڌ78S-V[8z 01; B,D\ 9qt0GD?1xN: /wL6,#6l 6݌5t1o'L-8 w@|1` ;K8./ ;Q qaR-aӱ\{1H#;XH 0@!ET Rxڨ8\tX+,uPTPTd{|`Q| 7h聻|Ѐ(| 8RGzPA{|L3pAR <7Ɉp{~2,8;W @8G ,"̠ɴީ:a cQh@DpWpU#) n|x3j0`}xAnC8 # E6ȃȌAv3 >!X Ȯt\X1:S`ay)\X9<\!SȢ)?R|XE3qsP#g!?)@PsRH#@ TӲ jPoA]kcpEY}4$AisP . p$a I؀f8 FB_@?l0A ʀF3#9 V {42` rC(O9 eT 8A*nmᄌЅۦ$ v$ YXC#X0@َAW/u%pnG؀6 0AAqn `p ƀ d\Cg XAo9!u {>.t& 2 Bw l I 8hX `;]Wv1/;wȰ;indicator-china-weather-1.1.0/icons/d25.gif000644 001750 001750 00000005435 12277056351 020727 0ustar00saucysaucy000000 000000 GIF89a008u݀˸ζɱַݍƩĚƷ˲ՁɳȬ󞨴ٿڅ兝éϰͩ5r8s9t:u;t>yC{8dUGp^ceeffjQyvswysy^}܂ᅵ偰`zz֍*`'Z/l4r3p4q0g5r5p7t6s7t9v8s:v9v9t5l>;w:w:u;x:v=z8p5j>{=z=y>y=w?z>zA}A~4dA|A{B}C~B}DC~=q7gEHGCzG~>oMDv=jJCtQMK}AmGvNYSS\_VIta`\Xdb\ed_\gic`mkbQxotssW~vuvzywys}yׂ䁴ㄷ恳bin1r4d[tvv|߃サ▸ۻ!,00eN*\ȰaBYkɣN:;3jȱǍyg(S\ɲJ%(d͛8s3=J @ѣH*]4)@z3Ր@XC~a"8q䨍#q Y O&~PRIc܏莤sGozTC&ٳgB&(6p{C6pl=FG wxD$9BHpڼY2) P0 & Da*(9(D,lbn;o,lDFosAm:`v #$p"R¶|C::7 d 4 I+H8 n/o04C4 3Tr=@ , /b> Bh0 H.>,TOEsD0 %Pa<6816#XG:ЁP0XP`k  آ"D!!.^x*T)Р NAE@dHqA" y[D5/p +.PщN"I!S$#i_/+` ¸0Y_B?bE.b SBU I +|.a C .< ,r8.L) -00 )Z-daJTb )-cp=:L-DxX1™Z@8@g 1Nr6sƈ1! gg=qJn cX3G>,48@OeSG -#)i~ H Q-G+d352ь:ay2Z~  ELچVD %Ua`mT-Ԣ cC2Sc +{B͘qWծxB3@Xf E,{XgE* b0 p:\ht B*rьh#a 2#;e3a.x-3ZhD#Xp;\fC30# 5`]z%'A >#F;Q^`{0| ӨQ{ӘF,1WL _]i0E! 1< SXB iX%4xP QjȘQ4d,xdx12SX"==Bz/ 9@?Za](K Y wH`~;\q0:6u84RA0܆(CY3|wBpC0$:G>}T`5L#xC>0 l\51#cxG/ (c<2hE*q2]2\ ʾ} 0ae©ЍmtװF]1a.]nHc61xc(ü~6r |H; F7arfȸ7{G9;indicator-china-weather-1.1.0/icons/n22.gif000644 001750 001750 00000005425 12277056351 020735 0ustar00saucysaucy000000 000000 GIF89a008Z8Z2P췾սʺ҅ºdzʱȹ₋ĸͼ0R,Iq|Ⱦ/P0Q1R7Y2S3T4U5V1O<_6V%Bd,Lr1Qw2Rx/Mq0Nr7X5U{6V|7W}9Y9Y5Sw6Tx:Z;Y9W{;X}F\v|ɹڼ/O1Q2R3S/L0N0M4T5V1O=a8[6V2O3Q7W:]8X4R4Q9Y5S6S"@c;[!?`&Ei"=\8T+Mr*Kp'Eg(Fi%Aa/Rz-Ot2Tz1Sx-Kn4V{7Z5W|6X}+Fd7Y~(A\3Qt9[3Qq.If0Jh>`:Y{4MiOnShrÆŭõ/M0N2P9Z3Q;]4R0K<]6T:Y;Z<[7T:X#Dg!Bb=\;Y"A`'Hj*Kn)Ik.Qv+Lo'Ed,Mp+Lm-Or-Nq0Sw.Or/Ps-Mn0Qt.Op4X|1Ru2Sv3Tw7[4Ux8\5Vy/Mk7Y|6Wz5Vw9Z}:[~=Umcv/K1M3O9V?^(Ih-Qs-Pp+Lk5[/Qq7[}8\~6Yz7RCyEid ^7Vx 薮?q /{A̼8`ǎY? rxpƁ0 ~w_ŷbh-1 a,Ay@ `P6y-{AN@cuS,,y ȁ$EME$9~BN-]"&91'2tp > x@A|BΗB˗K-x %Yt c^x0&8 #؉gA)@‹ #-B-7_Fp wFA 1|ix0,lFK.DLD7ihb$XB lw C -|E(vR.R p'<ï " 4\-B \prス ,9(陂 F$ _|1%y C 5l N"ROhآ1P@ 5 7؀epCG/>/byA <`0!p-Pm5Z .cH.F '+坨`Jq 2O,zE& Dz-݀QBipB *H0[`΅]|sJ1H"|¹ \ԐBxS _mָw1)CJ O0,5p ,@ >,d^Ʈb "| `H 0q T}RA RjY 60)[ ,  "(E*R T< E(p`@k0`Dʑ D ,0_#$AOB:p9p# 9(CNP  a@ŀ$HEa,c A b$E"( D cAnp  %P$~AerJ81qC,cGX'qB*1AA,qVZC %2 e#\G2c4X/Lt4b D"1Mn6#"0v3͌2u(X AS\.1r4Bс]0CU3&ʌ`0Cx&6 ,(2@P z2֡ fЃE)JӉ>3$ Da# "`Hx# nX3nծ"xDXh0c 4".4S<}`dM`[$L#@b& /5&H?L `4e46a ӨFkA,ըF1-"p!##6wMm$&D F5 $dc-vel' T"@Ξ;~І6p^ AC.Ow`AX@D3Q./ =86Kk$ /^#r/["61Jb kmM ڒ,+H{ƶ` iYȄ;[S{sz($o N<@3-c6Mw[Q6@1;indicator-china-weather-1.1.0/icons/d28.gif000644 001750 001750 00000005552 12277056351 020732 0ustar00saucysaucy000000 000000 GIF89a00݄෿̽лɧ“䅑ƫòܜׂၯ∴4p7s6q8s;v;u=x;r?zA|@zB}E~HHt_Fnnqsqyty{ރ恱ჳㄴ䆶唿邡¯ضҽ0q1r'Z*_3q5s3p0i5s4q5r4p/f6s5r7t6s8u9v8u8s;x9v7p5m:w:u;x?}=zyA~?z>zA~3bA|A}B}B~>v7iCE=qE}CzILOI}PCsRGxFvLFuVYQIxUL{\PHsaZcaR~fd_hkgdikdhkpmZnrpsrrql^wUzvvx{zyہ|{~}߁䀳yׂ䁴\惶g߅ㄴ⃳lfttyՄʢҢܮ6tAtDwooq߁⃶サ⁴Ĭն!,00iS$ .atYȰÇ^#ƒ”1#L0`Iɓ$`R eȔy&̛8s 2JP.gb r3d̔;CU\fP:ׯ`~Qn 5k@TkcAsf٧s5ġ-Y6iHrihh̹3 6pjА%K()#'Z/4jHN8ii3 S 7Zy@܃s)iGNuggsËccϛ>Br&LHAJ/lΟ( 89^|p LYdžv!vh푓 RH0A*@1~C9c!y1P@&a-ATD [!PH<@!nxqLƒ@)e 0 d`IH! f!6H8l#+P".F0{fxàPH"H^p2s=^y \(p*5͵d>9檫 X L3c 긊"$,d'^` ,l*H#,2Ƥćbb`)ޫ"6,2p"/"bB|S5*Og/njpBWv7o]嘻IB%XK6v3J}:g8 b $ #hR.`3=|p|zΎC^3@ P b{W. _޸o5|?81 X (?&3.Ql``:P >1qc!Ntb_' G` d<E1.AP?xЃ':"5HbmYЂ!p#,%Bp+h XУ UG>0GqE&FHBA 3V3HQ"(E)2{3ylbHE&aL"(E*HXF7as`2(*TъTx5 8E+HLsDa8#&qLUȄ#@sNF^1M"d+-j!VZ+C #⯴@G' kPa%ktDajV҂E(&HDA$ ^P$sL-$1 mS\_ E< 0'Pqp.VA 1D+|P? ]08B0tLtBjE滊\\E.\ *0 Qq _7G06 "GS| b.faD.яD!@10aǴ y\@/a 1Oa~/9().uGH cc34R(HCыuŀ ܂A+-Bq*Dx%\u\(2ց \f/B h ȵswD/.K^i@c .P1Qp2%,e@߱d|@F3 &Lc-VhtP.;V.nm&0a Q p#pF;wHXF;i8GwGrw8'x4! g8 g4HB4h8F/ҕބ3MoɛhCN?;