「来季何見る?」向けアニメ最速放送日抽出スクリプト
3ヶ月毎にビデオサーバーに来季のアニメのタイトルを突っ込みますが、たまにタイトルがマッチングしないで録画されていない時があって、2話位過ぎてからそれに気が付き、「ノォォォォ!(゜Д゜;ノ)ノ」ってなった事がちょいちょいあるので、放送開始&録画が始まるまで気を抜かないようになってきました。(録っても見ないくせに)
そこで、毎季エアチェックにお世話になっているサイトの一つ「アキバ総研」さんから、最速放送日を出すスクリプトをPythonで書きました。
ライブラリは有名なRequestsとBeautifulSoupを使ってスクレイピングです。
【ソース:anime_title.py】
【出力結果】
CSVで出せれば、後はターミナルからどうにでもなるので、録画が始まる3日前位から各タイトルがEPG(電子番組表)から発見されて、録画予約に登録されているかをモニタリングです。
今季は64本ほどありましたが(本日現在)、最近はネット配信のみとかあるので、その辺は録画できないとして、約40本程予約しました。
見れて5~10本位だろうな。オンタイムで5本弱。録画で5本弱行けたら御の字。
【2021/01/16 追記】
大分前にソースを改造していたことに気が付き、更新版を追記です。
(上記とはまるで変わりました。(^^ゞ)
そこで、毎季エアチェックにお世話になっているサイトの一つ「アキバ総研」さんから、最速放送日を出すスクリプトをPythonで書きました。
ライブラリは有名なRequestsとBeautifulSoupを使ってスクレイピングです。
【ソース:anime_title.py】
import requests
from bs4 import BeautifulSoup
res = requests.get('https://akiba-souken.com/anime/spring/')
soup = BeautifulSoup(res.text, 'html.parser')
divs = soup.find_all('div', {'class': 'itemBox'})
for i in divs:
print(i.a.string + ',' + i.select('div[class="firstDate"]')[0].text)
【出力結果】
アイドリッシュセブン Second BEAT!,最速放送日 2020年4月5日(日)22:30~(TOKYO MX) 天晴爛漫!,最速放送日 2020年4月10日(金)21:30~(AT-X) あの世のすべては、おばけぐみ,最速放送日 2020年4月6日(月)25:00~(千葉テレビ) アルゴナビス from BanG Dream!,最速放送日 2020年4月10日(金)25:25~(毎日放送) アルテ,最速放送日 2020年4月~(放送局未定) イエスタデイをうたって,最速放送日 2020年4月4日(土)25:30~(テレビ朝日) ULTRAMAN,最速放送日 2020年4月12日(日)23:00~(TOKYO MX) : : |
CSVで出せれば、後はターミナルからどうにでもなるので、録画が始まる3日前位から各タイトルがEPG(電子番組表)から発見されて、録画予約に登録されているかをモニタリングです。
今季は64本ほどありましたが(本日現在)、最近はネット配信のみとかあるので、その辺は録画できないとして、約40本程予約しました。
見れて5~10本位だろうな。オンタイムで5本弱。録画で5本弱行けたら御の字。
【2021/01/16 追記】
大分前にソースを改造していたことに気が付き、更新版を追記です。
(上記とはまるで変わりました。(^^ゞ)
【ソース:anime_akiba.py】
※試行錯誤のコメント付きですw
【出力結果】
※sortコマンドでソートしています。
※試行錯誤のコメント付きですw
#!/bin/sh
# coding: utf-8
""":"
exec python "$0" "$@"
"""
__doc__ = """The above defines the script's __doc__ string. You can fix it by like this."""
# おまじない終わり
import requests
from bs4 import BeautifulSoup
import re
# スクレイピング対象の URL にリクエストを送り HTML を取得する
res = requests.get('https://akiba-souken.com/anime/winter/')
# レスポンスの HTML から BeautifulSoup オブジェクトを作る
soup = BeautifulSoup(res.text, 'html.parser')
# HTMLをインデント
#print(soup.prettify())
## title タグの文字列を取得する
#title_text = soup.find('title').get_text()
#print(title_text)
#
## ページに含まれるリンクを全て取得する
#links = [url.get('href') for url in soup.find_all('a')]
#print(links)
div_items = soup.find_all('div', {'class': 'itemBox'})
#print(len(div_items))
for item in div_items:
#print(item)
#print('[' + item.a.string + ']')
# 「最速放送日 」をトリミング
time_text = item.select('div[class="firstDate"]')[0].text
time_text_org = time_text.replace('最速放送日', '')[2:]
time_text = time_text_org
# 「yyyy年m月d日(w)HH:MM~」
# 「yyyy年m月~」
# 「yyyy年秋~」
# の曖昧表現を対処
step1 = re.sub('[年月日]', ',', time_text)
#print(step1)
time_list = step1.split(',')
#print('len', len(time_list), time_list)
if len(time_list) >= 3:
year = time_list[0]
month = time_list[1]
day = time_list[2]
# 「yyyy年m月~」
if len(time_list) == 3:
#print('{0}/{1}'.format(str(year).zfill(4), str(month).zfill(2)))
yyyymm = str(year).zfill(4) + '/' + str(month).zfill(2)
time_text = yyyymm + time_text[time_text.find('~'):]
# 「yyyy年m月d日(w)HH:MM~」 ※「日」も置換されてしまっているので注意。
elif len(time_list) >= 4:
#print('{0}/{1}/{2}'.format(str(year).zfill(4), str(month).zfill(2), str(day).zfill(2)))
yyyymmdd = str(year).zfill(4) + '/' + str(month).zfill(2) + '/' + str(day).zfill(2)
# 時間をゼロパディング
hour = time_text[time_text.find(')') + 1:time_text.find(':')]
minute = time_text[time_text.find(':') + 1:time_text.find('~')]
#print('hour', hour, 'mitute', minute)
time_text = \
yyyymmdd + time_text[time_text.find('('):time_text.find(')') + 1] + \
str(hour).zfill(2) + ':' + str(minute).zfill(2) + time_text[time_text.find('~'):]
#else:
# #print('full')
#print('[' + item.a.string + '],[' + time_text[2:] + ']')
#print('[' + time_text_org + '],[' + item.a.string + ']')
print('[' + time_text + '],[' + item.a.string + ']')
#date = item.select('div[class="firstDate"]')[0].text
#print(date)
【出力結果】
※sortコマンドでソートしています。
~/bin $ anime_akiba.py |sort [2020/12/21(月)21:00~(TOKYO MX)],[HERO MASK] [2020/12/30(水)19:30~(NHK総合)],[アーヤと魔女] [2021/01/01(金)~(動画配信サービス未定:2021年1月1日(金)~(動画配信サービス未定)],[幼女社長] [2021/01/03(日)25:00~(TOKYO MX)],[じみへんっ!!~地味子を変えちゃう純異性交遊~] [2021/01/04(月)22:00~(AT-X)],[たとえばラストダンジョン前の村の少年が序盤の街で暮らすような物語] [2021/01/04(月)23:30~(AT-X)],[裏世界ピクニック] [2021/01/04(月)24:00~(TOKYO MX)],[ウマ娘 プリティーダービー Season 2] [2021/01/05(火)07:30~(テレビ東京)],[PUI PUI モルカー] [2021/01/05(火)21:00~(AT-X)],[ゲキドル] [2021/01/06(水)17:55~ ※初回は事前特番(テレビ東京)],[七つの大罪 憤怒の審判] [2021/01/06(水)22:30~(AT-X)],[Re:ゼロから始める異世界生活 2nd season 後半クール] [2021/01/06(水)23:00~(TOKYO MX)],[アイ★チュウ] [2021/01/06(水)24:00~(TOKYO MX)],[装甲娘戦機] [2021/01/06(水)24:30~(TOKYO MX)],[オルタンシア・サーガ] [2021/01/06(水)24:55~(フジテレビ)],[BEASTARS(第2期)] : : |
コメント
私は諦めたよ
えらい古いの見てますね
ビデオサーバの録画DB見たら「たまゆら(1期)」って、約10年前じゃないですかw
今はVODの時代ですが、オンプレミスはオンプレミスで色々と都合が良いこともあるので、PCが壊れる or 地デジの仕様が合わなくなるまで、やっていこうかと。
今はVODの時代ですが、オンプレミスはオンプレミスで色々と都合が良いこともあるので、PCが壊れる or 地デジの仕様が合わなくなるまで、やっていこうかと。
コメントの投稿
1年くらい前、レコーダー2台(3チューナー)で気に入った風なのを録画・視聴しましたが、(一通り終わって)夏に挫折しました。半年後、レコーダー1台が壊れたので録画済みのやつが天国に。
これを機に私はdアニメとdTVに切り替えることにしました。50音で「あ」から順番にリストを眺めて気になったのを見る。今は「た」まで行きましたー。「たまゆら」を見てます。涙なしには見られません。
ってな感じ。
ただ、dアニメは22時頃は「3秒再生・10秒フリーズ」を延々繰り返すという素晴らしいサーバを用意してくれているので考え中・・・