Skip to content

Instantly share code, notes, and snippets.

@tsukumijima
Created July 22, 2020 22:17
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tsukumijima/bc1d9988b2a9b3edeced7be39d47449c to your computer and use it in GitHub Desktop.
Save tsukumijima/bc1d9988b2a9b3edeced7be39d47449c to your computer and use it in GitHub Desktop.
TVTest で取得した局ロゴを (ONID)(SID).bmp のようなファイル名にリネームするツール
# TVTest で取得した局ロゴを (ONID)(SID).bmp のようなファイル名にリネームするツール
import os
import glob
import shutil
import configparser
# ********** 設定 **********
# 局ロゴ (BMP 形式) が入っているフォルダ
tvtest_logo_folder = 'C:/DTV/TVTest/Logo'
# 局ロゴに紐付いている LogoData.ini の場所
tvtest_logo_ini = 'C:/DTV/TVTest/LogoData.ini'
# リネームした局ロゴの出力先フォルダ
tvtest_logo_output = 'C:/DTV/TVTest/Logo_Rename'
# ********** 設定ここまで **********
# 改行
print()
# 出力先フォルダがなければ作成
os.makedirs(tvtest_logo_output, exist_ok = True)
# LogoData.ini を読み込み
logoidmap = configparser.ConfigParser()
logoidmap.read(tvtest_logo_ini, 'UTF-8')
# 一行ごとに繰り返し
for onidsid, logoid in logoidmap['LogoIDMap'].items():
# 16 進数の ONID
onid_hex = onidsid[:4].upper()
# 10 進数の ONID
onid = int(onid_hex, 16)
# 16 進数の SID
sid_hex = onidsid[4:].upper()
# 10 進数の SID
sid = int(sid_hex, 16)
# 16 進数の LogoID
logoid_hex = str(hex(int(logoid))) # logoid を int にしてから 16 進数に変換してから str に戻す
logoid_hex = logoid_hex.replace('0x', '').upper().zfill(3) # 0x を削除して大文字に揃えてゼロパディング
print('ONID: ' + str(onid) + ' SID: ' + str(sid) + ' LogoID: ' + logoid)
print('ONID_hex: ' + str(onid_hex) + ' SID_hex: ' + str(sid_hex) + ' LogoID_hex: ' + logoid_hex)
# 取得した ONID と LogoID をもとに局ロゴ画像を検索
logolist = glob.glob(tvtest_logo_folder + '/' + onid_hex + '_' + logoid_hex + '_???_??.bmp')
# 局ロゴタイプごとに
for logoindex, logopath in enumerate(logolist):
# 局ロゴのファイル名
logo = os.path.basename(logopath)
# 局ロゴバージョン
logoversion = str(logo[9:12])
# 局ロゴタイプ (00~05)
logotype = str(logo[13:15])
print(' Logo: ' + logo + ' Version: ' + logoversion + ' Type: ' + logotype)
# 局ロゴタイプが 05 (画像サイズが 64x36) or 同じ局で最後の局ロゴならコピーを実行
if logotype == '05' or logoindex == (len(logolist) - 1):
# コピーを実行
shutil.copyfile(logopath, tvtest_logo_output + '/' + onid_hex + sid_hex + '.bmp')
print(' From: ' + logo + ' Saved: ' + onid_hex + sid_hex + '.bmp')
# 改行
print()
# 終了
print('done.', end = '\n\n')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment