Merge branch 'master' into j/unstructured
This commit is contained in:
commit
5184113121
50 changed files with 208 additions and 99 deletions
|
|
@ -716,7 +716,7 @@ to_native_filepath
|
|||
:spec: ``to_native_filepath(filepath: String) -> String``
|
||||
|
||||
Convert any unix-based path separators ('/') with the OS's native
|
||||
separator.
|
||||
separator. In addition, expand ~ to absolute directories.
|
||||
|
||||
truncate_filepath_if_too_long
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ classifiers = [
|
|||
"Programming Language :: Python :: 3.11",
|
||||
]
|
||||
dependencies = [
|
||||
"yt-dlp==2024.04.09",
|
||||
"yt-dlp==2024.5.27",
|
||||
"colorama~=0.4",
|
||||
"mergedeep~=1.3",
|
||||
"mediafile~=0.12",
|
||||
|
|
@ -49,7 +49,7 @@ test = [
|
|||
lint = [
|
||||
"black==24.4.2",
|
||||
"isort==5.13.2",
|
||||
"pylint==3.1.0",
|
||||
"pylint==3.2.2",
|
||||
]
|
||||
docs = [
|
||||
"sphinx~=7.0",
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
import os
|
||||
import posixpath
|
||||
from typing import Any
|
||||
from typing import Dict
|
||||
from typing import Optional
|
||||
|
|
@ -147,7 +149,8 @@ class ConfigOptions(StrictDictValidator):
|
|||
The directory to temporarily store downloaded files before moving them into their final
|
||||
directory. Defaults to .ytdl-sub-working-directory
|
||||
"""
|
||||
return self._working_directory.value
|
||||
# Expands tildas to actual paths, use native os sep
|
||||
return os.path.expanduser(self._working_directory.value.replace(posixpath.sep, os.sep))
|
||||
|
||||
@property
|
||||
def umask(self) -> Optional[str]:
|
||||
|
|
|
|||
|
|
@ -36,9 +36,9 @@ class CustomFunctions:
|
|||
def to_native_filepath(filepath: String) -> String:
|
||||
"""
|
||||
Convert any unix-based path separators ('/') with the OS's native
|
||||
separator.
|
||||
separator. In addition, expand ~ to absolute directories.
|
||||
"""
|
||||
return String(filepath.value.replace(posixpath.sep, os.sep))
|
||||
return String(os.path.expanduser(filepath.value.replace(posixpath.sep, os.sep)))
|
||||
|
||||
@staticmethod
|
||||
def truncate_filepath_if_too_long(filepath: String) -> String:
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ presets:
|
|||
output_directory: "{music_video_directory}"
|
||||
file_name: "{music_video_file_name}.{ext}"
|
||||
thumbnail_name: "{music_video_file_name}.jpg"
|
||||
info_json_name: "{music_video_file_name}.{info_json_ext}"
|
||||
maintain_download_archive: True
|
||||
|
||||
ytdl_options:
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ class SubscriptionDownload(BaseSubscription, ABC):
|
|||
)
|
||||
|
||||
self.download_archive.save_download_mappings()
|
||||
FileHandler.delete(self.download_archive.working_file_path)
|
||||
FileHandler.delete(self.download_archive.working_ytdl_file_path)
|
||||
|
||||
@contextlib.contextmanager
|
||||
def _remove_empty_directories_in_output_directory(self):
|
||||
|
|
|
|||
|
|
@ -89,7 +89,9 @@ class SubscriptionYTDLOptions:
|
|||
ytdl_options = {}
|
||||
|
||||
if self._preset.output_options.maintain_download_archive:
|
||||
ytdl_options["download_archive"] = self._enhanced_download_archive.working_file_path
|
||||
ytdl_options["download_archive"] = (
|
||||
self._enhanced_download_archive.working_ytdl_file_path
|
||||
)
|
||||
if self._preset.output_options.keep_max_files:
|
||||
keep_max_files = int(
|
||||
self._overrides.apply_formatter(self._preset.output_options.keep_max_files)
|
||||
|
|
|
|||
|
|
@ -385,7 +385,11 @@ class FileHandler:
|
|||
dst_file_path
|
||||
Destination file
|
||||
"""
|
||||
shutil.copyfile(src=src_file_path, dst=dst_file_path)
|
||||
# Perform the copy by first writing to a temp file, then moving it.
|
||||
# This tries to prevent corrupted writes if the processed dies mid-write,
|
||||
atomic_dst = f"{dst_file_path}-ytdl-sub-incomplete"
|
||||
shutil.copyfile(src=src_file_path, dst=atomic_dst)
|
||||
shutil.move(src=atomic_dst, dst=dst_file_path)
|
||||
|
||||
@classmethod
|
||||
def move(cls, src_file_path: Union[str, Path], dst_file_path: Union[str, Path]):
|
||||
|
|
|
|||
|
|
@ -72,8 +72,7 @@ def download_and_convert_url_thumbnail(
|
|||
if not thumbnail_url:
|
||||
return None
|
||||
|
||||
# timeout after 8 seconds
|
||||
with urlopen(thumbnail_url, timeout=1.0) as file:
|
||||
with urlopen(thumbnail_url, timeout=7.0) as file:
|
||||
with tempfile.NamedTemporaryFile(delete=False) as thumbnail:
|
||||
thumbnail.write(file.read())
|
||||
|
||||
|
|
|
|||
|
|
@ -506,10 +506,19 @@ class EnhancedDownloadArchive:
|
|||
"""
|
||||
Returns
|
||||
-------
|
||||
The download mapping's file path in the working directory.
|
||||
The download mapping's file path in the working directory for ytdl usage
|
||||
"""
|
||||
return str(Path(self.working_directory) / self.file_name)
|
||||
|
||||
@property
|
||||
def working_ytdl_file_path(self) -> str:
|
||||
"""
|
||||
Returns
|
||||
-------
|
||||
The download mapping's file path in the working directory for ytdl usage
|
||||
"""
|
||||
return f"{self.working_file_path}-ytdl-archive"
|
||||
|
||||
@property
|
||||
def mapping(self) -> DownloadMappings:
|
||||
"""
|
||||
|
|
@ -541,7 +550,7 @@ class EnhancedDownloadArchive:
|
|||
return self
|
||||
|
||||
# Otherwise, create a ytdl download archive file in the working directory.
|
||||
self.mapping.to_download_archive().to_file(self.working_file_path)
|
||||
self.mapping.to_download_archive().to_file(self.working_ytdl_file_path)
|
||||
|
||||
return self
|
||||
|
||||
|
|
@ -603,15 +612,18 @@ class EnhancedDownloadArchive:
|
|||
if self._migrated_file_name:
|
||||
self._download_mapping.to_file(output_json_file=self.working_file_path)
|
||||
self.save_file_to_output_directory(
|
||||
file_name=self.file_name, output_file_name=self._migrated_file_name
|
||||
file_name=self.file_name, output_file_name=self._migrated_file_name, copy_file=True
|
||||
)
|
||||
FileHandler.delete(file_path=self.working_file_path)
|
||||
|
||||
# and delete the old one if the name differs
|
||||
if self._file_name != self._migrated_file_name:
|
||||
self.delete_file_from_output_directory(file_name=self.file_name)
|
||||
# Otherwise, only save if there are changes to the transaction log
|
||||
elif not self.get_file_handler_transaction_log().is_empty:
|
||||
self._download_mapping.to_file(output_json_file=self.working_file_path)
|
||||
self.save_file_to_output_directory(file_name=self.file_name)
|
||||
self.save_file_to_output_directory(file_name=self.file_name, copy_file=True)
|
||||
FileHandler.delete(file_path=self.working_file_path)
|
||||
return self
|
||||
|
||||
def delete_file_from_output_directory(self, file_name: str):
|
||||
|
|
|
|||
|
|
@ -1,10 +1,5 @@
|
|||
{
|
||||
".ytdl-sub-Sithu Aye-download-archive.json": "1c4bcf58581eac1851be92ee29a3c4d7",
|
||||
"Sithu Aye/[2021] 10 Years: Remixes and Reimaginings/01 - Double Helix Reimagined.mp3": "ac0e6a2936c309765c69a4c98c42ad10",
|
||||
"Sithu Aye/[2021] 10 Years: Remixes and Reimaginings/02 - Skye Reimagined.mp3": "38387bd0ec5fc229e30b1a8ce5b9cddb",
|
||||
"Sithu Aye/[2021] 10 Years: Remixes and Reimaginings/03 - Baryofusion.mp3": "344dbb939b09713dcc33894a8b1b8459",
|
||||
"Sithu Aye/[2021] 10 Years: Remixes and Reimaginings/04 - Mandalay Reimagined.mp3": "9bacbd5166a740c06d3329dcfae0d9aa",
|
||||
"Sithu Aye/[2021] 10 Years: Remixes and Reimaginings/folder.jpg": "bf6f70d51557a71b69fed85b2cb476f0",
|
||||
".ytdl-sub-Sithu Aye-download-archive.json": "93ad50c4f4cca753f40c46bc6e31cabf",
|
||||
"Sithu Aye/[2022] Re:Invent the Universe (10th Anniversary Remaster)/01 - Invent the Universe.mp3": "482e97a4f9a30aa4413f45f5f3f5dbba",
|
||||
"Sithu Aye/[2022] Re:Invent the Universe (10th Anniversary Remaster)/02 - Grand Unification (feat. David Maxim Micic).mp3": "34e43fd80b4c61295abbb8b794e523a7",
|
||||
"Sithu Aye/[2022] Re:Invent the Universe (10th Anniversary Remaster)/03 - Expansion.mp3": "0ba4b8ef65e274cbf065b6f0a5f444e5",
|
||||
|
|
@ -16,6 +11,10 @@
|
|||
"Sithu Aye/[2022] Re:Invent the Universe (10th Anniversary Remaster)/09 - Formation.mp3": "d588ed8edc324ea657abb2be96d557a1",
|
||||
"Sithu Aye/[2022] Re:Invent the Universe (10th Anniversary Remaster)/10 - Pale Blue Dot.mp3": "8245d285ba2403bf512f83c4a585eb81",
|
||||
"Sithu Aye/[2022] Re:Invent the Universe (10th Anniversary Remaster)/folder.jpg": "d8cffeca026afaa619f641a95143f803",
|
||||
"Sithu Aye/[2024] Kindness/01 - Run it Down.mp3": "9570867fd53419c1297411c9bf877a62",
|
||||
"Sithu Aye/[2024] Kindness/01 - Run it Down.mp3": "227c366845913f3476ae83fce0b72c56",
|
||||
"Sithu Aye/[2024] Kindness/02 - Zero Sum Groove.mp3": "0bd3b51acefc2a363309a8f94dd146d7",
|
||||
"Sithu Aye/[2024] Kindness/03 - Obsidian.mp3": "2a6b87e1ab5a69fc6c4503dc0dd03623",
|
||||
"Sithu Aye/[2024] Kindness/04 - Fear is the Kindness Killer.mp3": "4593d02a83f722d481846552554d13ba",
|
||||
"Sithu Aye/[2024] Kindness/05 - Ghost;Cleanse.mp3": "f89156a892b597be9b594ce10131ab60",
|
||||
"Sithu Aye/[2024] Kindness/folder.jpg": "8f72c9acb1a2e49fcbdc2624a46b229c"
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
".ytdl-sub-chapters_from_comments-download-archive.json": "2510b2ff3c54aa4813a4f23ea079e1ec",
|
||||
".ytdl-sub-chapters_from_comments-download-archive.json": "70bc3bb62af3a344b0256e1d3b98dcb0",
|
||||
"JMC/Move 78 - Automated Improvisation [Full Album].info.json": "INFO_JSON",
|
||||
"JMC/Move 78 - Automated Improvisation [Full Album].jpg": "c12e6a6f242680d1096a1a99d74a62c6",
|
||||
"JMC/Move 78 - Automated Improvisation [Full Album].mp4": "63119bd17a035574263aeec188e11d5e",
|
||||
"JMC/Move 78 - Automated Improvisation [Full Album].mp4": "fbe825bf5fb8ce193d47c3da3540e815",
|
||||
"JMC/Move 78 - Automated Improvisation [Full Album].nfo": "039268e97673a6f2b391772ec3b52fac"
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
".ytdl-sub-file_convert_test-download-archive.json": "f720289a704349fbe38ef5ed451af724",
|
||||
".ytdl-sub-file_convert_test-download-archive.json": "36ac81b6a021c1479a588477d74afd38",
|
||||
"file_convert_test/When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.info.json": "INFO_JSON",
|
||||
"file_convert_test/When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.jpg": "662fcaadf6e80d63591bac19a5fdffb0",
|
||||
"file_convert_test/When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.mp4": "24f5057254471bc6ecc3056e91af1444",
|
||||
"file_convert_test/When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.mp4": "7609c4f53565aa8f9eac50ad755b5c47",
|
||||
"file_convert_test/When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.nfo": "752e6b6eea853c8a1f62faa4b841b292"
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
".ytdl-sub-file_convert_test-download-archive.json": "8fa4bf42c9686f8520ce107e48b73215",
|
||||
".ytdl-sub-file_convert_test-download-archive.json": "83e57376a260ab3a58978dee4a06df4a",
|
||||
"file_convert_test/When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.info.json": "INFO_JSON",
|
||||
"file_convert_test/When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.jpg": "662fcaadf6e80d63591bac19a5fdffb0",
|
||||
"file_convert_test/When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.mkv": "175320a51dc3efcea84daebec3c1d7e1",
|
||||
"file_convert_test/When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.nfo": "752e6b6eea853c8a1f62faa4b841b292"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
".ytdl-sub-match_filter_test-download-archive.json": "30f10646149d9eea4eb970749f352f7d",
|
||||
".ytdl-sub-match_filter_test-download-archive.json": "c2154694d771b47e7878622851b379b7",
|
||||
"match_filter_test/Jesse's Minecraft Server [Trailer - Mar.21].info.json": "INFO_JSON",
|
||||
"match_filter_test/Jesse's Minecraft Server [Trailer - Mar.21].jpg": "e7830aa8a64b0cde65ba3f7e5fc56530",
|
||||
"match_filter_test/Jesse's Minecraft Server [Trailer - Mar.21].mp4": "f17a540070964a199b35f981561d94e4",
|
||||
"match_filter_test/Jesse's Minecraft Server [Trailer - Mar.21].mp4": "a0dc417dbf369c47bbac571bdb18e0e4",
|
||||
"match_filter_test/Jesse's Minecraft Server [Trailer - Mar.21].nfo": "d85f4500bb5d8a2425d734a23b5a944c"
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
".ytdl-sub-multiple_songs_test-download-archive.json": "54237df5e00d1598dfd39f341ee03d75",
|
||||
"Project Zombie/[2011] Jesse's Minecraft Server/01 - Jesse's Minecraft Server [Trailer - Mar.21].ogg": "9e53a68a39f290899a3dce03fdca6490",
|
||||
"Project Zombie/[2011] Jesse's Minecraft Server/01 - Jesse's Minecraft Server [Trailer - Mar.21].ogg": "221dab6e9d6840a0b4b7bb24444c87ff",
|
||||
"Project Zombie/[2011] Jesse's Minecraft Server/02 - Jesse's Minecraft Server [Trailer - Feb.27].ogg": "02dc8e368de9555d062bde31dcc82852",
|
||||
"Project Zombie/[2011] Jesse's Minecraft Server/03 - Jesse's Minecraft Server [Trailer - Feb.1].ogg": "c808e1da2bccd419201eeeffc32c3729",
|
||||
"Project Zombie/[2011] Jesse's Minecraft Server/folder.jpg": "e7830aa8a64b0cde65ba3f7e5fc56530"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
".ytdl-sub-sponsorblock_with_embedded_subs_test-download-archive.json": "2cb4b9586fd5bb7f1fed76ed9195e6e4",
|
||||
".ytdl-sub-sponsorblock_with_embedded_subs_test-download-archive.json": "53eda1f626aaec8814ff005bf8d46ef7",
|
||||
"JMC/This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.info.json": "INFO_JSON",
|
||||
"JMC/This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.jpg": "b5353a824a4800cc26f884e3025ed969",
|
||||
"JMC/This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.mp4": "0539ff781c824f17ae3ffbd7dc830a8f",
|
||||
"JMC/This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.mp4": "19889ac778397147e55fe640c9a0f490",
|
||||
"JMC/This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.nfo": "ae73ec18a9f0e5a54c90061ccd32e7f4"
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
".ytdl-sub-subtitles_embedded_test-download-archive.json": "a74ecea9f7844be23f470bbe702788f3",
|
||||
".ytdl-sub-subtitles_embedded_test-download-archive.json": "538f36d011bb6077de044263d511a45b",
|
||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.info.json": "INFO_JSON",
|
||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.jpg": "50ee47c80f679029f5d3503bb91b045a",
|
||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.mp4": "f90f3bb948014420931c337b09007a18",
|
||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.nfo": "e6ac56ce52c747e2e271f12208f9a538"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
".ytdl-sub-subtitles_embedded_and_file_test-download-archive.json": "a05bbc3b8851e92da10c67cd9acb32d0",
|
||||
".ytdl-sub-subtitles_embedded_and_file_test-download-archive.json": "470a4652395e01c970aaa40fe8fcea6c",
|
||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.de.srt": "b343c3bb9257b7ee7ba38f570a115b37",
|
||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.en.srt": "fe8c6ee92cae6e059fd80fd61691adbe",
|
||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.info.json": "INFO_JSON",
|
||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.jpg": "50ee47c80f679029f5d3503bb91b045a",
|
||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.mp4": "f90f3bb948014420931c337b09007a18",
|
||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.nfo": "e6ac56ce52c747e2e271f12208f9a538"
|
||||
|
|
|
|||
|
|
@ -1,14 +1,18 @@
|
|||
{
|
||||
".ytdl-sub-subscription_test-download-archive.json": "d9f5fdb6fc3fc3c3bf87772c406448ec",
|
||||
".ytdl-sub-subscription_test-download-archive.json": "b98a30417f259daeec888e1a5047b9ed",
|
||||
"subscription_test/Mock Entry 20-1.info.json": "INFO_JSON",
|
||||
"subscription_test/Mock Entry 20-1.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||
"subscription_test/Mock Entry 20-1.mp4": "34916dc26e723c3464adcc4687898ca8",
|
||||
"subscription_test/Mock Entry 20-1.nfo": "68a6a9e51a12e75d4c68e6e644b409d1",
|
||||
"subscription_test/Mock Entry 20-2.info.json": "INFO_JSON",
|
||||
"subscription_test/Mock Entry 20-2.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||
"subscription_test/Mock Entry 20-2.mp4": "01a910b7a023325aa9d4ad3a013a1e02",
|
||||
"subscription_test/Mock Entry 20-2.nfo": "1cbe51945c1a7a9ced0eb1222e9d2405",
|
||||
"subscription_test/Mock Entry 20-3.info.json": "INFO_JSON",
|
||||
"subscription_test/Mock Entry 20-3.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||
"subscription_test/Mock Entry 20-3.mp4": "812b6db9ff08bf1822e99e43d371400d",
|
||||
"subscription_test/Mock Entry 20-3.nfo": "ef07f30d3e882de3f7cb3ad675125352",
|
||||
"subscription_test/Mock Entry 21-1.info.json": "INFO_JSON",
|
||||
"subscription_test/Mock Entry 21-1.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||
"subscription_test/Mock Entry 21-1.mp4": "079832b6e49b283d80be402c9c928b90",
|
||||
"subscription_test/Mock Entry 21-1.nfo": "dc714fd9f3c3729f74927ad245b50d9d"
|
||||
|
|
|
|||
|
|
@ -1,14 +1,18 @@
|
|||
{
|
||||
".ytdl-sub-subscription_test-download-archive.json": "d9f5fdb6fc3fc3c3bf87772c406448ec",
|
||||
".ytdl-sub-subscription_test-download-archive.json": "b98a30417f259daeec888e1a5047b9ed",
|
||||
"subscription_test/Mock Entry 20-1.info.json": "INFO_JSON",
|
||||
"subscription_test/Mock Entry 20-1.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||
"subscription_test/Mock Entry 20-1.mp4": "34916dc26e723c3464adcc4687898ca8",
|
||||
"subscription_test/Mock Entry 20-1.nfo": "68a6a9e51a12e75d4c68e6e644b409d1",
|
||||
"subscription_test/Mock Entry 20-2.info.json": "INFO_JSON",
|
||||
"subscription_test/Mock Entry 20-2.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||
"subscription_test/Mock Entry 20-2.mp4": "01a910b7a023325aa9d4ad3a013a1e02",
|
||||
"subscription_test/Mock Entry 20-2.nfo": "1cbe51945c1a7a9ced0eb1222e9d2405",
|
||||
"subscription_test/Mock Entry 20-3.info.json": "INFO_JSON",
|
||||
"subscription_test/Mock Entry 20-3.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||
"subscription_test/Mock Entry 20-3.mp4": "812b6db9ff08bf1822e99e43d371400d",
|
||||
"subscription_test/Mock Entry 20-3.nfo": "ef07f30d3e882de3f7cb3ad675125352",
|
||||
"subscription_test/Mock Entry 21-1.info.json": "INFO_JSON",
|
||||
"subscription_test/Mock Entry 21-1.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||
"subscription_test/Mock Entry 21-1.mp4": "079832b6e49b283d80be402c9c928b90",
|
||||
"subscription_test/Mock Entry 21-1.nfo": "dc714fd9f3c3729f74927ad245b50d9d"
|
||||
|
|
|
|||
|
|
@ -1,11 +1,15 @@
|
|||
{
|
||||
".ytdl-sub-subscription_test-download-archive.json": "7d31b00238ca1f66c5e7f4735ca7aa87",
|
||||
".ytdl-sub-subscription_test-download-archive.json": "6cb47203ec56d8318a0d428b5b4efa5d",
|
||||
"subscription_test/Mock Entry 20-1.info.json": "INFO_JSON",
|
||||
"subscription_test/Mock Entry 20-1.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||
"subscription_test/Mock Entry 20-1.mp4": "34916dc26e723c3464adcc4687898ca8",
|
||||
"subscription_test/Mock Entry 20-2.info.json": "INFO_JSON",
|
||||
"subscription_test/Mock Entry 20-2.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||
"subscription_test/Mock Entry 20-2.mp4": "01a910b7a023325aa9d4ad3a013a1e02",
|
||||
"subscription_test/Mock Entry 20-3.info.json": "INFO_JSON",
|
||||
"subscription_test/Mock Entry 20-3.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||
"subscription_test/Mock Entry 20-3.mp4": "812b6db9ff08bf1822e99e43d371400d",
|
||||
"subscription_test/Mock Entry 21-1.info.json": "INFO_JSON",
|
||||
"subscription_test/Mock Entry 21-1.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||
"subscription_test/Mock Entry 21-1.mp4": "079832b6e49b283d80be402c9c928b90"
|
||||
}
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
"Project ⧸ Zombie/Season 2011/s2011.e022701 - Jesse's Minecraft Server [Trailer - Feb.27].nfo": "20af231e30a035fb2bc0c946f4b4026d",
|
||||
"Project ⧸ Zombie/Season 2011/s2011.e032101 - Jesse's Minecraft Server [Trailer - Mar.21]-thumb.jpg": "e7830aa8a64b0cde65ba3f7e5fc56530",
|
||||
"Project ⧸ Zombie/Season 2011/s2011.e032101 - Jesse's Minecraft Server [Trailer - Mar.21].info.json": "INFO_JSON",
|
||||
"Project ⧸ Zombie/Season 2011/s2011.e032101 - Jesse's Minecraft Server [Trailer - Mar.21].mp4": "eac3dfce44c2a723f2fc74e9552aa510",
|
||||
"Project ⧸ Zombie/Season 2011/s2011.e032101 - Jesse's Minecraft Server [Trailer - Mar.21].mp4": "7df8f1469adb02f1aecfbb049276cae7",
|
||||
"Project ⧸ Zombie/Season 2011/s2011.e032101 - Jesse's Minecraft Server [Trailer - Mar.21].nfo": "f8bdc463c0cb2ffdc82aba2bcc27ad5d",
|
||||
"Project ⧸ Zombie/Season 2011/s2011.e052901 - Project Zombie |Official Trailer| (IP: mc.projectzombie.beastnode.net)-thumb.jpg": "c956192a379b3661595c9920972d4819",
|
||||
"Project ⧸ Zombie/Season 2011/s2011.e052901 - Project Zombie |Official Trailer| (IP: mc.projectzombie.beastnode.net).info.json": "INFO_JSON",
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
"JMC/Season 01/s01.e11022701 - Jesse's Minecraft Server [Trailer - Feb.27].nfo": "da7645e8826586388ae0d8278ef6a1c1",
|
||||
"JMC/Season 01/s01.e11032101 - Jesse's Minecraft Server [Trailer - Mar.21]-thumb.jpg": "e7830aa8a64b0cde65ba3f7e5fc56530",
|
||||
"JMC/Season 01/s01.e11032101 - Jesse's Minecraft Server [Trailer - Mar.21].info.json": "INFO_JSON",
|
||||
"JMC/Season 01/s01.e11032101 - Jesse's Minecraft Server [Trailer - Mar.21].mp4": "dc04853870bbb811f6b312e20b58253b",
|
||||
"JMC/Season 01/s01.e11032101 - Jesse's Minecraft Server [Trailer - Mar.21].mp4": "91f22944f797513fcda9856e244dd3b3",
|
||||
"JMC/Season 01/s01.e11032101 - Jesse's Minecraft Server [Trailer - Mar.21].nfo": "c56083e2f3545fa2cafc4d67cbfdacf8",
|
||||
"JMC/fanart.jpg": "129c6639b47299bc48062f0365e670ee",
|
||||
"JMC/poster.jpg": "5de28eea5a921a041452ab3ce1041f73",
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
"JMC/Season 01/s01.e11022701 - Jesse's Minecraft Server [Trailer - Feb.27].nfo": "da7645e8826586388ae0d8278ef6a1c1",
|
||||
"JMC/Season 01/s01.e11032101 - Jesse's Minecraft Server [Trailer - Mar.21]-thumb.jpg": "e7830aa8a64b0cde65ba3f7e5fc56530",
|
||||
"JMC/Season 01/s01.e11032101 - Jesse's Minecraft Server [Trailer - Mar.21].info.json": "INFO_JSON",
|
||||
"JMC/Season 01/s01.e11032101 - Jesse's Minecraft Server [Trailer - Mar.21].mp4": "dc04853870bbb811f6b312e20b58253b",
|
||||
"JMC/Season 01/s01.e11032101 - Jesse's Minecraft Server [Trailer - Mar.21].mp4": "91f22944f797513fcda9856e244dd3b3",
|
||||
"JMC/Season 01/s01.e11032101 - Jesse's Minecraft Server [Trailer - Mar.21].nfo": "c56083e2f3545fa2cafc4d67cbfdacf8",
|
||||
"JMC/fanart.jpg": "129c6639b47299bc48062f0365e670ee",
|
||||
"JMC/poster.jpg": "5de28eea5a921a041452ab3ce1041f73",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"JMC/Oblivion Mod "Falcor" p.1.info.json": "INFO_JSON",
|
||||
"JMC/Oblivion Mod "Falcor" p.1.jpg": "fb95b510681676e81c321171fc23143e",
|
||||
"JMC/Oblivion Mod "Falcor" p.1.mp4": "318faf3eb1d7666491553cdfd2a2e9fb",
|
||||
"JMC/Oblivion Mod "Falcor" p.1.nfo": "58c2be339869b5d071c1758d55c72ddb"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"JMC/Oblivion Mod "Falcor" p.1.info.json": "INFO_JSON",
|
||||
"JMC/Oblivion Mod "Falcor" p.1.jpg": "fb95b510681676e81c321171fc23143e",
|
||||
"JMC/Oblivion Mod "Falcor" p.1.mp4": "318faf3eb1d7666491553cdfd2a2e9fb",
|
||||
"JMC/Oblivion Mod "Falcor" p.1.nfo": "58c2be339869b5d071c1758d55c72ddb"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"JMC/Oblivion Mod "Falcor" p.1.info.json": "INFO_JSON",
|
||||
"JMC/Oblivion Mod "Falcor" p.1.mp4": "d3bdda5ec6822ea3b4b4bd8908eb327a",
|
||||
"JMC/Oblivion Mod "Falcor" p.1.nfo": "58c2be339869b5d071c1758d55c72ddb"
|
||||
}
|
||||
|
|
@ -2,64 +2,6 @@ Files created:
|
|||
----------------------------------------
|
||||
{output_directory}
|
||||
.ytdl-sub-Sithu Aye-download-archive.json
|
||||
{output_directory}/Sithu Aye/[2021] 10 Years: Remixes and Reimaginings
|
||||
01 - Double Helix Reimagined.mp3
|
||||
Music Tags:
|
||||
album: 10 Years: Remixes and Reimaginings
|
||||
albumartist: Sithu Aye
|
||||
albumartists: Sithu Aye
|
||||
artist: Sithu Aye
|
||||
artists: Sithu Aye
|
||||
date: 2021-11-26
|
||||
genres: Progressive Metal
|
||||
original_date: 2021-11-26
|
||||
title: Double Helix Reimagined
|
||||
track: 1
|
||||
tracktotal: 10
|
||||
year: 2021
|
||||
02 - Skye Reimagined.mp3
|
||||
Music Tags:
|
||||
album: 10 Years: Remixes and Reimaginings
|
||||
albumartist: Sithu Aye
|
||||
albumartists: Sithu Aye
|
||||
artist: Sithu Aye
|
||||
artists: Sithu Aye
|
||||
date: 2021-11-26
|
||||
genres: Progressive Metal
|
||||
original_date: 2021-11-26
|
||||
title: Skye Reimagined
|
||||
track: 2
|
||||
tracktotal: 10
|
||||
year: 2021
|
||||
03 - Baryofusion.mp3
|
||||
Music Tags:
|
||||
album: 10 Years: Remixes and Reimaginings
|
||||
albumartist: Sithu Aye
|
||||
albumartists: Sithu Aye
|
||||
artist: Sithu Aye
|
||||
artists: Sithu Aye
|
||||
date: 2021-11-26
|
||||
genres: Progressive Metal
|
||||
original_date: 2021-11-26
|
||||
title: Baryofusion
|
||||
track: 3
|
||||
tracktotal: 10
|
||||
year: 2021
|
||||
04 - Mandalay Reimagined.mp3
|
||||
Music Tags:
|
||||
album: 10 Years: Remixes and Reimaginings
|
||||
albumartist: Sithu Aye
|
||||
albumartists: Sithu Aye
|
||||
artist: Sithu Aye
|
||||
artists: Sithu Aye
|
||||
date: 2021-11-26
|
||||
genres: Progressive Metal
|
||||
original_date: 2021-11-26
|
||||
title: Mandalay Reimagined
|
||||
track: 4
|
||||
tracktotal: 10
|
||||
year: 2021
|
||||
folder.jpg
|
||||
{output_directory}/Sithu Aye/[2022] Re:Invent the Universe (10th Anniversary Remaster)
|
||||
01 - Invent the Universe.mp3
|
||||
Music Tags:
|
||||
|
|
@ -215,6 +157,62 @@ Files created:
|
|||
original_date: 2024-03-23
|
||||
title: Run it Down
|
||||
track: 1
|
||||
tracktotal: 1
|
||||
tracktotal: 5
|
||||
year: 2024
|
||||
02 - Zero Sum Groove.mp3
|
||||
Music Tags:
|
||||
album: Kindness
|
||||
albumartist: Sithu Aye
|
||||
albumartists: Sithu Aye
|
||||
artist: Sithu Aye
|
||||
artists: Sithu Aye
|
||||
date: 2024-03-23
|
||||
genres: Progressive Metal
|
||||
original_date: 2024-03-23
|
||||
title: Zero Sum Groove
|
||||
track: 2
|
||||
tracktotal: 5
|
||||
year: 2024
|
||||
03 - Obsidian.mp3
|
||||
Music Tags:
|
||||
album: Kindness
|
||||
albumartist: Sithu Aye
|
||||
albumartists: Sithu Aye
|
||||
artist: Sithu Aye
|
||||
artists: Sithu Aye
|
||||
date: 2024-03-23
|
||||
genres: Progressive Metal
|
||||
original_date: 2024-03-23
|
||||
title: Obsidian
|
||||
track: 3
|
||||
tracktotal: 5
|
||||
year: 2024
|
||||
04 - Fear is the Kindness Killer.mp3
|
||||
Music Tags:
|
||||
album: Kindness
|
||||
albumartist: Sithu Aye
|
||||
albumartists: Sithu Aye
|
||||
artist: Sithu Aye
|
||||
artists: Sithu Aye
|
||||
date: 2024-03-23
|
||||
genres: Progressive Metal
|
||||
original_date: 2024-03-23
|
||||
title: Fear is the Kindness Killer
|
||||
track: 4
|
||||
tracktotal: 5
|
||||
year: 2024
|
||||
05 - Ghost;Cleanse.mp3
|
||||
Music Tags:
|
||||
album: Kindness
|
||||
albumartist: Sithu Aye
|
||||
albumartists: Sithu Aye
|
||||
artist: Sithu Aye
|
||||
artists: Sithu Aye
|
||||
date: 2024-03-23
|
||||
genres: Progressive Metal
|
||||
original_date: 2024-03-23
|
||||
title: Ghost;Cleanse
|
||||
track: 5
|
||||
tracktotal: 5
|
||||
year: 2024
|
||||
folder.jpg
|
||||
|
|
@ -3,8 +3,19 @@ Files created:
|
|||
{output_directory}
|
||||
.ytdl-sub-chapters_from_comments-download-archive.json
|
||||
{output_directory}/JMC
|
||||
Move 78 - Automated Improvisation [Full Album].info.json
|
||||
Move 78 - Automated Improvisation [Full Album].jpg
|
||||
Move 78 - Automated Improvisation [Full Album].mp4
|
||||
Chapters from comments:
|
||||
0:00: 01. The Lonely Tears of Lee Seedol
|
||||
4:30: 02. But What If We're Wrong
|
||||
9:16: 03. Follow the Earworm Pt.2
|
||||
12:25: 04. Keyword Salad
|
||||
16:48: 05. Ultra Natural
|
||||
20:47: 06. Flight Instructions
|
||||
25:46: 07. Dawn of the Useless Class
|
||||
29:58: 08. Schnitzel Whisperer
|
||||
32:16: 09. Teilo
|
||||
Embedded subtitles with lang(s) en, de
|
||||
Video Tags:
|
||||
album: Music Videos
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ Files created:
|
|||
{output_directory}
|
||||
.ytdl-sub-file_convert_test-download-archive.json
|
||||
{output_directory}/file_convert_test
|
||||
When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.info.json
|
||||
When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.jpg
|
||||
When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.mp4
|
||||
Video Tags:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ Files created:
|
|||
{output_directory}
|
||||
.ytdl-sub-file_convert_test-download-archive.json
|
||||
{output_directory}/file_convert_test
|
||||
When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.info.json
|
||||
When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.jpg
|
||||
When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.mkv
|
||||
Converted from mp4
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ Files created:
|
|||
{output_directory}
|
||||
.ytdl-sub-match_filter_test-download-archive.json
|
||||
{output_directory}/match_filter_test
|
||||
Jesse's Minecraft Server [Trailer - Mar.21].info.json
|
||||
Jesse's Minecraft Server [Trailer - Mar.21].jpg
|
||||
Jesse's Minecraft Server [Trailer - Mar.21].mp4
|
||||
Video Tags:
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ Files created:
|
|||
the
|
||||
tag 🎸🎸
|
||||
{output_directory}/kodi_safe_xml
|
||||
Can you hear the difference? 🎸🔥 #shorts.info.json
|
||||
Can you hear the difference? 🎸🔥 #shorts.jpg
|
||||
Can you hear the difference? 🎸🔥 #shorts.mp4
|
||||
Video Tags:
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ Files created:
|
|||
the
|
||||
tag □□
|
||||
{output_directory}/kodi_safe_xml
|
||||
Can you hear the difference? 🎸🔥 #shorts.info.json
|
||||
Can you hear the difference? 🎸🔥 #shorts.jpg
|
||||
Can you hear the difference? 🎸🔥 #shorts.mp4
|
||||
Video Tags:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ Files created:
|
|||
{output_directory}
|
||||
.ytdl-sub-sponsorblock_with_embedded_subs_test-download-archive.json
|
||||
{output_directory}/JMC
|
||||
This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.info.json
|
||||
This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.jpg
|
||||
This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.mp4
|
||||
Embedded Chapters:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ Files created:
|
|||
{output_directory}
|
||||
.ytdl-sub-regex_capture_playlist_test-download-archive.json
|
||||
{output_directory}/regex_capture_playlist_test
|
||||
Jesse's Minecraft Server [Trailer - Feb.1].info.json
|
||||
Jesse's Minecraft Server [Trailer - Feb.1].jpg
|
||||
Jesse's Minecraft Server [Trailer - Feb.1].mp4
|
||||
Video Tags:
|
||||
|
|
@ -27,6 +28,7 @@ Files created:
|
|||
title_cap_1_sanitized: Trailer
|
||||
title_cap_2: Feb.1
|
||||
upload_date_both_caps: First and Second containing in regex default
|
||||
Jesse's Minecraft Server [Trailer - Feb.27].info.json
|
||||
Jesse's Minecraft Server [Trailer - Feb.27].jpg
|
||||
Jesse's Minecraft Server [Trailer - Feb.27].mp4
|
||||
Video Tags:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ Files created:
|
|||
{output_directory}
|
||||
.ytdl-sub-regex_exclude_playlist_test-download-archive.json
|
||||
{output_directory}/regex_exclude_playlist_test
|
||||
Jesse's Minecraft Server [Trailer - Mar.21].info.json
|
||||
Jesse's Minecraft Server [Trailer - Mar.21].jpg
|
||||
Jesse's Minecraft Server [Trailer - Mar.21].mp4
|
||||
Video Tags:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ Files created:
|
|||
{output_directory}
|
||||
.ytdl-sub-regex_match_and_exclude_playlist_test-download-archive.json
|
||||
{output_directory}/regex_match_and_exclude_playlist_test
|
||||
Jesse's Minecraft Server [Trailer - Feb.1].info.json
|
||||
Jesse's Minecraft Server [Trailer - Feb.1].jpg
|
||||
Jesse's Minecraft Server [Trailer - Feb.1].mp4
|
||||
Video Tags:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ Files created:
|
|||
{output_directory}
|
||||
.ytdl-sub-regex_using_overrides_test-download-archive.json
|
||||
{output_directory}/regex_using_overrides_test
|
||||
Jesse's Minecraft Server [Trailer - Mar.21].info.json
|
||||
Jesse's Minecraft Server [Trailer - Mar.21].jpg
|
||||
Jesse's Minecraft Server [Trailer - Mar.21].mp4
|
||||
Video Tags:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ Files created:
|
|||
{output_directory}
|
||||
.ytdl-sub-subtitles_embedded_test-download-archive.json
|
||||
{output_directory}/JMC
|
||||
YouTube Rewind 2019: For the Record | #YouTubeRewind.info.json
|
||||
YouTube Rewind 2019: For the Record | #YouTubeRewind.jpg
|
||||
YouTube Rewind 2019: For the Record | #YouTubeRewind.mp4
|
||||
Embedded subtitles with lang(s) en, de
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ Files created:
|
|||
{output_directory}/JMC
|
||||
YouTube Rewind 2019: For the Record | #YouTubeRewind.de.srt
|
||||
YouTube Rewind 2019: For the Record | #YouTubeRewind.en.srt
|
||||
YouTube Rewind 2019: For the Record | #YouTubeRewind.info.json
|
||||
YouTube Rewind 2019: For the Record | #YouTubeRewind.jpg
|
||||
YouTube Rewind 2019: For the Record | #YouTubeRewind.mp4
|
||||
Embedded subtitles with lang(s) en, de
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ Files created:
|
|||
{output_directory}
|
||||
.ytdl-sub-subscription_test-download-archive.json
|
||||
{output_directory}/subscription_test
|
||||
Mock Entry 20-1.info.json
|
||||
Mock Entry 20-1.jpg
|
||||
Mock Entry 20-1.mp4
|
||||
Video Tags:
|
||||
|
|
@ -20,6 +21,7 @@ Files created:
|
|||
genre: ytdl-sub
|
||||
premiered: 2020-08-08
|
||||
title: Mock Entry 20-1
|
||||
Mock Entry 20-2.info.json
|
||||
Mock Entry 20-2.jpg
|
||||
Mock Entry 20-2.mp4
|
||||
Video Tags:
|
||||
|
|
@ -37,6 +39,7 @@ Files created:
|
|||
genre: ytdl-sub
|
||||
premiered: 2020-08-08
|
||||
title: Mock Entry 20-2
|
||||
Mock Entry 20-3.info.json
|
||||
Mock Entry 20-3.jpg
|
||||
Mock Entry 20-3.mp4
|
||||
Video Tags:
|
||||
|
|
@ -54,6 +57,7 @@ Files created:
|
|||
genre: ytdl-sub
|
||||
premiered: 2020-08-07
|
||||
title: Mock Entry 20-3
|
||||
Mock Entry 21-1.info.json
|
||||
Mock Entry 21-1.jpg
|
||||
Mock Entry 21-1.mp4
|
||||
Video Tags:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ Files created:
|
|||
{output_directory}
|
||||
.ytdl-sub-subscription_test-download-archive.json
|
||||
{output_directory}/subscription_test
|
||||
Mock Entry 20-1.info.json
|
||||
Mock Entry 20-1.jpg
|
||||
Mock Entry 20-1.mp4
|
||||
Video Tags:
|
||||
|
|
@ -20,6 +21,7 @@ Files created:
|
|||
genre: ytdl-sub
|
||||
premiered: 2020-08-08
|
||||
title: Mock Entry 20-1
|
||||
Mock Entry 20-2.info.json
|
||||
Mock Entry 20-2.jpg
|
||||
Mock Entry 20-2.mp4
|
||||
Video Tags:
|
||||
|
|
@ -37,6 +39,7 @@ Files created:
|
|||
genre: ytdl-sub
|
||||
premiered: 2020-08-08
|
||||
title: Mock Entry 20-2
|
||||
Mock Entry 20-3.info.json
|
||||
Mock Entry 20-3.jpg
|
||||
Mock Entry 20-3.mp4
|
||||
Video Tags:
|
||||
|
|
@ -54,6 +57,7 @@ Files created:
|
|||
genre: ytdl-sub
|
||||
premiered: 2020-08-07
|
||||
title: Mock Entry 20-3
|
||||
Mock Entry 21-1.info.json
|
||||
Mock Entry 21-1.jpg
|
||||
Mock Entry 21-1.mp4
|
||||
Video Tags:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ Files created:
|
|||
{output_directory}
|
||||
.ytdl-sub-subscription_test-download-archive.json
|
||||
{output_directory}/subscription_test
|
||||
Mock Entry 20-1.info.json
|
||||
Mock Entry 20-1.jpg
|
||||
Mock Entry 20-1.mp4
|
||||
Video Tags:
|
||||
|
|
@ -12,6 +13,7 @@ Files created:
|
|||
premiered: 2020-08-08
|
||||
title: Mock Entry 20-1
|
||||
year: 2020
|
||||
Mock Entry 20-2.info.json
|
||||
Mock Entry 20-2.jpg
|
||||
Mock Entry 20-2.mp4
|
||||
Video Tags:
|
||||
|
|
@ -21,6 +23,7 @@ Files created:
|
|||
premiered: 2020-08-08
|
||||
title: Mock Entry 20-2
|
||||
year: 2020
|
||||
Mock Entry 20-3.info.json
|
||||
Mock Entry 20-3.jpg
|
||||
Mock Entry 20-3.mp4
|
||||
Video Tags:
|
||||
|
|
@ -30,6 +33,7 @@ Files created:
|
|||
premiered: 2020-08-07
|
||||
title: Mock Entry 20-3
|
||||
year: 2020
|
||||
Mock Entry 21-1.info.json
|
||||
Mock Entry 21-1.jpg
|
||||
Mock Entry 21-1.mp4
|
||||
Video Tags:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
Files created:
|
||||
----------------------------------------
|
||||
{output_directory}/JMC
|
||||
Oblivion Mod "Falcor" p.1.info.json
|
||||
Oblivion Mod "Falcor" p.1.jpg
|
||||
Oblivion Mod "Falcor" p.1.mp4
|
||||
Video Tags:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
Files created:
|
||||
----------------------------------------
|
||||
{output_directory}/JMC
|
||||
Oblivion Mod "Falcor" p.1.info.json
|
||||
Oblivion Mod "Falcor" p.1.jpg
|
||||
Oblivion Mod "Falcor" p.1.mp4
|
||||
Video Tags:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
Files created:
|
||||
----------------------------------------
|
||||
{output_directory}/JMC
|
||||
Oblivion Mod "Falcor" p.1.info.json
|
||||
Oblivion Mod "Falcor" p.1.mp4
|
||||
Video Tags:
|
||||
album: Music Videos
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
import os.path
|
||||
import re
|
||||
from pathlib import Path
|
||||
from typing import Dict
|
||||
from typing import Optional
|
||||
|
||||
|
|
@ -94,6 +96,18 @@ class TestConfigFilePartiallyValidatesPresets:
|
|||
},
|
||||
)
|
||||
|
||||
def test_config_file_working_dir_home_dir(self):
|
||||
out = ConfigFile(
|
||||
name="test_tilda",
|
||||
value={
|
||||
"configuration": {"working_directory": "~/working/dir"},
|
||||
},
|
||||
)
|
||||
|
||||
assert out.config_options.working_directory == str(
|
||||
Path(os.path.expanduser("~")) / "working" / "dir"
|
||||
)
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"preset_dict",
|
||||
[
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
import os.path
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
|
|
@ -37,6 +39,20 @@ class TestPreset:
|
|||
},
|
||||
)
|
||||
|
||||
def test_preset_with_output_directory_tilda(self, config_file, output_options, youtube_video):
|
||||
out = Preset(
|
||||
config=config_file,
|
||||
name="test",
|
||||
value={
|
||||
"download": youtube_video,
|
||||
"output_options": {"output_directory": "~/output/dir", "file_name": "{dne_var}"},
|
||||
"overrides": {"dne_var": "not dne"},
|
||||
},
|
||||
)
|
||||
assert out.overrides.apply_formatter(out.output_options.output_directory) == str(
|
||||
Path(os.path.expanduser("~")) / "output" / "dir"
|
||||
)
|
||||
|
||||
def test_preset_parent(self, config_file, output_options, youtube_video):
|
||||
preset = Preset(
|
||||
config=config_file,
|
||||
|
|
|
|||
Loading…
Reference in a new issue