CircleTenThanks / Hinatazaka46Calendar

0 stars 0 forks source link

ニュースに記載されていてスケジュールに記載されていないイベントのカバー #3

Open CircleTenThanks opened 4 months ago

CircleTenThanks commented 4 months ago

背景

4回目のひな誕祭のときはスケジュールにイベントが登録されていた。 https://www.hinatazaka46.com/s/official/media/list?ima=0000&cd=event&dy=202304 image

しかし、5回目のひな誕際のときは登録されていないため、Googleカレンダーに追加されなかった。 https://www.hinatazaka46.com/s/official/media/list?ima=0000&cd=event&dy=202404 image

一応、開催決定をはじめとするニュースは記載されているので、この情報を使ってなんとかできないか。 https://www.hinatazaka46.com/s/official/news/list?ima=0000&cd=event&dy=202312 https://www.hinatazaka46.com/s/official/news/detail/E00407?ima=0000

ミーグリの予定とかも。 https://www.hinatazaka46.com/s/official/news/detail/S00325?ima=0000

課題

最初の開催決定では、時間までの詳細情報は無いため、順次追っていく必要あり。ただ、時間を抽出するのは難しそう。(いろんな書き方が想定されるため) スケジュールに記載されている場合重複してしまうのでそこをどうやって検出するか。 ついでに、チケット受付開始のスケジュールもあると嬉しいかも。

CircleTenThanks commented 4 months ago

ニュースのページから日付を抽出するサンプル

【日程】セクションに記載されている文字列だけを対象に検索する ■ をセクションとして使っているケースも有り

import re
from datetime import datetime

def extract_datetimes(text, section=None):
    # 日付の正規表現パターンとそれに対応するインデックスの辞書
    date_patterns = [
        (r'\b(\d{4})年\s*(\d{1,2})月\s*(\d{1,2})日?\b', (1, 2, 3)),                         # YYYY年MM月DD日
        (r'\b(\d{4})年(\d{1,2})月(\d{1,2})日?\b', (1, 2, 3)),                               # YYYY年MM月DD日 (年月日連結)
        (r'\b(\d{4})[/-]\s*(\d{1,2})[/-]\s*(\d{1,2})\b', (1, 2, 3)),                          # YYYY/MM/DD or YYYY-MM-DD
        (r'\b(\d{1,2})[/-]\s*(\d{1,2})[/-]\s*(\d{2}|\d{4})\b', (3, 2, 1)),                    # DD/MM/YYYY or DD-MM-YYYY
        (r'\b(\d{4})年\s*(\d{1,2})月\s*(\d{1,2})日?\b', (1, 2, 3)),                          # YYYY年MM月DD日 (日を含まない)
        (r'\b(\d{4})年\s*(\d{1,2})月\s*(\d{1,2})\b', (1, 2, 3)),                             # YYYY年MM月DD (日に日付の区切り文字がない)
        (r'\b(\d{4})[/-]\s*(\d{1,2})[/-]\s*(\d{2}|\d{4})\b', (1, 2, 3)),                      # YYYY/MM/DD or YYYY-MM-DD (YY年を含む)
        (r'\b(\d{1,2})[/-]\s*(\d{1,2})[/-]\s*(\d{2}|\d{4})\b', (3, 2, 1)),                    # DD/MM/YYYY or DD-MM-YYYY (日付の順番が逆)
        (r'\b(\d{1,2})月\s*(\d{1,2})日\s*(\d{4})年?\b', (3, 1, 2)),                           # MM月DD日YYYY年 (日月の順番)
        (r'\b(\d{4})\s*年\s*(\d{1,2})\s*月\s*(\d{1,2})\s*日\b', (1, 2, 3)),                   # YYYY年 MM月 DD日 (スペースがある)
    ]

    # セクション指定がある場合、そのセクション内のテキストのみを抽出
    if section:
        section_pattern = rf'\【{section}\】(.*?)\【'
        section_match = re.search(section_pattern, text + '【', re.DOTALL)
        if section_match:
            text = section_match.group(1)
        else:
            return []

    datetimes = []
    for pattern, indices in date_patterns:
        matches = re.finditer(pattern, text)
        for match in matches:
            groups = match.groups()
            year, month, day = [int(groups[i - 1]) for i in indices]
            datetime_obj = datetime(year, month, day)
            if datetime_obj not in datetimes:
                datetimes.append(datetime_obj)

    if datetimes:
        return datetimes
    else:
        raise ValueError("No valid dates found in the text.")

# テスト用の文字列
test_string = "【日程】2024年4月14日(日)2024年4月21日(日)2024年4月29日(月・祝)2024年5月4日(土)2024年5月5日(日) ※丹生明里のみの参加となります。2024年5月11日(土) ※丹生明里のみの参加となります。2024年5月12日(日)2024年5月18日(土) ※丹生明里のみの参加となります。2024年6月9日(日)【他のセクション】"

# 文字列から日時を抽出して表示
try:
    extracted_datetimes = extract_datetimes(test_string, "日程")
    for dt in extracted_datetimes:
        print(f"Datetime: {dt}")
except ValueError as e:
    print(f"Error: {e}")
CircleTenThanks commented 4 months ago

取得したいセクション一覧

日付関連(時間が含まれる場合あり)

CircleTenThanks commented 4 months ago

https://github.com/CircleTenThanks/Hinatazaka46Calendar/commit/140825d911b8e35895ba32a92323f37ad8e60a0c でのテスト結果

Datetime: 2024-09-07 00:00:00
add:2024-04-27 (イベント)【抽選】日向坂46 「ひなたフェス2024」、4月28日(日)12:00よりファンクラブ抽選先行受付スタート!
add:2024-04-22 (イベント)「ひなたフェス2024」の【往復移動+宿泊+ライブチケット】【日帰りバス+チケット】をご紹介
add:2024-04-22 (イベント)「ひなたフェス2024」の【ライブチケット】【駐車場+ライブチケット】をご紹介
add:2024-04-22 (イベント)「ひなたフェス2024」チケット先行のご紹介
Datetime: 2024-07-03 00:00:00
add:2024-04-19 (イベント)日向坂46 「11th Single ひなた坂46 LIVE」 ファンクラブ抽選先行受付が4月20日(土)12:00よりスタート!
add:2024-04-09 (イベント)2024年7月20日(土)「OSAKA GIGANTIC MUSIC FESTIVAL 2024」に日向坂46の出演が決定!
add:2024-04-08 (イベント)「齊藤京子卒業コンサート」と「5回目のひな誕祭」のセットリストプレイリストを公開!
Error: No valid dates found in the text.
add:2024-04-07 (イベント)日向坂46「ひなたフェス 2024」開催決定!
Error: No valid dates found in the text.
add:2024-04-06 (イベント)日向坂46「11th Single ひなた坂46 LIVE」開催決定!
add:2024-04-04 (イベント)4月5日(金)~4月7日(日)の3日間限定で、JR関内駅にて「齊藤京子卒業コンサート」「5回目のひな誕祭」の開催を記念した構内放送が決定!
add:2024-04-01 (イベント)テレビ岩手主催「CHAGU CHAGU ROCK FESTIVAL 2024」に日向坂46の出演が決定!

Error: No valid dates found in the text. となったのは、日程セクションはあったのに、日付が見つけられなかったから。 年が記載されていないので見つけられなかった。そのニュース自体の後~年末までの日付だったらそのニュース自体の年、1/1 ~そのニュース自体の前の日付だったらそのニュース自体の年+1を適用する。 https://www.hinatazaka46.com/s/official/news/detail/E00438?ima=0000

CircleTenThanks commented 4 months ago

https://github.com/CircleTenThanks/Hinatazaka46Calendar/commit/fb6ac8ca5586f30aea3217ef0e8ce380a370fad1 でのテスト結果

Datetime: 2024-09-07 00:00:00
Datetime: 2024-09-08 00:00:00
add:2024-04-27 (イベント)【先着】日向坂46 「ひなたフェス2024」、4月28日(日)12:00よりファンクラブ先着先行販売スタート!
Datetime: 2024-09-07 00:00:00
Datetime: 2024-09-08 00:00:00
add:2024-04-27 (イベント)【抽選】日向坂46 「ひなたフェス2024」、4月28日(日)12:00よりファンクラブ抽選先行受付スタート!
add:2024-04-22 (イベント)「ひなたフェス2024」の【往復移動+宿泊+ライブチケット】【日帰りバス+チケット】をご紹介
add:2024-04-22 (イベント)「ひなたフェス2024」の【ライブチケット】【駐車場+ライブチケット】をご紹介
add:2024-04-22 (イベント)「ひなたフェス2024」チケット先行のご紹介
Datetime: 2024-07-03 00:00:00
Datetime: 2024-07-04 00:00:00
add:2024-04-19 (イベント)日向坂46 「11th Single ひなた坂46 LIVE」 ファンクラブ抽選先行受付が4月20日(土)12:00よりスタート!
add:2024-04-09 (イベント)2024年7月20日(土)「OSAKA GIGANTIC MUSIC FESTIVAL 2024」に日向坂46の出演が決定!
add:2024-04-08 (イベント)「齊藤京子卒業コンサート」と「5回目のひな誕祭」のセットリストプレイリストを公開!
Datetime: 2024-09-07 00:00:00
Datetime: 2024-09-08 00:00:00
add:2024-04-07 (イベント)日向坂46「ひなたフェス 2024」開催決定!
Datetime: 2024-07-03 00:00:00
Datetime: 2024-07-04 00:00:00
add:2024-04-06 (イベント)日向坂46「11th Single ひなた坂46 LIVE」開催決定!
add:2024-04-04 (イベント)4月5日(金)~4月7日(日)の3日間限定で、JR関内駅にて「齊藤京子卒業コンサート」「5回目のひな誕祭」の開催を記念した構内放送が決定!
add:2024-04-01 (イベント)テレビ岩手主催「CHAGU CHAGU ROCK FESTIVAL 2024」に日向坂46の出演が決定!
CircleTenThanks commented 4 months ago

カレンダーのタイトルは「」に囲まれた文字列とする。 (ひなたフェス2024 11th Single ひなた坂46 LIVE 齊藤京子卒業コンサート 5回目のひな誕祭 など) ひなたフェス2024 ひなたフェス 2024 のように表記揺れがあるため、重複チェック時はスペースを取り除いたうえでチェックする。登録時は取り除く前の文字列とする。また、事前に半角英数字に変換しておく。登録時も半角英数字とする。

CircleTenThanks commented 4 months ago

時刻の記載パターン

https://www.hinatazaka46.com/s/official/news/detail/E00444?ima=0000

【日程】
2024年9月7日(土) 開場 15:00 / 開演 17:00
2024年9月8日(日) 開場 15:00 / 開演 17:00

https://www.hinatazaka46.com/s/official/news/detail/E00445?ima=0000

【日程】
2024年9月7日(土) 開場 15:00 / 開演 17:00
2024年9月8日(日) 開場 15:00 / 開演 17:00
【チケット一般発売】
2024年7月27日(土)12:00~

https://www.hinatazaka46.com/s/official/news/detail/E00440?ima=0000 ↓ちょっとこれのファンクラブ会員先行申込受付の部分はムズい

【日程】
2024年7月3日(水) 開場 17:00 / 開演 18:30
2024年7月4日(木) 開場 17:00 / 開演 18:30
【チケット一般発売】
6月22日(土) 12:00~
【先行受付スケジュール】
FC2次先行:5月7日(火) 12:00〜5月14日(火) 23:59
オフィシャル先行:5月25日(土) 12:00〜6月2日(日) 23:59
<ファンクラブ会員先行申込受付>
【受付期間】
4月20日(土) 12:00 ~ 4月29日(月) 23:59

https://www.hinatazaka46.com/s/official/news/detail/E00437?ima=0000

【開場/開演】 9:30/11:00(予定)

https://www.hinatazaka46.com/s/official/news/detail/E00438?ima=0000

【ライブ時間】
開場15:00 /開演17:00
【ライブチケット一般発売】
7月27日(土)12:00~
【先行受付スケジュール】
FC先行:4月28日(日)12:00〜

https://www.hinatazaka46.com/s/official/news/detail/E00436?ima=0000

【日程】
7月3日(水)、7月4日(木)  開場 17:00 /開演 18:30
【チケット一般発売】
6月22日(土)12:00~
【先行受付スケジュール】
FC先行:4月20日(土)12:00〜4月29日(月)23:59
FC2次先行:5月7日(火)12:00〜5月14日(火)23:59
オフィシャル先行:5月25日(土)12:00〜6月2日(日)23:59

https://www.hinatazaka46.com/s/official/news/detail/E00433?ima=0000

■開催時間
開場 10:00 / 開演 11:00 ※日向坂46の出演時間は未定
■チケット一般発売 4月12日(金)12:00~
CircleTenThanks commented 4 months ago

https://github.com/CircleTenThanks/Hinatazaka46Calendar/commit/15c867c274838d9308ffed417150a6cc31bd92be でのテスト結果

開場 : 2024-09-07 15:00:00
開演 : 2024-09-07 17:00:00
開場 : 2024-09-08 15:00:00
開演 : 2024-09-08 17:00:00
add:2024-04-27 (イベント)【先着】日向坂46 「ひなたフェス2024」、4月28日(日)12:00よりファンクラブ先着先行販売スタート!
開場 : 2024-09-07 15:00:00
開演 : 2024-09-07 17:00:00
開場 : 2024-09-08 15:00:00
開演 : 2024-09-08 17:00:00
add:2024-04-27 (イベント)【抽選】日向坂46 「ひなたフェス2024」、4月28日(日)12:00よりファンクラブ抽選先行受付スタート!
add:2024-04-22 (イベント)「ひなたフェス2024」の【往復移動+宿泊+ライブチケット】【日帰りバス+チケット】をご紹介
add:2024-04-22 (イベント)「ひなたフェス2024」の【ライブチケット】【駐車場+ライブチケット】をご紹介
add:2024-04-22 (イベント)「ひなたフェス2024」チケット先行のご紹介
開場 : 2024-07-03 17:00:00
開演 : 2024-07-03 18:30:00
開場 : 2024-07-04 17:00:00
開演 : 2024-07-04 18:30:00
add:2024-04-19 (イベント)日向坂46 「11th Single ひなた坂46 LIVE」 ファンクラブ抽選先行受付が4月20日(土)12:00よりスタート!
add:2024-04-09 (イベント)2024年7月20日(土)「OSAKA GIGANTIC MUSIC FESTIVAL 2024」に日向坂46の出演が決定!
add:2024-04-08 (イベント)「齊藤京子卒業コンサート」と「5回目のひな誕祭」のセットリストプレイリストを公開!
 : 2024-09-07 00:00:00
 : 2024-09-08 00:00:00
add:2024-04-07 (イベント)日向坂46「ひなたフェス 2024」開催決定!
開場 : 2024-07-03 17:00:00
開演 : 2024-07-03 18:30:00
開場 : 2024-07-04 17:00:00
開演 : 2024-07-04 18:30:00
add:2024-04-06 (イベント)日向坂46「11th Single ひなた坂46 LIVE」開催決定!
add:2024-04-04 (イベント)4月5日(金)~4月7日(日)の3日間限定で、JR関内駅にて「齊藤京子卒業コンサート」「5回目のひな誕祭」の開催を記念した構内放送が決定!
add:2024-04-01 (イベント)テレビ岩手主催「CHAGU CHAGU ROCK FESTIVAL 2024」に日向坂46の出演が決定!
CircleTenThanks commented 4 months ago

https://www.hinatazaka46.com/s/official/news/detail/E00445?ima=0000

【先行受付スケジュール】
FC2次先行:5月18日(土) 12:00〜5月26日(日) 23:59
FC3次先行:6月15日(土) 12:00〜6月18日(火) 23:59
オフィシャル先行: 6月22日(土) 12:00〜6月30日(日) 23:59
ローソンチケット先行:7月4日(木) 12:00〜7月9日(火) 23:59

https://github.com/CircleTenThanks/Hinatazaka46Calendar/commit/1e32668b305d836ad97a040312c05eb4e1748b44 時点ではこうなる。

先行受付スケジュール : 2024-05-18 12:00:00
先行受付スケジュール : 2024-05-26 12:00:00
先行受付スケジュール : 2024-06-15 12:00:00
先行受付スケジュール : 2024-06-18 12:00:00
先行受付スケジュール : 2024-06-22 12:00:00
先行受付スケジュール : 2024-06-30 12:00:00
先行受付スケジュール : 2024-07-04 12:00:00
先行受付スケジュール : 2024-07-09 12:00:00