马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?点击注册
x
代码小白300问之一:“我应该怎样转换天气文本,才能将网站上的天气信息提取出来并写到皮肤里去?” 你弱爆了!首先找到你的measure或者相关的一堆measure(一般一个天气皮肤有3-5个measure),它们都是用来“天气转换”的文本。它们可能会是这样的: - [MeasureCurrentWeatherConditions]
- Measure=Plugin
- Plugin=WebParser
- Url=[MeasureYahooWeather]
- StringIndex=34
复制代码 请注意,天气皮肤通常配合一个主要measure进行工作,这个measure会将天气网站的RSS中的信息全部提取出来。然后再由后面单个的measure将具体的信息从前面提出来的信息中挑出来。因此你常会看到这种写法:
- Measure=Plugin
- Plugin=WebParser
- UpdateRate=600
- URL=http://weather.yahooapis.com/forecastrss?p=#Location#&u=#Unit#
- RegExp="(?siU)<title>.*- (.*)</title>.*<link>(.*)/\*(.*)</link>.*<description>(.*)</description>.*<language>(.*)</language>.*<lastBuildDate>(.*)</lastBuildDate>.*<yweather:location city="(.*)".*region="(.*)".*country="(.*)".*<yweather:units temperature="(.*)".*distance="(.*)".* pressure="(.*)".*speed="(.*)".*<yweather:wind chill="(.*)".*direction="(.*)".*speed="(.*)".*<yweather:atmosphere humidity="(.*)".* visibility="(.*)".*pressure="(.*)".* rising="(.*)".*<yweather:astronomy sunrise="(.*)".*sunset="(.*)".*<title>(.*)</title>.*<width>(.*)</width>.*<height>(.*)</height>.*<link>(.*)</link>.*<url>(.*)</url>.*<title>(.*)</title>.*<geo:lat>(.*)</geo:lat>.*<geo:long>(.*)</geo:long>.*<link>(.*)/\*(.*)</link>.*<pubDate>(.*)</pubDate>.*<yweather:condition text="(.*)".*code="(.*)".*temp="(.*)".*date="(.*)".*<img src="(.*)".*Current Conditions:</b><br />(.*)<BR />.*Forecast:</b><BR />(.*)<br />.*(.*)<br />.*<a href="(.*)/\*(.*)">.*provided by <a href="(.*)" >(.*)</a>.*<yweather:forecast day="(.*)".*date="(.*)".*low="(.*)".*high="(.*)".*text="(.*)".*code="(.*)".*<yweather:forecast day="(.*)".*date="(.*)".*low="(.*)".*high="(.*)".*text="(.*)".*code="(.*)".*"
复制代码然后后面紧跟这么一些皮肤代码: - [MeasureCurrentWeatherConditions]
- Measure=Plugin
- Plugin=WebParser
- Url=[MeasureYahooWeather]
- StringIndex=34
复制代码如你所见,[MeasureCurrentWeatherConditions]这个measure用来得到[MeasureYahooWeather](这是我们的主RSSmeasure)这个节点中“URL=”的结果,然后具体要求为StringIndex=34,这个数组中的索引会返回一个值,这个值就是“当前天气状况”。 当Weather.com返回这个值之后,你需要将它们转换成自然语言。为了达到这个目的,你需要在"StringIndex=34"的后面增加一行(在我们的例子里): - Substitute="Cloudy":"Bewölkt","Partly Cloudy":"Teilweise Bewölkt"
复制代码一般格式如下: Substitute="替代品":"被替代品","替代品":"被替代品" 这里的标点非常重要。"替代品"和"被替代品"都要用引号括起来。每组之间用逗号隔开。
好了完成了。在上面的例子中,当文字在一个节点中显示时,“Cloudy”将代替"Bewölkt"。代码小白300问之二——“当前天气”文本的代码会从weather.com/ Yahoo Weather得到些什么,好让我用来转换? 下面是转换的数字和文字的对应: - 0 – 雷暴
- 1 – 风雨交加
- 2 – 风雨交加
- 3 – 雷暴
- 4 – 雷暴
- 5 - 雨雪
- 6 – 雨夹雪??
- 7 – 冰雪
- 8 – 冻毛毛雨???
- 9 – 毛毛雨
- 10 – 冻雨
- 11 – 雷阵雨
- 11 – 阵雨
- 11 – 小雨
- 12 – 大雨
- 13 – 阵雪
- 14 – 小雪
- 15 – 中雪
- 16 – 大雪
- 17 – 暴雪
- 18 – 冰雹
- 19 – 浮尘
- 20 – 雾
- 21 – 薄雾
- 22 – 烟尘
- 23 – 风
- 24 – 风
- 25 – 严寒
- 26 – 多云
- 27 – 多云的夜间 (此处有不懂:the "Night" will not be included)
- 28 – 多云
- 29 – 部分云的夜间 (什么玩意儿??the "Night" will not be included)
- 30 – 中等量的云????
- 31 – 晴夜 (the "Night" will not be included)
- 32 – 阳光
- 33 – 晴
- 33 – 晴朗的晚上 (the "Night" will not be included)
- 34 – 晴
- 34 – 阳光
- 35 – 雷暴
- 36 – 炎热
- 37 – 少雷???
- 38 – 零散雷暴
- 39 – 零散下雨
- 40 – 大雨
- 41 – 零散下雪
- 42 – 大雪
- 43 – 风雪
- 44 – 部分晴朗的白天
- 45 – 零星阵雨的晚上 (the "Night" will not be included)
- 46 – 下雪的晚上
- 47 – 零星雷暴的晚上 (the "Night" will not be included)
复制代码翻译者的提问:能不能把这些换成中国天气网的数字和对应?反正我们又不用外国的天气网。。。
|