ターミナルでweathergetter.pyというファイルを実行したところ、結果が出力されません。またエラーも出力されないのでどこを修正すれば良いのかがわかりません。
lineのチャットボットに天気予報の情報を組み込む過程でのことです。
以下のサイトを参考になぞってやっています。
リンク内容
weathergetter.pyのコード
import bs4 import requests class GetPlaceData(): ''' 全国の地点定義表から、都市名とidを取得するクラス ''' def __init__(self): ''' 全国地点定義表を読み込む ''' path = 'http://weather.livedoor.com/forecast/rss/primary_area.xml' self.res = requests.get(path) def get_city(self): ''' 都市名とidを辞書型で取得 ''' city_list = {} b = bs4.BeautifulSoup(self.res.text, 'xml').select('city') for city in b: city_list[city.get('title')] = city.get('id') return(city_list) class GetWeatherData(): ''' livedoorのAPIから、天気予報データを取得するクラス ''' url = 'http://weather.livedoor.com/forecast/webservice/json/v1' def __init__(self, city_id): place = {'city' : city_id} self.weather_data = requests.get(self.url, place).json() def get_weather(self): self.weather = [] #天気(晴れ、雨など) self.temperature_max = [] #最高気温 self.temperature_min = [] #最低気温 for w in self.weather_data['forecasts']: self.weather.append(w['telop']) try: self.temperature_max.append(' max ' + w['temperature']['max']['celsius'] + '℃ ') except: self.temperature_max.append(' max - ℃ ') try: self.temperature_min.append(' min ' + w['temperature']['min']['celsius'] + '℃ ') except: self.temperature_min.append(' min - ℃ ') def show_weather(self): self.get_weather() date = ['今日 ', '明日 ', '明後日 '] r = '' for i in range(3): try: r = r + date[i] + self.weather[i] + self.temperature_max[i] + self.temperature_min[i] + '\n' except: continue return(r) if __name__ == "__main__": input_text = '函館' city_data = GetPlaceData() city_dict = city_data.get_city() if input_text in city_dict: r = GetWeatherData(city_dict[input_text]) reply_text = r.show_weather() print(reply_text)
実行結果は(isseiyaguchi) isseiyaguchi@IsseinoMacBook-Pro chatbot % python3 weathergetter.py
(isseiyaguchi) isseiyaguchi@IsseinoMacBook-Pro chatbot %
となります。
ちなみに成功した場合、出力結果は
今日 晴のち曇 max - ℃ min - ℃ 明日 曇のち晴 max 6℃ min 0℃ 明後日 晴時々曇 max - ℃ min - ℃
と出るそうです。
あなたの回答
tips
プレビュー