質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

3回答

2743閲覧

天気予報機能の作り方が分かりません。

退会済みユーザー

退会済みユーザー

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/06/02 05:53

#天気予報機能の作り方が分かりません。
試してみたプログラム

Pyton

1import discord 2import urllib.request 3import json 4import re 5 6client = discord.Client() 7 8citycodes = { 9 "土浦": '080020', 10 "水戸": '080010', 11 "札幌": '016010', 12 "仙台": '040010', 13 "東京": '130010', 14 "横浜": '140010', 15 "名古屋": '230010', 16 "大阪": '270000', 17 "広島": '340010', 18 "福岡": '400010', 19 "鹿児島": '460010', 20 "那覇": '471010' 21} 22 23@client.event 24async def on_ready(): 25 print("logged in as " + client.user.name) 26 27@client.event 28async def on_message(message): 29 if message.author != client.user: 30 31 reg_res = re.compile(u"Bot君、(.+)の天気は?").search(message.content) 32 if reg_res: 33 34 if reg_res.group(1) in citycodes.keys(): 35 36 citycode = citycodes[reg_res.group(1)] 37 resp = urllib.request.urlopen('http://weather.livedoor.com/forecast/webservice/json/v1?city=%s'%citycode).read() 38 resp = json.loads(resp.decode('utf-8')) 39 40 msg = resp['location']['city'] 41 msg += "の天気は、\n" 42 for f in resp['forecasts']: 43 msg += f['dateLabel'] + "が" + f['telop'] + "\n" 44 msg += "です。" 45 46 await client.send_message(message.channel, message.author.mention + msg) 47 48 else: 49 await client.send_message(message.channel, "そこの天気はわかりません...") 50 51client.run("ここにトークン")

(トークンなどは入力済みです。)
エラーコード

logged in as DM Ignoring exception in on_message Traceback (most recent call last): File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 343, in _run_event await coro(*args, **kwargs) File "C:\Users\user\AppData\Local\Programs\Python\Python39\tenkei.py", line 38, in on_message resp = json.loads(resp.decode('utf-8')) File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 346, in loads return _default_decoder.decode(s) File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 2 column 1 (char 4)

#試してみたことなど
APIを探しました。ですが、エラーが出て終わりでした。
live door以外の使い方がネットに乗っておらず、失敗しました

#実行環境など
Atom 最新版
Pyton 3.9
discord.py

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/06/02 07:20

これ、質問内容の方向性では天気予報機能は作れませんよ。 予報情報をとってくるだけです。 タイトルを修正するか、質問をタイトルに合わせるかしてください。
guest

回答3

0

livedoor help - サービス終了のお知らせ

2020年7月31日(金)14:00 をもちまして、「livedoor 天気」のサービス提供を終了いたしました。

python

1resp = urlopen(...).read() 2resp = json.loads(resp.decode(...))

read(), decode() と繋げて書かれてますが、
デバッグ時(問題の原因を探したい時)は、
個別に書いて、期待した値が渡っているか print で表示する等して確認しましょう。


代替として使える Weather API を探す

恐らく質問したい部分はここだと思いますが、
有償のサービスや事前登録や準備が必要なもの等、多様なサービスがあるので、
対象の地域が対応されているか、必要な情報が得られるか等も調べて下さい。

 地域コードは ISO 3166 country codes

※ API key が必要なので、登録方法は別で調べる必要があります

HTTPリクエストの非同期化

discord が非同期I/O のライブラリを利用しているので、
非同期でリクエストを送る必要が有ります。

天気予報のデータ所得に時間が掛かった場合、
同期コードでは、その間の discord サーバーとのやり取りが途切れる為
discordサーバーとの接続が切れる可能性があります。

投稿2021/06/02 07:04

teamikl

総合スコア8760

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/06/02 07:15

すみません。ソースコードどのように変更すればいいか分かりません...
guest

0

どんな探し方をしたのかは分かりませんが・・・

livedoorは天気予報サービスを終了しています。

ただ、
代替APIを提供している奇特な方がいらっしゃるみたいです
APIのリファレンスをよく読んで実装してください。

投稿2021/06/02 06:36

hope_mucci

総合スコア4447

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Livedoor天気はすでにサービスを終了しています(API含む)。
公式の案内

別の天気予報系APIで頑張ってみたい場合は、最終更新が2年前ですがQiitaに記事があります。
こちらを参照してみると良いでしょう。
https://qiita.com/cnakano/items/ff3fd90f685f4ca363cc

投稿2021/06/02 06:33

attakei

総合スコア2740

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問