From f1670a094d79ecf15c4046375727068056a2d20d Mon Sep 17 00:00:00 2001 From: jbannon Date: Fri, 24 Jun 2022 04:33:12 +0000 Subject: [PATCH] working split video --- .../downloaders/youtube/merge_playlist.py | 13 ------------- src/ytdl_sub/downloaders/youtube/split_video.py | 3 --- src/ytdl_sub/utils/chapters.py | 17 ++++++++++++----- 3 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/ytdl_sub/downloaders/youtube/merge_playlist.py b/src/ytdl_sub/downloaders/youtube/merge_playlist.py index 89ce0b09..ce9c1a0c 100644 --- a/src/ytdl_sub/downloaders/youtube/merge_playlist.py +++ b/src/ytdl_sub/downloaders/youtube/merge_playlist.py @@ -1,23 +1,10 @@ -import copy -import os.path -import re -from pathlib import Path -from shutil import copyfile -from typing import Any from typing import Dict from typing import List -from typing import Tuple from ytdl_sub.downloaders.youtube_downloader import YoutubeDownloader from ytdl_sub.downloaders.youtube_downloader import YoutubePlaylistDownloaderOptions -from ytdl_sub.downloaders.youtube_downloader import YoutubeVideoDownloaderOptions -from ytdl_sub.entries.youtube import YoutubePlaylistVideo from ytdl_sub.entries.youtube import YoutubeVideo -from ytdl_sub.utils.exceptions import ValidationException -from ytdl_sub.utils.ffmpeg import FFMPEG -from ytdl_sub.utils.thumbnail import convert_download_thumbnail from ytdl_sub.validators.validators import BoolValidator -from ytdl_sub.validators.validators import StringValidator ############################################################################### # Youtube split video downloader + options diff --git a/src/ytdl_sub/downloaders/youtube/split_video.py b/src/ytdl_sub/downloaders/youtube/split_video.py index 9f34d4ef..909ae5a9 100644 --- a/src/ytdl_sub/downloaders/youtube/split_video.py +++ b/src/ytdl_sub/downloaders/youtube/split_video.py @@ -1,11 +1,9 @@ import copy -import os.path import re from pathlib import Path from shutil import copyfile from typing import Dict from typing import List -from typing import Tuple from ytdl_sub.downloaders.youtube_downloader import YoutubeDownloader from ytdl_sub.downloaders.youtube_downloader import YoutubeVideoDownloaderOptions @@ -13,7 +11,6 @@ from ytdl_sub.entries.youtube import YoutubePlaylistVideo from ytdl_sub.entries.youtube import YoutubeVideo from ytdl_sub.utils.chapters import Chapters from ytdl_sub.utils.chapters import Timestamp -from ytdl_sub.utils.exceptions import ValidationException from ytdl_sub.utils.ffmpeg import FFMPEG from ytdl_sub.utils.thumbnail import convert_download_thumbnail from ytdl_sub.validators.validators import StringValidator diff --git a/src/ytdl_sub/utils/chapters.py b/src/ytdl_sub/utils/chapters.py index 8a4b7b35..2dff1c9a 100644 --- a/src/ytdl_sub/utils/chapters.py +++ b/src/ytdl_sub/utils/chapters.py @@ -90,16 +90,23 @@ class Chapters: Represents a list of (timestamps, titles) """ - def __init__(self, timestamps: List[Timestamp], titles: List[str], duration: Timestamp): + def __init__( + self, + timestamps: List[Timestamp], + titles: List[str], + ): self.timestamps = timestamps self.titles = titles - self.duration = duration + + for idx in range(len(timestamps) - 1): + if timestamps[idx].timestamp_sec >= timestamps[idx + 1].timestamp_sec: + raise ValueError("Timestamps must be in ascending order") def contains_zero_timestamp(self) -> bool: return self.timestamps[0].timestamp_sec == 0 @classmethod - def from_file(cls, chapters_file_path: str, duration: Timestamp) -> "Chapters": + def from_file(cls, chapters_file_path: str) -> "Chapters": if not os.path.isfile(chapters_file_path): raise ValidationException( f"chapter/timestamp file path '{chapters_file_path}' does not exist." @@ -112,7 +119,7 @@ class Chapters: titles: List[str] = [] for idx, line in enumerate(lines): - line_split = line.lstrip().split(maxsplit=1) + line_split = line.strip().split(maxsplit=1) # Allow the last line to be blank if idx == len(lines) - 1 and not line.strip(): @@ -129,4 +136,4 @@ class Chapters: timestamps.append(Timestamp.from_str(timestamp_str)) titles.append(title) - return cls(timestamps=timestamps, titles=titles, duration=duration) + return cls(timestamps=timestamps, titles=titles)