DISNEY-4K-SCRIPT/pydisney/namehelper.py

80 lines
2.5 KiB
Python

import logging, os, re, subprocess, sys
from pymediainfo import MediaInfo
__LOGGER__ = logging.getLogger(__name__)
def rename(file, source, group):
base_name = file
name = os.path.splitext(os.path.basename(file))[0]
directory_name = os.path.dirname(file)
media_info = MediaInfo.parse(file)
for track in media_info.tracks:
if track.track_type == 'Video':
if int(track.width) == 1280 or int(track.height) == 720: resolution = '720p'
elif int(track.width) == 1920 or int(track.height) == 1080: resolution = '1080p'
else:
if int(track.height) > 600:
resolution = '{}p'.format(track.height)
else:
resolution = None
if track.format == "AVC":
if track.encoding_settings: codec = "x264"
else:codec = "H.264"
elif track.format == "HEVC":
if track.encoding_settings: codec = "x265"
else:codec = "H.265"
if 'Main 10@L5' in track.format_profile:
hdr = True
else:
hdr = None
try:
track = [track for track in media_info.tracks if track.track_type == "Audio"][0]
except IndexError:
track = track
if track.track_type == 'Audio':
if track.format == "E-AC-3":
audioCodec = "DDP"
elif track.format == "AC-3":
audioCodec = "DD"
elif track.format == "AAC":
audioCodec = "AAC"
elif track.format == "DTS":
audioCodec = "DTS"
elif "DTS" in track.format:
audioCodec = "DTS"
else:
print("No Audio Root Found: {}".format(track.format))
audioCodec = None
if track.channel_s == 6:
if "Atmos" in track.commercial_name:
channels = '5.1.Atmos'
else:
channels = "5.1"
elif track.channel_s == 2: channels = "2.0"
elif track.channel_s == 1: channels = "1.0"
else:
print("No Audio Channel Found: {}".format(track.channel_s))
channels = None
name = name.replace(" ", ".").replace("'", "").replace(',', '')
if hdr is not None:
name = '{}.{}.{}.WEB-DL.HDR.{}{}.{}-{}'.format(
name, resolution, source, audioCodec, channels, codec, group).replace('.-.', '.')
else:
if resolution is None:
name = '{}.{}.WEB-DL.{}{}.{}-{}'.format(
name, source, audioCodec, channels, codec, group).replace('.-.', '.')
else:
name = '{}.{}.{}.WEB-DL.{}{}.{}-{}'.format(
name, resolution, source, audioCodec, channels, codec, group).replace('.-.', '.')
name = re.sub(r'(\.\.)', '.', name)
filename = '{}.mkv'.format(os.path.join(directory_name, name))
if os.path.exists(filename): os.remove(filename)
os.rename(base_name, filename)