python Dimoraデータ整理 2026-09-10-1 | 60歳を迎えて、思うこと。

60歳を迎えて、思うこと。

いつの間にか、「60」という年月が経ちました。
残り少ないか多いか?わかりませんが。
じじぃ~の「ひとりごと」を細々と続けられれば。。。

python Dimoraデータ整理 2026-09-10-1

# python
# Dimora
# DIGA
# ONLINE Backup

にゃあw 3部作・・・


# ==============================
# ==== Dimoraデータ
# ==== TSV replace CSV
# ==== 【Gemini】様
# ==== 2026/09/01 08:38:51

# ==========================================================
# 1. ライブラリの読み込み(一番上におく!)
# ==========================================================
import os
import re
# ==========================================================
# 2. 設定値・定数(大文字で書くのがPythonの慣習)
# ==========================================================
INPUT_FILE = "recList-2026.tsv"
OUTPUT_FILE = "UTF-RecList-Replace済.csv"
USB_SELECT = "USB-2"

# ==========================================================
# 3. カレントディレクトリの変更 ★絶対死守★
# ==========================================================
script_dir = os.path.dirname(os.path.abspath(__file__))
os.chdir(script_dir)
print(f"Current directory: {os.getcwd()}")

# ==========================================================
# 処理対象ファイルの読み込み
# ==========================================================
# input_file = "recList-2026.tsv"
# output_file = "UTF-RecList-Replace済.csv"

with open(INPUT_FILE, "r", encoding="UTF-8") as f:
    s = f.read()
# ==========================================================
# 前処理 (TSV -> CSV 変換準備 & openpyxlバグ回避)
# ==========================================================
s = s.replace(",", ",")       # 本文内の半角カンマを全角に退避
s = s.replace("\t", ",")       # TSVのタブをカンマに変換
s = s.replace("0:00", "0:01")  # 時間のバグ回避

# 連続する不要なカンマの削除
while ",," in s:
    s = s.replace(",,", ",")

# ==========================================================
# 正規表現によるチャンネル表記・文字化け(?記号)の一括変換
# ==========================================================
# ① 地デジ・地上D・BS・CSの「?」や「_」を半角スペースに統一(例: CS2?345 -> CS2 345, BS_103 -> BS 103)
s = re.sub(r'(地上D|地デジ|BS|CS1|CS2)[?_](\d+)', r'\1 \2', s)

# ② 「地上D 011」や「地デジ 011」などをすべて「地D 011」表記に統一
s = re.sub(r'(地上D|地デジ) (\d+)', r'地D \2', s)

# ==========================================================
# 個別文字列置換ルール一覧
# ==========================================================
replace_dict = {
    # 状態・ヘッダー項目
    "機器名称": "DMR-",
    "視聴/未視聴": "視聴",
    "視聴済": "済",
    "視聴済み": "視聴済",
    "未視聴": "未",
    "放送局名": "放送局名称",
    "ジャンル": "ジャンル",
    "録画モード": "MODE",
    "録画時間 (分)": "分",
    "タイトル": "番組タイトル_番組タイトル",

    # 機種・機器情報
    "DMR-2W101": "2W101",
    "DMR-BRZ1020": "BRZ1020",
    "内蔵HDD": "本体",
    # "USB-HDD": "USB-1",
    "USB-HDD": (USB_SELECT),

    # 番組情報表記
    "<スタンダードサイズ>": "[S]",
    "<レターボックスサイズ>": "[L]",
    "<字幕・レターボックスサイズ>": "[字][L}",
    "<字幕スーパー>": "[字]",
    "[字]所さんの世田谷ベ―ス ": "世田谷ベ―ス",
    "BSニュース": "BSニュース",
    "World+Biz": "Word+Biz",
    "ワイルドライフ「": "ワ「",
    "深層NEWS": "深層NEWS",
    "[字]報道1930▼": "報道1930▽",
    "[字]報道1930": "報道1930▽",

    # 録画モード
    "1.5倍録": "x1.5",
    "10倍録": "x10",
    "15倍録": "x15",
    "3倍録": "x3",
    "4倍録": "x4",
    "5倍録": "x5",
    "8倍録": "x8",

    # 放送局名(個別表記統一)
    "NHK BS": "NHK-BS",
    "BS松竹東急": "BS松竹東急",
    "BSテレ東": "BSテレ東",
    "フジテレビ": "フジテレビ",
    "テレビ東京1": "テレビ東京1",
    "テレビ朝日": "テレビ朝日",
    "スペシャプラス": "スペシャプラス",
    "スターチャンネル2": "スターチャンネル2",
    "スターチャンネル1": "スターチャンネル1",
    "エムオン!": "M-ON",
    "アニメ/特撮": "アニメ特撮",
    "WOWOWプライム": "WOWOWプライム",
    "TOKYO MX2": "TOKYO MX2",
    "TOKYO MX1": "東京MX",
    "TOKYO MX1": "東京MX",
    "NHK総合1・東京": "NHK総合",
    "NHKEテレ1東京": "NHKEテレ",
    "NHKBSプレミアム": "BSプレミアム",
    "BSフジ・181": "BSフジ",
    "BS11イレブン": "BS11イレブン",
    "BS103": "BS 103",

    # ジャンル
    "演劇/公演": "演劇",
    "ドキュメンタリー/教養": "ドキュ教養",
    "趣味/教育": "趣味教育",
    "ニュース/報道": "報道",
    "バラエティ": "バラエティ",
    "情報/ワイドショー": "ワイドショー",
}

# 辞書ループによる置換実行
for old_str, new_str in replace_dict.items():
    s = s.replace(old_str, new_str)

# ==========================================================
# UTF-8 で CSV 出力
# ==========================================================
with open(OUTPUT_FILE, "w", encoding="UTF-8") as f:
    f.write(s)

print("処理が完了しました。")

# ==============================