調子いい感じで、不具合もなく、毎日通知をしていましたが
「... 」こういう点々が出る。点々3つ。最初は意味がわからなかったけど、
行が多くなると、途中で切れてしまうということがわかった。
「通知内容の文字 ...」
という具合になる。
◆調査結果
・1000文字を超えた場合、通知されずに「...」になる。
・1000文字の中には、空白も含まれる。
・文字が切れて...になってしまう
・途中までだけど、通知はされる
◆改善策
1000文字を超えれば、分けて投稿する。という条件を付けようと思ったが、運用でカバーできるので、50行以上になったら、次のブロックで投稿にすることにした。
1行あたりの文字数が空白も入れて、大体20文字前後だったので、20文字×50行で1000文字が上限なので、50行以内を1回分の通知にする。
今回は、余裕を持って45行にした。2000文字(100行)まではいかないので、2回に分けて投稿することにした。
import requests
# 空のリスト
line_message=[]
# 仮に1600文字をline_messageリストへ追加
for i in range(80):
line_message.append("01234567890123456789")
# 取得したリストの順番を整える。(最新が上で過去が下)
# line_message_name.sort() 過去が上で最新が下
line_message.sort(reverse=True)
# リストを45まで追加してそれ以上は分割
noty_list1 = []
noty_list2 = []
def list_count(lists):
for i in lists:
if len(noty_list1) < 45:
noty_list1.append(i)
elif len(noty_list1) >= 45:
noty_list2.append(i)
list_count(line_message)
def line(message_lists,token):
# 投稿設定
line_notify_token = token
line_notify_api = 'https://notify-api.line.me/api/notify'
# リスト内昇順
message_lists.sort(reverse=True)
string = "\n".join(message_lists)
message = '\n' + string
payload = {'message': message}
headers = {'Authorization': 'Bearer ' + line_notify_token} # 発行したトークン
line_notify = requests.post(line_notify_api, data=payload, headers=headers)
line(noty_list1,'***********Notifyのトークン********')
if noty_list2 !=[]:
line(noty_list2,'***********Notifyのトークン********')
else:pass
なんだか不細工だと思うが、とりあえずエラーも出ないし完了!