0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

EPGStation で WebAPI を使って録画ファイルをキーワード削除

Posted at

EPGStation での録画ファイル管理。

「EPGStation で WebAPI を使って余分な TS ファイルを削除」
https://qiita.com/nanbuwks/items/bab77ef5c61b5e74c905

を応用して、 python で EPGStation の録画ファイルをキーワード削除するようにしてみます。

環境

  • Version of EPGStation: 2.6.20
  • Version of Mirakurun: 3.9.0-rc.2
  • OS:Ubuntu Linux 20.04
  • Architecture: x64

「PLEX PX-Q3PE4 で docker-mirakurun-epgstation を使いたい」
https://qiita.com/nanbuwks/items/640ee4405e1fdd2ca497
こちらで構築したものです。

作戦

  1. 録画リスト取得
  2. 不要な録画ファイルがあるか判定
  3. 不要な録画ファイルを削除

録画リスト取得、不要な録画ファイルがあるか判定

以下のようにして取得

$ curl -X 'GET' 'http://192.168.42.100:8888/api/recorded?isHalfWidth=false&offset=0&limit=24&isReverse=true&keyword=%E5%88%97%E5%B3%B6%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9&hasOriginalFile=false'   -H 'accept: application/json'

取得したもの

{"records":[{"id":50,"channelId":3273601024,"startAt":1661486700000,"endAt":1661489700000,"name":"列島ニュース[字]","isRecording":false,"isEncoding":false,"isProtected":false,"programId":327360102401403,"description":"日本列島の今が見える!NHKが地域向けに放送しているお昼のニュースを選(え)りすぐって大阪から全国に発信。地域の課題や郷土の話題を盛りだくさんでお届けします。","extended":"◇番組内容\n「列島各地の地域ニュースを選りすぐって大阪から全国に発信します」。全国に54あるNHKの各放送局が取材して地域向けに放送したお昼のニュースから地域の課題、地元ならではの話題などを集めて盛りだくさんでお伝えします。今年度は中継で結んで現地の放送局から伝える「列島ニュースアップ」と「NHK NEWS WEB」に掲載された特集記事を紹介するコーナーを新たに開始!ライブ感とネット連携を強化してお届けします\n◇出演者\n【キャスター】武田真一,伊藤雄彦,二宮直輝,牛田茉友,一柳亜矢子,【気象予報士】坂下恵理","genre1":0,"subGenre1":0,"videoType":"mpeg2","videoResolution":"1080i","videoStreamContent":1,"videoComponentType":179,"audioSamplingRate":48000,"audioComponentType":1,"thumbnails":[48],"videoFiles":[{"id":13451,"name":"H.264","filename":"2022年08月26日13時05分00秒-列島ニュース[字].mp4","type":"encoded","size":80505197}]}],"total":1}

この中の

  • "id":50,"

を指定して、録画を削除する。

不要な録画を削除

$ curl -X 'DELETE'   'http://192.168.42.100:8888/api/recorded/50'   -H 'accept: application/json'

これに対し、帰ってきた返答は

{"code":200}

うまくいったようです。

pythonプログラム

上記の操作を元に、以下のプログラムを作りました。

#import requests
import sys
import urllib.parse
import urllib.request
import json
import time

# limit を適宜変更のこと
urlget = "http://192.168.42.100:8888/api/recorded?isHalfWidth=false&offset=0&limit=10000&keyword="+urllib.parse.quote(sys.argv[1])
urldelete = "http://192.168.42.100:8888/api/recorded/"

# 録画一覧を表示
# 録画一覧を得る
response = urllib.request.urlopen(urlget)
jsonData = json.load(response)
# 録画ごとにループ
for jsonObj in jsonData["records"]:
    # "videoFilesを取り出し
    for videoFileObj in jsonObj["videoFiles"]:
        name=videoFileObj["filename"]
        print(":",name)

yesno = input("Delete Files. OK? [y/N]: ").lower()
    if yesno in ['y', 'ye', 'yes']:
        # 削除実行
        # 録画一覧を得る
        response = urllib.request.urlopen(urlget)
        jsonData = json.load(response)
        # 録画ごとにループ
        for jsonObj in jsonData["records"]:
            # "録画IDを取り出し
            id=jsonObj["id"]
            url=urldelete+str(id)
            headers = {"Content-Type": "application/json"}
            res=urllib.request.Request(url,json.dumps(jsonObj).encode(),headers,method="DELETE")
            try:
              with urllib.request.urlopen(res) as f:
                  pass
              print(f.status,end="")
              if (200==f.status):
                print(" DELETE",end="")
                print(":",id)
              else:
                print(" Error",end=" ")
                print(f.reason)
                print(" at:",nameTs)
            except urllib.error.HTTPError as err:
              print(" Error",end=" ")
              print(err.code,end=" ")
              print("at:",id)
            except urllib.error.URLError as err:
              print(" Error",end="")
              print(err.reason)
              print("at:",id)


実行

$ python3 deleteepgstation.py おはよう日本

合致するリストが出てきます。

: 2022年08月28日07時40分00秒-NHKニュース おはよう日本(関東甲信越)[字].mp4
: 2022年08月28日07時00分00秒-NHKニュース おはよう日本 夏休み明け子どもの悩み▽「魔球」の謎[字].mp4

まずはキャンセルして

Delete Files. OK? [y/N]: n

再度絞り込んで指定します。

$ python3 deleteepgstation.py おはよう日本(関東甲信越)

該当が出てきたのでこれを削除します

: 2022年08月28日07時40分00秒-NHKニュース おはよう日本(関東甲信越)[字].mp4
Delete Files. OK? [y/N]: y

うまく削除できました。

200 DELETE: 110
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?