60歳を迎えて、思うこと。 -37ページ目

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

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

雑学としての DVD形式

ぶんぶん
すかすか


DVD-Video規格の解像度ルール

DVD-Videoで使える解像度は複数あります:  

  720×480(フルD1)  

  704×480(ほぼ同じだが端を削ったD1)  

  352×480(ハーフD1)  

  352×240(SIF)  

つまり、LPやEPモードで録画された映像は「ハーフD1」や「SIF」として保存されている。  

じじぃ~



 

すぴ~かぁ~ こける

ぴ~こ
ぴ~こ

サブPC



すぴ~かぁ~



こけるこけるこける

なぜ???

よし!

頑丈な

すぴ~かぁ~

スタンドを

製作

しよう・・・

が!

金は ない!

じじぃ~

Dimora to xlsx (4)

ぶるれこ様の

データを
なるべく

手間を かけないで!

xlsxで 読み込めるようにする

以前も 作ったけど・・・

ぜんめんりにゅ~ある である

製作:Microsoft Copilot様

OnLineBackUp で ありんす♪

# ==== xlsx to openpyxl to ods 変!


from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment
from openpyxl.worksheet.page import PageMargins

# === 定数 ===
INPUT_FILE = r"F:\_pypy\DIGA\COPY\recList-USB.xlsx"
OUTPUT_FILE = r"F:\_pypy\DIGA\COPY\recList-USB-styled.xlsx"

# Excelファイルを読み込み
wb = load_workbook(INPUT_FILE)
ws = wb.active

# --- 列幅を辞書形式で指定 ---
col_widths = {
    "A": 17,
    "B": 12,
    "C": 66,
    "D": 5,
    "E": 4,
    "F": 8,
    "G": 6,
    "H": 10,
    "I": 3,
    "J": 6,
}
for col, width in col_widths.items():
    ws.column_dimensions[col].width = width

# --- タイトル行のスタイル ---
title_font = Font(name="00コミック7", size=10, bold=True, color="000000")
title_fill = PatternFill(start_color="FFFF99", end_color="FFFF99", fill_type="solid")  # 薄い黄色
thin_border = Border(
    left=Side(style="thin"),
    right=Side(style="thin"),
    top=Side(style="thin"),
    bottom=Side(style="thin")
)

for cell in ws[1]:  # 1行目(タイトル行)
    cell.font = title_font
    cell.fill = title_fill
    cell.border = thin_border
    cell.alignment = Alignment(horizontal="center", vertical="center")

# --- データ行のフォント指定(列ごとに異なる) ---
for row in ws.iter_rows(min_row=2, max_row=ws.max_row):
    row[0].font = Font(name="Times New Roman", size=12, bold=True)       # 列A
    row[1].font = Font(name="Times New Roman", size=12, bold=True)       # 列B
    row[2].font = Font(name="木漏れ日ゴシック", size=12, bold=True)        # 列C
    row[3].font = Font(name="Times New Roman", size=12, bold=True)       # 列D
    row[4].font = Font(name="Times New Roman", size=12, bold=True)       # 列E
    row[5].font = Font(name="Times New Roman", size=12, bold=True)       # 列F
    row[6].font = Font(name="Times New Roman", size=12, bold=True)       # 列G
    row[7].font = Font(name="Times New Roman", size=10, bold=False)      # 列H
    row[8].font = Font(name="Times New Roman", size=6, bold=False)      # 列I
    row[9].font = Font(name="Times New Roman", size=6, bold=False)      # 列J
    
    # 罫線を全セルに適用
    for cell in row:
        cell.border = thin_border

# --- セルの書式設定例 ---
for row in ws.iter_rows(min_row=2, max_row=ws.max_row):
    # 分(整数+3桁区切り)
    row[3].number_format = "#,##0"
    # 放送開始日時(h:mm)
    row[1].number_format = "h:mm"
    # 通貨列がある場合(例: 列J)
    # row[9].number_format = "¥#,##0"

# --- 印刷設定 ---
ws.page_setup.paperSize = ws.PAPERSIZE_A4
ws.page_setup.orientation = ws.ORIENTATION_LANDSCAPE
ws.page_margins = PageMargins(left=0.25, right=0.25, top=0.25, bottom=0.25)

# 保存
wb.save(OUTPUT_FILE)
print(f"整形完了: {OUTPUT_FILE}")


## ✅ このコードのポイント
# - **列幅**:辞書形式で管理 → `col_widths` に列と幅をまとめて指定  
# - **タイトル行**:フォント「00コミック7」、背景色「薄い黄色」、罫線+中央揃え  
# - **データ行**:列ごとにフォントを変える(Times New Roman、木漏れ日ゴシックなど)  
# - **セル書式**:数値は `#,##0`、時間は `h:mm`、通貨は `¥#,##0`  
# - **印刷設定**:A4横向き、余白最小  

# これで「見た目だけ整える」処理が一通り可能になります。  
# 👉 次のステップとしては「条件付き書式(例:未視聴なら背景色を変える)」を追加することもできますが、
# まずはこの基本スタイルで試してみますか?

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

 

Dimora to xlsx (3)

ぶるれこ様の

データを
なるべく

手間を かけないで!

xlsxで 読み込めるようにする

以前も 作ったけど・・・

ぜんめんりにゅ~ある である

製作:Microsoft Copilot様

OnLineBackUp で ありんす♪

# ==== csv to pandas to xlsx 変!


# 2. 「録画先」列をチェックして **本体** と **USB-HDD** に分ける  
# 3. それぞれを Excel (`.xlsx`) に出力  
#    - 本体 → `recList-本体.xlsx`  
#    - USB-HDD → `recList-USB.xlsx`  
# 4. タイトル行(カラム名)は両方のファイルに必ず含める  
# 5. 出力形式は UTF-8 → Excel形式(openpyxlで後処理可能)

## 📂 完成版コード例:`3-reclist_pandas_xlsx.py`

import pandas as pd
import os

# === 定数 ===
BASE_DIR = r"F:\_pypy\DIGA\COPY"
INPUT_FILE = os.path.join(BASE_DIR, "recList.csv")

OUTPUT_FILE_MAIN = os.path.join(BASE_DIR, "recList-本体.xlsx")
OUTPUT_FILE_USB  = os.path.join(BASE_DIR, "recList-USB.xlsx")

def split_and_export(input_file, output_main, output_usb):
    try:
        # CSV読み込み(カラム行あり)
        df = pd.read_csv(input_file, encoding="utf-8")

# ==== ここから
        # 列の削除: 複数列を削除する場合は drop を使用
        df = df.drop(columns=["DMR-", "視聴/未"])

        # 列の挿入: insert を使う(位置を指定して1列ずつ)
        # 例: 先頭に「行」列を追加(値は空文字)
        df.insert(0, "行", "")
        df.insert(1, "頁", "")
        df.insert(2, "時間", "")
        df.insert(3, "ももんが", "")

        # 列の並べ替え: DataFrame の列をリストで再指定
        df = df[[
            "□放送開始日時□",
            "□放送局□",
            "☆番組タイトル☆",
            "行", "頁", "分", "時間", "MODE", "ジャンル", "録画先"
        ]]

# ==== ここまで
                # 「録画先」が本体の行を抽出
        df_main = df[df["録画先"] == "本体"].copy()
        # 連番付与(1から開始)
        df_main["行"] = range(1, len(df_main) + 1)
        # 「頁」列を数値形式で 1 で埋める
        df_main["頁"] = 1

        # 「録画先」がUSB-HDDの行を抽出
        df_usb = df[df["録画先"] == "USB-HDD"].copy()
        # 連番付与(1から開始)
        df_usb["行"] = range(1, len(df_usb) + 1)
        # 「頁」列を数値形式で 1 で埋める
        df_usb["頁"] = 1

        # 列の並べ替え(存在する列だけを安全に並べ替え)
        desired_cols = [
            "□放送開始日時□",
            "□放送局□",
            "☆番組タイトル☆",
            "行", "頁", "時間", "MODE", "ジャンル",  "分", "録画先"
        ]
        df_main = df_main[[c for c in desired_cols if c in df_main.columns]]
        df_usb  = df_usb [[c for c in desired_cols if c in df_usb.columns]]

        
        
        # Excel出力(タイトル行=カラム名を含む)
        if not df_main.empty:
            df_main.to_excel(output_main, index=False, engine="openpyxl")
            print(f"出力完了: {output_main}")
        else:
            print("本体データがありません")

        if not df_usb.empty:
            df_usb.to_excel(output_usb, index=False, engine="openpyxl")
            print(f"出力完了: {output_usb}")
        else:
            print("USB-HDDデータがありません")

    except FileNotFoundError:
        print(f"入力ファイルが見つかりません: {input_file}")
    except Exception as e:
        print(f"エラー発生: {e}")

if __name__ == "__main__":
    split_and_export(INPUT_FILE, OUTPUT_FILE_MAIN, OUTPUT_FILE_USB)

## ✅ このスクリプトの動き
# - `recList.csv` を pandas で読み込む  
# - 「録画先」列を基準にフィルタリング  
# - 本体用とUSB用に分けて `.xlsx` 出力  
# - 出力ファイルには必ずカラム行(タイトル行)が含まれる  

# これで **第三弾の仕様**は完成です!  
# 👉 次のステップでは、openpyxlを使って「セルの書式設定」や「シートの加工」も可能になります。  
# 試しにこのコードを走らせてみますか?

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

 

Dimora to xlsx (2)

ぶるれこ様の

データを
なるべく

手間を かけないで!

xlsxで 読み込めるようにする

以前も 作ったけど・・・

ぜんめんりにゅ~ある である

製作:Microsoft Copilot様

OnLineBackUp で ありんす♪

# ==== tsv to csv & replace 変!


import os

# === 定数 ===
BASE_DIR = r"F:\_pypy\DIGA\COPY"
TSV_FILE = os.path.join(BASE_DIR, "recList.tsv")
OUTPUT_FILE = os.path.join(BASE_DIR, "recList.csv")

# 置換ルール(例)
REPLACEMENTS = {
    "録画時間 (分)": "分",
    "録画モード": "MODE",
    "未視聴": "未",
    "放送局名": "□放送局□",
    "放送開始日時": "□放送開始日時□",
(中略)
    "15倍録": "x15",
    "10倍録": "x10",
    "8倍録": "x8",
    "4倍録": "x4",
    "3倍録": "x3",
    "1.5倍録": "x1.5",
}

def replace_strings(text: str, replacements: dict) -> str:
    """文字列置換をまとめて実施"""
    for old, new in replacements.items():
        text = text.replace(old, new)
    return text

def tsv_to_csv(tsv_path: str, csv_path: str, replacements: dict):
    """TSVを読み込み、置換してCSVに保存"""
    try:
        with open(tsv_path, "r", encoding="utf-8") as f:
            content = f.read()
        
        # 文字列置換
        replaced = replace_strings(content, replacements)
        
        # TSV → CSV(タブをカンマに変換)
        csv_content = replaced.replace("\t", ",")
        
        # 出力
        with open(csv_path, "w", encoding="utf-8", newline="") as f:
            f.write(csv_content)
        
        print(f"変換完了: {tsv_path} → {csv_path}")
    
    except FileNotFoundError:
        print(f"ファイルが見つかりません: {tsv_path}")
    except Exception as e:
        print(f"エラー発生: {e}")

if __name__ == "__main__":
    tsv_to_csv(TSV_FILE, OUTPUT_FILE, REPLACEMENTS)




## ✅ このスクリプトの動き
# 1. `F:\_pypy\DIGA\COPY\recList.tsv` を読み込む  
# 2. `REPLACEMENTS` に従って文字列を一括置換  
# 3. タブ区切りをカンマ区切りに変換  
# 4. `recList.csv` としてUTF-8で保存  

# 💡 ポイント  
# - 置換ルールは `REPLACEMENTS` にどんどん追加できます  
# - TSVのタブ区切りをそのままカンマに変換しているので、Excelなどで開くとCSVとして認識されます  
# - 出力ファイルは **同じフォルダに `recList.csv`** が生成されます  
# これで「第2弾」仕様は完成です!  
# 👉 次のステップとしては、置換ルール(大量にあるとのこと)を別ファイルにまとめて管理する方法も便利ですが、まずはこの形で動かしてみますか?

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