80 lines
2.5 KiB
Python
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)
|