Compare commits

..

No commits in common. '288d00d6491f5699b9280a587002e7c113da2f91' and '0526512cb710a75739f92e02dfb08f3ff6104d72' have entirely different histories.

@ -32,7 +32,6 @@ for dir, dirs, files in os.walk(str(Config.BASE_PATH)):
print(relative_path / file, end=" ") print(relative_path / file, end=" ")
item = QueueItem(Path(dir) / file, Config.DESTINATION_PATH / relative_path) item = QueueItem(Path(dir) / file, Config.DESTINATION_PATH / relative_path)
if not Config.OVERWRITE and item.task.destination.exists(): if not Config.OVERWRITE and item.task.destination.exists():
print(" ... skip existing")
continue continue
info = item.task.mediainfo info = item.task.mediainfo
if info.codec == 'HEVC': if info.codec == 'HEVC':
@ -41,8 +40,8 @@ for dir, dirs, files in os.walk(str(Config.BASE_PATH)):
if info.bitrate < Config.LOW_BITRATE_THRESHOLD: if info.bitrate < Config.LOW_BITRATE_THRESHOLD:
print("") print("")
continue continue
item.task.destination.parent.mkdir(exist_ok=True, parents=True) item.task.destination.parent.mkdir(exist_ok=True)
print(" ... ADDED") print(" ... added")
jobs.append(item) jobs.append(item)
with open(Config.QUEUE_FILE, "w") as fp: with open(Config.QUEUE_FILE, "w") as fp:

@ -63,31 +63,17 @@ class AudioInfo:
class MenuItem: class MenuItem:
TIME_RE = re.compile(r"(\d{2})[^\d]+(\d{2})[^\d]+(\d{2})(?:[^\d]+(\d+))")
def __init__(self, *, start: str, duration: str, name: str): def __init__(self, *, start: str, duration: str, name: str):
self.start = start self.start = start
self.duration = duration self.duration = duration
self.name = name self.name = name
@property
def str_start(self) -> timedelta:
match = self.TIME_RE.search(self.start)
hours, minutes, seconds, millis = tuple(map(int, (match.group(i + 1) for i in range(4))))
return timedelta(hours=hours, minutes=minutes, seconds=seconds, milliseconds=millis)
def __str__(self) -> str:
return f"'{self.name}' at {self.str_start}, duration {self.duration}"
def __repr__(self) -> str:
return f"<MenuItem '{self.name}' at {self.start}, duration {self.duration}>"
class MenuInfo: class MenuInfo:
REGEX = re.compile(r"^_\d{2}_\d{2}_\d{2}") REGEX = re.compile(r"^_\d{2}_\d{2}_\d{2}")
def __init__(self, menu_dict: Dict[str, str], duration: str = None): def __init__(self, menu_dict: Dict[str, str]):
self.data = menu_dict self.data = menu_dict
self.duration: Optional[float] = timeparse(duration) if duration else None
@property @property
def items(self) -> List[MenuItem]: def items(self) -> List[MenuItem]:
@ -114,7 +100,7 @@ class MenuInfo:
result[-1].duration = duration result[-1].duration = duration
result.append(MenuItem(start=key, duration="", name=name)) result.append(MenuItem(start=key, duration="", name=name))
if result: if result:
td = timedelta(seconds=float(self.data.get("Duration", self.duration))) td = timedelta(seconds=float(self.data["Duration"]))
dur_td = timedelta(seconds=round((td - td0).total_seconds())) dur_td = timedelta(seconds=round((td - td0).total_seconds()))
duration = str(dur_td) duration = str(dur_td)
duration = f"{duration:0>8}" duration = f"{duration:0>8}"
@ -241,4 +227,4 @@ class MediaInfo:
@property @property
def menu(self) -> MenuInfo: def menu(self) -> MenuInfo:
return MenuInfo(self.menu_data or { self.duration: "Chapter 1" }, duration=self.duration) return MenuInfo(self.menu_data or { self.duration: "Chapter 1" })

Loading…
Cancel
Save