コード一覧

【Python】LINENotifyは1投稿あたり1000文字までしか表示されない

調子いい感じで、不具合もなく、毎日通知をしていましたが
「... 」こういう点々が出る。点々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

なんだか不細工だと思うが、とりあえずエラーも出ないし完了!