Created
July 22, 2020 22:17
-
-
Save tsukumijima/bc1d9988b2a9b3edeced7be39d47449c to your computer and use it in GitHub Desktop.
TVTest で取得した局ロゴを (ONID)(SID).bmp のようなファイル名にリネームするツール
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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