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``
|
:spec: ``to_native_filepath(filepath: String) -> String``
|
||||||
|
|
||||||
Convert any unix-based path separators ('/') with the OS's native
|
Convert any unix-based path separators ('/') with the OS's native
|
||||||
separator.
|
separator. In addition, expand ~ to absolute directories.
|
||||||
|
|
||||||
truncate_filepath_if_too_long
|
truncate_filepath_if_too_long
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ classifiers = [
|
||||||
"Programming Language :: Python :: 3.11",
|
"Programming Language :: Python :: 3.11",
|
||||||
]
|
]
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"yt-dlp==2024.04.09",
|
"yt-dlp==2024.5.27",
|
||||||
"colorama~=0.4",
|
"colorama~=0.4",
|
||||||
"mergedeep~=1.3",
|
"mergedeep~=1.3",
|
||||||
"mediafile~=0.12",
|
"mediafile~=0.12",
|
||||||
|
|
@ -49,7 +49,7 @@ test = [
|
||||||
lint = [
|
lint = [
|
||||||
"black==24.4.2",
|
"black==24.4.2",
|
||||||
"isort==5.13.2",
|
"isort==5.13.2",
|
||||||
"pylint==3.1.0",
|
"pylint==3.2.2",
|
||||||
]
|
]
|
||||||
docs = [
|
docs = [
|
||||||
"sphinx~=7.0",
|
"sphinx~=7.0",
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
import os
|
||||||
|
import posixpath
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
@ -147,7 +149,8 @@ class ConfigOptions(StrictDictValidator):
|
||||||
The directory to temporarily store downloaded files before moving them into their final
|
The directory to temporarily store downloaded files before moving them into their final
|
||||||
directory. Defaults to .ytdl-sub-working-directory
|
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
|
@property
|
||||||
def umask(self) -> Optional[str]:
|
def umask(self) -> Optional[str]:
|
||||||
|
|
|
||||||
|
|
@ -36,9 +36,9 @@ class CustomFunctions:
|
||||||
def to_native_filepath(filepath: String) -> String:
|
def to_native_filepath(filepath: String) -> String:
|
||||||
"""
|
"""
|
||||||
Convert any unix-based path separators ('/') with the OS's native
|
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
|
@staticmethod
|
||||||
def truncate_filepath_if_too_long(filepath: String) -> String:
|
def truncate_filepath_if_too_long(filepath: String) -> String:
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ presets:
|
||||||
output_directory: "{music_video_directory}"
|
output_directory: "{music_video_directory}"
|
||||||
file_name: "{music_video_file_name}.{ext}"
|
file_name: "{music_video_file_name}.{ext}"
|
||||||
thumbnail_name: "{music_video_file_name}.jpg"
|
thumbnail_name: "{music_video_file_name}.jpg"
|
||||||
|
info_json_name: "{music_video_file_name}.{info_json_ext}"
|
||||||
maintain_download_archive: True
|
maintain_download_archive: True
|
||||||
|
|
||||||
ytdl_options:
|
ytdl_options:
|
||||||
|
|
|
||||||
|
|
@ -161,7 +161,7 @@ class SubscriptionDownload(BaseSubscription, ABC):
|
||||||
)
|
)
|
||||||
|
|
||||||
self.download_archive.save_download_mappings()
|
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
|
@contextlib.contextmanager
|
||||||
def _remove_empty_directories_in_output_directory(self):
|
def _remove_empty_directories_in_output_directory(self):
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,9 @@ class SubscriptionYTDLOptions:
|
||||||
ytdl_options = {}
|
ytdl_options = {}
|
||||||
|
|
||||||
if self._preset.output_options.maintain_download_archive:
|
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:
|
if self._preset.output_options.keep_max_files:
|
||||||
keep_max_files = int(
|
keep_max_files = int(
|
||||||
self._overrides.apply_formatter(self._preset.output_options.keep_max_files)
|
self._overrides.apply_formatter(self._preset.output_options.keep_max_files)
|
||||||
|
|
|
||||||
|
|
@ -385,7 +385,11 @@ class FileHandler:
|
||||||
dst_file_path
|
dst_file_path
|
||||||
Destination file
|
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
|
@classmethod
|
||||||
def move(cls, src_file_path: Union[str, Path], dst_file_path: Union[str, Path]):
|
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:
|
if not thumbnail_url:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# timeout after 8 seconds
|
with urlopen(thumbnail_url, timeout=7.0) as file:
|
||||||
with urlopen(thumbnail_url, timeout=1.0) as file:
|
|
||||||
with tempfile.NamedTemporaryFile(delete=False) as thumbnail:
|
with tempfile.NamedTemporaryFile(delete=False) as thumbnail:
|
||||||
thumbnail.write(file.read())
|
thumbnail.write(file.read())
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -506,10 +506,19 @@ class EnhancedDownloadArchive:
|
||||||
"""
|
"""
|
||||||
Returns
|
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)
|
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
|
@property
|
||||||
def mapping(self) -> DownloadMappings:
|
def mapping(self) -> DownloadMappings:
|
||||||
"""
|
"""
|
||||||
|
|
@ -541,7 +550,7 @@ class EnhancedDownloadArchive:
|
||||||
return self
|
return self
|
||||||
|
|
||||||
# Otherwise, create a ytdl download archive file in the working directory.
|
# 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
|
return self
|
||||||
|
|
||||||
|
|
@ -603,15 +612,18 @@ class EnhancedDownloadArchive:
|
||||||
if self._migrated_file_name:
|
if self._migrated_file_name:
|
||||||
self._download_mapping.to_file(output_json_file=self.working_file_path)
|
self._download_mapping.to_file(output_json_file=self.working_file_path)
|
||||||
self.save_file_to_output_directory(
|
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
|
# and delete the old one if the name differs
|
||||||
if self._file_name != self._migrated_file_name:
|
if self._file_name != self._migrated_file_name:
|
||||||
self.delete_file_from_output_directory(file_name=self.file_name)
|
self.delete_file_from_output_directory(file_name=self.file_name)
|
||||||
# Otherwise, only save if there are changes to the transaction log
|
# Otherwise, only save if there are changes to the transaction log
|
||||||
elif not self.get_file_handler_transaction_log().is_empty:
|
elif not self.get_file_handler_transaction_log().is_empty:
|
||||||
self._download_mapping.to_file(output_json_file=self.working_file_path)
|
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
|
return self
|
||||||
|
|
||||||
def delete_file_from_output_directory(self, file_name: str):
|
def delete_file_from_output_directory(self, file_name: str):
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,5 @@
|
||||||
{
|
{
|
||||||
".ytdl-sub-Sithu Aye-download-archive.json": "1c4bcf58581eac1851be92ee29a3c4d7",
|
".ytdl-sub-Sithu Aye-download-archive.json": "93ad50c4f4cca753f40c46bc6e31cabf",
|
||||||
"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",
|
|
||||||
"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)/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)/02 - Grand Unification (feat. David Maxim Micic).mp3": "34e43fd80b4c61295abbb8b794e523a7",
|
||||||
"Sithu Aye/[2022] Re:Invent the Universe (10th Anniversary Remaster)/03 - Expansion.mp3": "0ba4b8ef65e274cbf065b6f0a5f444e5",
|
"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)/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)/10 - Pale Blue Dot.mp3": "8245d285ba2403bf512f83c4a585eb81",
|
||||||
"Sithu Aye/[2022] Re:Invent the Universe (10th Anniversary Remaster)/folder.jpg": "d8cffeca026afaa619f641a95143f803",
|
"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"
|
"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].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"
|
"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.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"
|
"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.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.mkv": "175320a51dc3efcea84daebec3c1d7e1",
|
||||||
"file_convert_test/When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.nfo": "752e6b6eea853c8a1f62faa4b841b292"
|
"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].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"
|
"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",
|
".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/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/03 - Jesse's Minecraft Server [Trailer - Feb.1].ogg": "c808e1da2bccd419201eeeffc32c3729",
|
||||||
"Project Zombie/[2011] Jesse's Minecraft Server/folder.jpg": "e7830aa8a64b0cde65ba3f7e5fc56530"
|
"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.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"
|
"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.jpg": "50ee47c80f679029f5d3503bb91b045a",
|
||||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.mp4": "f90f3bb948014420931c337b09007a18",
|
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.mp4": "f90f3bb948014420931c337b09007a18",
|
||||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.nfo": "e6ac56ce52c747e2e271f12208f9a538"
|
"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.de.srt": "b343c3bb9257b7ee7ba38f570a115b37",
|
||||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.en.srt": "fe8c6ee92cae6e059fd80fd61691adbe",
|
"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.jpg": "50ee47c80f679029f5d3503bb91b045a",
|
||||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.mp4": "f90f3bb948014420931c337b09007a18",
|
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.mp4": "f90f3bb948014420931c337b09007a18",
|
||||||
"JMC/YouTube Rewind 2019: For the Record | #YouTubeRewind.nfo": "e6ac56ce52c747e2e271f12208f9a538"
|
"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.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||||
"subscription_test/Mock Entry 20-1.mp4": "34916dc26e723c3464adcc4687898ca8",
|
"subscription_test/Mock Entry 20-1.mp4": "34916dc26e723c3464adcc4687898ca8",
|
||||||
"subscription_test/Mock Entry 20-1.nfo": "68a6a9e51a12e75d4c68e6e644b409d1",
|
"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.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||||
"subscription_test/Mock Entry 20-2.mp4": "01a910b7a023325aa9d4ad3a013a1e02",
|
"subscription_test/Mock Entry 20-2.mp4": "01a910b7a023325aa9d4ad3a013a1e02",
|
||||||
"subscription_test/Mock Entry 20-2.nfo": "1cbe51945c1a7a9ced0eb1222e9d2405",
|
"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.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||||
"subscription_test/Mock Entry 20-3.mp4": "812b6db9ff08bf1822e99e43d371400d",
|
"subscription_test/Mock Entry 20-3.mp4": "812b6db9ff08bf1822e99e43d371400d",
|
||||||
"subscription_test/Mock Entry 20-3.nfo": "ef07f30d3e882de3f7cb3ad675125352",
|
"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.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||||
"subscription_test/Mock Entry 21-1.mp4": "079832b6e49b283d80be402c9c928b90",
|
"subscription_test/Mock Entry 21-1.mp4": "079832b6e49b283d80be402c9c928b90",
|
||||||
"subscription_test/Mock Entry 21-1.nfo": "dc714fd9f3c3729f74927ad245b50d9d"
|
"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.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||||
"subscription_test/Mock Entry 20-1.mp4": "34916dc26e723c3464adcc4687898ca8",
|
"subscription_test/Mock Entry 20-1.mp4": "34916dc26e723c3464adcc4687898ca8",
|
||||||
"subscription_test/Mock Entry 20-1.nfo": "68a6a9e51a12e75d4c68e6e644b409d1",
|
"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.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||||
"subscription_test/Mock Entry 20-2.mp4": "01a910b7a023325aa9d4ad3a013a1e02",
|
"subscription_test/Mock Entry 20-2.mp4": "01a910b7a023325aa9d4ad3a013a1e02",
|
||||||
"subscription_test/Mock Entry 20-2.nfo": "1cbe51945c1a7a9ced0eb1222e9d2405",
|
"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.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||||
"subscription_test/Mock Entry 20-3.mp4": "812b6db9ff08bf1822e99e43d371400d",
|
"subscription_test/Mock Entry 20-3.mp4": "812b6db9ff08bf1822e99e43d371400d",
|
||||||
"subscription_test/Mock Entry 20-3.nfo": "ef07f30d3e882de3f7cb3ad675125352",
|
"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.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||||
"subscription_test/Mock Entry 21-1.mp4": "079832b6e49b283d80be402c9c928b90",
|
"subscription_test/Mock Entry 21-1.mp4": "079832b6e49b283d80be402c9c928b90",
|
||||||
"subscription_test/Mock Entry 21-1.nfo": "dc714fd9f3c3729f74927ad245b50d9d"
|
"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.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||||
"subscription_test/Mock Entry 20-1.mp4": "34916dc26e723c3464adcc4687898ca8",
|
"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.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||||
"subscription_test/Mock Entry 20-2.mp4": "01a910b7a023325aa9d4ad3a013a1e02",
|
"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.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||||
"subscription_test/Mock Entry 20-3.mp4": "812b6db9ff08bf1822e99e43d371400d",
|
"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.jpg": "e80c508c4818454300133fe1dc1a9cd7",
|
||||||
"subscription_test/Mock Entry 21-1.mp4": "079832b6e49b283d80be402c9c928b90"
|
"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.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]-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].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.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)-thumb.jpg": "c956192a379b3661595c9920972d4819",
|
||||||
"Project ⧸ Zombie/Season 2011/s2011.e052901 - Project Zombie |Official Trailer| (IP: mc.projectzombie.beastnode.net).info.json": "INFO_JSON",
|
"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.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]-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].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/Season 01/s01.e11032101 - Jesse's Minecraft Server [Trailer - Mar.21].nfo": "c56083e2f3545fa2cafc4d67cbfdacf8",
|
||||||
"JMC/fanart.jpg": "129c6639b47299bc48062f0365e670ee",
|
"JMC/fanart.jpg": "129c6639b47299bc48062f0365e670ee",
|
||||||
"JMC/poster.jpg": "5de28eea5a921a041452ab3ce1041f73",
|
"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.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]-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].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/Season 01/s01.e11032101 - Jesse's Minecraft Server [Trailer - Mar.21].nfo": "c56083e2f3545fa2cafc4d67cbfdacf8",
|
||||||
"JMC/fanart.jpg": "129c6639b47299bc48062f0365e670ee",
|
"JMC/fanart.jpg": "129c6639b47299bc48062f0365e670ee",
|
||||||
"JMC/poster.jpg": "5de28eea5a921a041452ab3ce1041f73",
|
"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.jpg": "fb95b510681676e81c321171fc23143e",
|
||||||
"JMC/Oblivion Mod "Falcor" p.1.mp4": "318faf3eb1d7666491553cdfd2a2e9fb",
|
"JMC/Oblivion Mod "Falcor" p.1.mp4": "318faf3eb1d7666491553cdfd2a2e9fb",
|
||||||
"JMC/Oblivion Mod "Falcor" p.1.nfo": "58c2be339869b5d071c1758d55c72ddb"
|
"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.jpg": "fb95b510681676e81c321171fc23143e",
|
||||||
"JMC/Oblivion Mod "Falcor" p.1.mp4": "318faf3eb1d7666491553cdfd2a2e9fb",
|
"JMC/Oblivion Mod "Falcor" p.1.mp4": "318faf3eb1d7666491553cdfd2a2e9fb",
|
||||||
"JMC/Oblivion Mod "Falcor" p.1.nfo": "58c2be339869b5d071c1758d55c72ddb"
|
"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.mp4": "d3bdda5ec6822ea3b4b4bd8908eb327a",
|
||||||
"JMC/Oblivion Mod "Falcor" p.1.nfo": "58c2be339869b5d071c1758d55c72ddb"
|
"JMC/Oblivion Mod "Falcor" p.1.nfo": "58c2be339869b5d071c1758d55c72ddb"
|
||||||
}
|
}
|
||||||
|
|
@ -2,64 +2,6 @@ Files created:
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
{output_directory}
|
{output_directory}
|
||||||
.ytdl-sub-Sithu Aye-download-archive.json
|
.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)
|
{output_directory}/Sithu Aye/[2022] Re:Invent the Universe (10th Anniversary Remaster)
|
||||||
01 - Invent the Universe.mp3
|
01 - Invent the Universe.mp3
|
||||||
Music Tags:
|
Music Tags:
|
||||||
|
|
@ -215,6 +157,62 @@ Files created:
|
||||||
original_date: 2024-03-23
|
original_date: 2024-03-23
|
||||||
title: Run it Down
|
title: Run it Down
|
||||||
track: 1
|
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
|
year: 2024
|
||||||
folder.jpg
|
folder.jpg
|
||||||
|
|
@ -3,8 +3,19 @@ Files created:
|
||||||
{output_directory}
|
{output_directory}
|
||||||
.ytdl-sub-chapters_from_comments-download-archive.json
|
.ytdl-sub-chapters_from_comments-download-archive.json
|
||||||
{output_directory}/JMC
|
{output_directory}/JMC
|
||||||
|
Move 78 - Automated Improvisation [Full Album].info.json
|
||||||
Move 78 - Automated Improvisation [Full Album].jpg
|
Move 78 - Automated Improvisation [Full Album].jpg
|
||||||
Move 78 - Automated Improvisation [Full Album].mp4
|
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
|
Embedded subtitles with lang(s) en, de
|
||||||
Video Tags:
|
Video Tags:
|
||||||
album: Music Videos
|
album: Music Videos
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ Files created:
|
||||||
{output_directory}
|
{output_directory}
|
||||||
.ytdl-sub-file_convert_test-download-archive.json
|
.ytdl-sub-file_convert_test-download-archive.json
|
||||||
{output_directory}/file_convert_test
|
{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.jpg
|
||||||
When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.mp4
|
When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ Files created:
|
||||||
{output_directory}
|
{output_directory}
|
||||||
.ytdl-sub-file_convert_test-download-archive.json
|
.ytdl-sub-file_convert_test-download-archive.json
|
||||||
{output_directory}/file_convert_test
|
{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.jpg
|
||||||
When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.mkv
|
When you hear Hugh Jackman is returning as Wolverine in Deadpool 3.mkv
|
||||||
Converted from mp4
|
Converted from mp4
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ Files created:
|
||||||
{output_directory}
|
{output_directory}
|
||||||
.ytdl-sub-match_filter_test-download-archive.json
|
.ytdl-sub-match_filter_test-download-archive.json
|
||||||
{output_directory}/match_filter_test
|
{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].jpg
|
||||||
Jesse's Minecraft Server [Trailer - Mar.21].mp4
|
Jesse's Minecraft Server [Trailer - Mar.21].mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ Files created:
|
||||||
the
|
the
|
||||||
tag 🎸🎸
|
tag 🎸🎸
|
||||||
{output_directory}/kodi_safe_xml
|
{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.jpg
|
||||||
Can you hear the difference? 🎸🔥 #shorts.mp4
|
Can you hear the difference? 🎸🔥 #shorts.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ Files created:
|
||||||
the
|
the
|
||||||
tag □□
|
tag □□
|
||||||
{output_directory}/kodi_safe_xml
|
{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.jpg
|
||||||
Can you hear the difference? 🎸🔥 #shorts.mp4
|
Can you hear the difference? 🎸🔥 #shorts.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ Files created:
|
||||||
{output_directory}
|
{output_directory}
|
||||||
.ytdl-sub-sponsorblock_with_embedded_subs_test-download-archive.json
|
.ytdl-sub-sponsorblock_with_embedded_subs_test-download-archive.json
|
||||||
{output_directory}/JMC
|
{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.jpg
|
||||||
This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.mp4
|
This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.mp4
|
||||||
Embedded Chapters:
|
Embedded Chapters:
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ Files created:
|
||||||
{output_directory}
|
{output_directory}
|
||||||
.ytdl-sub-regex_capture_playlist_test-download-archive.json
|
.ytdl-sub-regex_capture_playlist_test-download-archive.json
|
||||||
{output_directory}/regex_capture_playlist_test
|
{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].jpg
|
||||||
Jesse's Minecraft Server [Trailer - Feb.1].mp4
|
Jesse's Minecraft Server [Trailer - Feb.1].mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
@ -27,6 +28,7 @@ Files created:
|
||||||
title_cap_1_sanitized: Trailer
|
title_cap_1_sanitized: Trailer
|
||||||
title_cap_2: Feb.1
|
title_cap_2: Feb.1
|
||||||
upload_date_both_caps: First and Second containing in regex default
|
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].jpg
|
||||||
Jesse's Minecraft Server [Trailer - Feb.27].mp4
|
Jesse's Minecraft Server [Trailer - Feb.27].mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ Files created:
|
||||||
{output_directory}
|
{output_directory}
|
||||||
.ytdl-sub-regex_exclude_playlist_test-download-archive.json
|
.ytdl-sub-regex_exclude_playlist_test-download-archive.json
|
||||||
{output_directory}/regex_exclude_playlist_test
|
{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].jpg
|
||||||
Jesse's Minecraft Server [Trailer - Mar.21].mp4
|
Jesse's Minecraft Server [Trailer - Mar.21].mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ Files created:
|
||||||
{output_directory}
|
{output_directory}
|
||||||
.ytdl-sub-regex_match_and_exclude_playlist_test-download-archive.json
|
.ytdl-sub-regex_match_and_exclude_playlist_test-download-archive.json
|
||||||
{output_directory}/regex_match_and_exclude_playlist_test
|
{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].jpg
|
||||||
Jesse's Minecraft Server [Trailer - Feb.1].mp4
|
Jesse's Minecraft Server [Trailer - Feb.1].mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ Files created:
|
||||||
{output_directory}
|
{output_directory}
|
||||||
.ytdl-sub-regex_using_overrides_test-download-archive.json
|
.ytdl-sub-regex_using_overrides_test-download-archive.json
|
||||||
{output_directory}/regex_using_overrides_test
|
{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].jpg
|
||||||
Jesse's Minecraft Server [Trailer - Mar.21].mp4
|
Jesse's Minecraft Server [Trailer - Mar.21].mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ Files created:
|
||||||
{output_directory}
|
{output_directory}
|
||||||
.ytdl-sub-subtitles_embedded_test-download-archive.json
|
.ytdl-sub-subtitles_embedded_test-download-archive.json
|
||||||
{output_directory}/JMC
|
{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.jpg
|
||||||
YouTube Rewind 2019: For the Record | #YouTubeRewind.mp4
|
YouTube Rewind 2019: For the Record | #YouTubeRewind.mp4
|
||||||
Embedded subtitles with lang(s) en, de
|
Embedded subtitles with lang(s) en, de
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ Files created:
|
||||||
{output_directory}/JMC
|
{output_directory}/JMC
|
||||||
YouTube Rewind 2019: For the Record | #YouTubeRewind.de.srt
|
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.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.jpg
|
||||||
YouTube Rewind 2019: For the Record | #YouTubeRewind.mp4
|
YouTube Rewind 2019: For the Record | #YouTubeRewind.mp4
|
||||||
Embedded subtitles with lang(s) en, de
|
Embedded subtitles with lang(s) en, de
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ Files created:
|
||||||
{output_directory}
|
{output_directory}
|
||||||
.ytdl-sub-subscription_test-download-archive.json
|
.ytdl-sub-subscription_test-download-archive.json
|
||||||
{output_directory}/subscription_test
|
{output_directory}/subscription_test
|
||||||
|
Mock Entry 20-1.info.json
|
||||||
Mock Entry 20-1.jpg
|
Mock Entry 20-1.jpg
|
||||||
Mock Entry 20-1.mp4
|
Mock Entry 20-1.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
@ -20,6 +21,7 @@ Files created:
|
||||||
genre: ytdl-sub
|
genre: ytdl-sub
|
||||||
premiered: 2020-08-08
|
premiered: 2020-08-08
|
||||||
title: Mock Entry 20-1
|
title: Mock Entry 20-1
|
||||||
|
Mock Entry 20-2.info.json
|
||||||
Mock Entry 20-2.jpg
|
Mock Entry 20-2.jpg
|
||||||
Mock Entry 20-2.mp4
|
Mock Entry 20-2.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
@ -37,6 +39,7 @@ Files created:
|
||||||
genre: ytdl-sub
|
genre: ytdl-sub
|
||||||
premiered: 2020-08-08
|
premiered: 2020-08-08
|
||||||
title: Mock Entry 20-2
|
title: Mock Entry 20-2
|
||||||
|
Mock Entry 20-3.info.json
|
||||||
Mock Entry 20-3.jpg
|
Mock Entry 20-3.jpg
|
||||||
Mock Entry 20-3.mp4
|
Mock Entry 20-3.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
@ -54,6 +57,7 @@ Files created:
|
||||||
genre: ytdl-sub
|
genre: ytdl-sub
|
||||||
premiered: 2020-08-07
|
premiered: 2020-08-07
|
||||||
title: Mock Entry 20-3
|
title: Mock Entry 20-3
|
||||||
|
Mock Entry 21-1.info.json
|
||||||
Mock Entry 21-1.jpg
|
Mock Entry 21-1.jpg
|
||||||
Mock Entry 21-1.mp4
|
Mock Entry 21-1.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ Files created:
|
||||||
{output_directory}
|
{output_directory}
|
||||||
.ytdl-sub-subscription_test-download-archive.json
|
.ytdl-sub-subscription_test-download-archive.json
|
||||||
{output_directory}/subscription_test
|
{output_directory}/subscription_test
|
||||||
|
Mock Entry 20-1.info.json
|
||||||
Mock Entry 20-1.jpg
|
Mock Entry 20-1.jpg
|
||||||
Mock Entry 20-1.mp4
|
Mock Entry 20-1.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
@ -20,6 +21,7 @@ Files created:
|
||||||
genre: ytdl-sub
|
genre: ytdl-sub
|
||||||
premiered: 2020-08-08
|
premiered: 2020-08-08
|
||||||
title: Mock Entry 20-1
|
title: Mock Entry 20-1
|
||||||
|
Mock Entry 20-2.info.json
|
||||||
Mock Entry 20-2.jpg
|
Mock Entry 20-2.jpg
|
||||||
Mock Entry 20-2.mp4
|
Mock Entry 20-2.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
@ -37,6 +39,7 @@ Files created:
|
||||||
genre: ytdl-sub
|
genre: ytdl-sub
|
||||||
premiered: 2020-08-08
|
premiered: 2020-08-08
|
||||||
title: Mock Entry 20-2
|
title: Mock Entry 20-2
|
||||||
|
Mock Entry 20-3.info.json
|
||||||
Mock Entry 20-3.jpg
|
Mock Entry 20-3.jpg
|
||||||
Mock Entry 20-3.mp4
|
Mock Entry 20-3.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
@ -54,6 +57,7 @@ Files created:
|
||||||
genre: ytdl-sub
|
genre: ytdl-sub
|
||||||
premiered: 2020-08-07
|
premiered: 2020-08-07
|
||||||
title: Mock Entry 20-3
|
title: Mock Entry 20-3
|
||||||
|
Mock Entry 21-1.info.json
|
||||||
Mock Entry 21-1.jpg
|
Mock Entry 21-1.jpg
|
||||||
Mock Entry 21-1.mp4
|
Mock Entry 21-1.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ Files created:
|
||||||
{output_directory}
|
{output_directory}
|
||||||
.ytdl-sub-subscription_test-download-archive.json
|
.ytdl-sub-subscription_test-download-archive.json
|
||||||
{output_directory}/subscription_test
|
{output_directory}/subscription_test
|
||||||
|
Mock Entry 20-1.info.json
|
||||||
Mock Entry 20-1.jpg
|
Mock Entry 20-1.jpg
|
||||||
Mock Entry 20-1.mp4
|
Mock Entry 20-1.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
@ -12,6 +13,7 @@ Files created:
|
||||||
premiered: 2020-08-08
|
premiered: 2020-08-08
|
||||||
title: Mock Entry 20-1
|
title: Mock Entry 20-1
|
||||||
year: 2020
|
year: 2020
|
||||||
|
Mock Entry 20-2.info.json
|
||||||
Mock Entry 20-2.jpg
|
Mock Entry 20-2.jpg
|
||||||
Mock Entry 20-2.mp4
|
Mock Entry 20-2.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
@ -21,6 +23,7 @@ Files created:
|
||||||
premiered: 2020-08-08
|
premiered: 2020-08-08
|
||||||
title: Mock Entry 20-2
|
title: Mock Entry 20-2
|
||||||
year: 2020
|
year: 2020
|
||||||
|
Mock Entry 20-3.info.json
|
||||||
Mock Entry 20-3.jpg
|
Mock Entry 20-3.jpg
|
||||||
Mock Entry 20-3.mp4
|
Mock Entry 20-3.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
@ -30,6 +33,7 @@ Files created:
|
||||||
premiered: 2020-08-07
|
premiered: 2020-08-07
|
||||||
title: Mock Entry 20-3
|
title: Mock Entry 20-3
|
||||||
year: 2020
|
year: 2020
|
||||||
|
Mock Entry 21-1.info.json
|
||||||
Mock Entry 21-1.jpg
|
Mock Entry 21-1.jpg
|
||||||
Mock Entry 21-1.mp4
|
Mock Entry 21-1.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
Files created:
|
Files created:
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
{output_directory}/JMC
|
{output_directory}/JMC
|
||||||
|
Oblivion Mod "Falcor" p.1.info.json
|
||||||
Oblivion Mod "Falcor" p.1.jpg
|
Oblivion Mod "Falcor" p.1.jpg
|
||||||
Oblivion Mod "Falcor" p.1.mp4
|
Oblivion Mod "Falcor" p.1.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
Files created:
|
Files created:
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
{output_directory}/JMC
|
{output_directory}/JMC
|
||||||
|
Oblivion Mod "Falcor" p.1.info.json
|
||||||
Oblivion Mod "Falcor" p.1.jpg
|
Oblivion Mod "Falcor" p.1.jpg
|
||||||
Oblivion Mod "Falcor" p.1.mp4
|
Oblivion Mod "Falcor" p.1.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
Files created:
|
Files created:
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
{output_directory}/JMC
|
{output_directory}/JMC
|
||||||
|
Oblivion Mod "Falcor" p.1.info.json
|
||||||
Oblivion Mod "Falcor" p.1.mp4
|
Oblivion Mod "Falcor" p.1.mp4
|
||||||
Video Tags:
|
Video Tags:
|
||||||
album: Music Videos
|
album: Music Videos
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
|
import os.path
|
||||||
import re
|
import re
|
||||||
|
from pathlib import Path
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
from typing import Optional
|
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(
|
@pytest.mark.parametrize(
|
||||||
"preset_dict",
|
"preset_dict",
|
||||||
[
|
[
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
|
import os.path
|
||||||
import re
|
import re
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
import pytest
|
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):
|
def test_preset_parent(self, config_file, output_options, youtube_video):
|
||||||
preset = Preset(
|
preset = Preset(
|
||||||
config=config_file,
|
config=config_file,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue