abematv 非公式番組通知 利用方法(開発者向け)

HTTPでPOSTするとこの番組通知を利用することができます。ヘッダーに"Access-Control-Allow-Origin: *"が付与されているのでWebページ内のJavaScript等から直接アクセスできます。
非公式番組通知

通知登録

番組通知を登録する場合は https://abema.nakayuki.net/notify/add.php にPOSTします。POSTするパラメータは次のとおりです。

POSTパラメータ 内容
client 英数字でここにアクセスするプログラムの名前(拡張機能の名前等、開発者が自由に設定可) test
slotid 番組ID 番組個別ページURLのslots/以降の英数字です。 9gjSsHawDhzGXq
notifyminutes 何分前に通知するかの分数(省略した場合5分になります。) 5
notifyto 通知先JSON(mailto,linenotifyToken,postUrlの内必要分を指定) {"mailto":"[email protected]", "linenotifyToken":"LiNEnoTiFysaMpleToKEn123456789", "postUrl":"https://hooks.slack.com/services/XXXXXXX/YYYYYYY/ZZZZZZZZZ"}
URLにつけれるパラメータもあります。pp=1をつけると応答JSONが整形されます。ds=1をつけると応答JSON中の日付(slotキー内を除く)が数値ではなく文字列になります。repeats=1をつけると応答JSONにそれ以降の再放送が載ります。(curlで試す時、add.php?pp=1&ds=1とすると応答JSONが見やすくなります。)
notifytoに入るJSONは3つのキーがあり、mailtoには通知先メールアドレス、linenotifyTokenにはLINE Notifyのトークン、postUrlにはPostするURLを指定します。いずれのキーも省略可能なので必要な分だけ指定してください。
curlコマンドの例:curl -X POST -d "slotid=番組ID" -d "client=curltest" -d "notifyminutes=5" -d 'notifyto={"mailto":"メールアドレス"}' https://abema.nakayuki.net/notify/add.php?pp=1&ds=1
応答はJSONで返ってきます。何かしらのエラーがあった場合は{"satus":"noSlot","error":"slot id not found"}のようなJSONが返ってきます。
エラー時のstatusキーの内容 意味
error パラメータの異常などクライアント側が原因のエラー
servererror サーバー側のエラー
noSlot 指定されたIDの番組が見つからない(1日以上経った過去の番組も見つからなくなります。)
past 指定されたIDの番組の通知時刻が過去((番組開始時刻-通知分数-30秒)<現在時刻)

成功した場合はstatusキーがOKとなり、次のようなJSONが返ってきます。(URLパラメータにpp=1をつけない限り実際のJSONは整形されていません。)
{
    "status": "OK",
    "token": "et5ivq410kos0ke",
    "notifytime": 1497966900,
    "notifyto": {
        "mailto": "[email protected]",
        "linenotifyToken": "LiNEnoTiFysaMpleToKEn123456789"
    },
    "slotInfo": {
        "id": "9gjSsHawDhzGXq",
        "channel": "abema-news",
        "startAt": 1497967200,
        "endAt": 1497970800,
        "title": "AbemaNews23時/AbemaSports!",
        "displayProgramId": "89-22_s0_p834",
        "series": "89-22",
        "tsFlag": 0,
        "tsEndAt": 0,
        "slot": {
            "id": "9gjSsHawDhzGXq",
            "title": "AbemaNews23時/AbemaSports!",
            "startAt": 1497967200,
            "endAt": 1497970800,
            "programs": [
                {
                    "id": "89-22_s0_p834",
                    "episode": {
                        "sequence": 834
                    },
                    "credit": {
                        "casts": [
                            "AbemaCaster"
                        ],
                        "crews": [
                            "テレビ朝日"
                        ],
                        "copyrights": [
                            "(C)テレビ朝日",
                            "Abema News"
                        ]
                    },
                    "series": {
                        "id": "89-22",
                        "themeColor": {},
                        "updatedAt": 1497577939
                    },
                    "providedInfo": {
                        "thumbImg": "thumb001",
                        "updatedAt": 1496972412
                    }
                }
            ],
            "tableStartAt": 1497967200,
            "tableEndAt": 1497970800,
            "highlight": "最新NEWS&話題/AbemaSports!",
            "tableHighlight": "最新NEWS&ランキングは23:30頃~。23:40すぎ~AbemaSports!そのほか本日のJチャンネル、Abemaエンタメニュースなど",
            "detailHighlight": "最新NEWS&ランキングは23:30頃~。23:40すぎ~AbemaSports!そのほか本日のJチャンネル、Abemaエンタメニュースなど",
            "content": "最新NEWS&話題の情報をお届けする24時間ニュース。\n最新NEWS&ランキングは23:30頃~。つづいて23:40すぎ~AbemaSports!ほかに本日のJチャンネル、エンタメニュースもお送りします",
            "displayProgramId": "89-22_s0_p834",
            "mark": {
                "live": true
            },
            "flags": {},
            "channelId": "abema-news"
        }
    }
}
    

tokenキーには通知登録削除用のトークンが入っているのでクライアント側で通知登録状況と一緒に保存しておいてください。Atで終わるキーには時刻がunixtimeの数値として入っています。slotInfoキーには番組情報が入っています。その中のslotキーはAbemaTV公式から取得した番組情報のJSONのデータがそのまま入っています。

通知登録解除

通知登録を削除するには https://abema.nakayuki.net/notify/delete.php にPOSTします。POSTするパラメータは"token=削除用トークン"だけです。{"status":"OK"}が返ってきたら成功です。
curlコマンドの例: curl -X POST -d "token=et5ivq410kos0ke" https://abema.nakayuki.net/notify/delete.php


yuki (a) nakayuki.net