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

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

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

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

# python
# Dimora
# DIGA
# ONLINE Backup

にゃあw 3部作・・・


# ==============================
# ==== Dimora 録画番組処理
# ==== Step 2 csv to Excel
# 2026/09/02 22:08:25
# 【Gemini】様
# エラーなく正常に動作しているとのこと、素晴らしいです!
# コード全体の流れや記述は非常に丁寧で分かりやすく書かれています。
# さらに**処理速度の向上・予期せぬエラー(警告)の防止・メンテナンス性の改善**の観点から、修正・改善したほうが良いポイントをいくつか提案させていただきます。


# ==========================================================
# 1. ライブラリの読み込み(一番上におく!)
# ==========================================================
import os
import numpy as np
import pandas as pd
# ==========================================================
# 3. カレントディレクトリの変更 ★絶対死守★
# ==========================================================
script_dir = os.path.dirname(os.path.abspath(__file__))
os.chdir(script_dir)
print(f"Current directory: {os.getcwd()}")

# ==========================================
# 設定パラメータ(ここだけ書き換える!)
# ==========================================
MODE = 1  # 2: 本体 / 2: USB-1 / 3: USB-2

# 共通パラメータ
INPUT_FILE = "UTF-RecList-Replace済.csv"
SORT_KEY = "ジャンル"

# モードに応じた自動分岐(辞書マッピング)
CONFIG_MAP = {
    1: {"key": "本体", "file": "UTF-2W101-本体-ONLY-SORT.xlsx"},
    2: {"key": "USB-1", "file": "UTF-2W101-USB-1-ONLY-SORT.xlsx"},
    3: {"key": "USB-2", "file": "UTF-2W101-USB-2-ONLY-SORT.xlsx"},
}

# 選択された設定を取得
config = CONFIG_MAP.get(MODE)

if config:
    OUTPUT_KEY = config["key"]
    OUTPUT_FILE = config["file"]
else:
    raise ValueError("無効なMODEが設定されています。1〜3を指定してください。")
# ==============================


# 表示設定
pd.set_option("display.max_columns", None)
pd.set_option("display.max_rows", 2000)

# CSV読み込み
df_hdd = pd.read_csv(INPUT_FILE, encoding="utf-8")

# INDEX 番号1始まり(※Excel出力時に index=False にする場合は画面表示時のみ効果を発揮します)
df_hdd.index = df_hdd.index + 1

# ==== 列追加
# assignを使えばまとめてすっきり追加できます
new_cols = ["頁", "行", "収録時間", "MODE-2", "検索ワード", "MB"]
for col in new_cols:
    df_hdd[col] = np.nan

# ==== 不要列削除 & 抽出・並び替え
df_dell = df_hdd.drop(columns=["DMR-", "視聴/未"])

# 録画先でフィルタリングを先に行う(エラー・警告防止)
df_filtered = df_dell[df_dell["録画先"] == OUTPUT_KEY]

# ソート処理
df_sort = df_filtered.sort_values(by=SORT_KEY)  # 昇順

# 最終的に残したい列を指定して抽出
output_columns = [
    "放送開始日時",
    "放送局名称",
    "番組タイトル_番組タイトル",
    "頁",
    "行",
    "収録時間",
    "MODE",
    "検索ワード",
    "分",
    "ジャンル",
    "録画先",
    "MODE-2",
    "MB",
]

output_df = df_sort[output_columns]

# Excel出力(encoding引数は不要 / index=Falseで1始まりインデックスは出力されません)
output_df.to_excel(OUTPUT_FILE, index=False)
print("Excel出力が完了しました!")

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