[BACKEND] Parallelize tests, remove track and artist source variables (#246)
This commit is contained in:
parent
3d0ade1141
commit
1486acb421
30 changed files with 260 additions and 171 deletions
181
.github/workflows/ci.yaml
vendored
181
.github/workflows/ci.yaml
vendored
|
|
@ -8,30 +8,195 @@ on:
|
|||
branches:
|
||||
- master
|
||||
jobs:
|
||||
build:
|
||||
test-build:
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: ["3.10"]
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v3
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y ffmpeg
|
||||
python -m pip install --upgrade pip
|
||||
python -m venv /opt/env
|
||||
source /opt/env/bin/activate
|
||||
pip install -e .[lint,test]
|
||||
- name: Save Python build cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/env
|
||||
key: ${{github.sha}}-env
|
||||
|
||||
test-lint:
|
||||
runs-on: ubuntu-22.04
|
||||
needs: test-build
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Restore Python build cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/env
|
||||
key: ${{github.sha}}-env
|
||||
|
||||
- name: Run linters
|
||||
run: |
|
||||
source /opt/env/bin/activate
|
||||
./tools/linter check
|
||||
- name: Run tests with coverage
|
||||
|
||||
test-unit:
|
||||
runs-on: ubuntu-22.04
|
||||
needs: test-build
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Restore Python build cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/env
|
||||
key: ${{github.sha}}-env
|
||||
|
||||
- name: Run unit tests with coverage
|
||||
run: |
|
||||
./tools/test xml
|
||||
source /opt/env/bin/activate
|
||||
coverage run -m pytest tests/unit && coverage xml -o /opt/coverage/unit/coverage.xml
|
||||
|
||||
- name: Save coverage
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/coverage/unit
|
||||
key: ${{github.sha}}-coverage-unit
|
||||
|
||||
test-soundcloud:
|
||||
runs-on: ubuntu-22.04
|
||||
needs: test-build
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Restore Python build cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/env
|
||||
key: ${{github.sha}}-env
|
||||
|
||||
- name: Run e2e soundcloud tests with coverage
|
||||
run: |
|
||||
sudo apt-get install -y ffmpeg
|
||||
source /opt/env/bin/activate
|
||||
coverage run -m pytest tests/e2e/soundcloud && coverage xml -o /opt/coverage/soundcloud/coverage.xml
|
||||
|
||||
- name: Save coverage
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/coverage/soundcloud
|
||||
key: ${{github.sha}}-coverage-soundcloud
|
||||
|
||||
test-youtube:
|
||||
runs-on: ubuntu-22.04
|
||||
needs: test-build
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Restore Python build cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/env
|
||||
key: ${{github.sha}}-env
|
||||
|
||||
- name: Run e2e youtube tests with coverage
|
||||
run: |
|
||||
sudo apt-get install -y ffmpeg
|
||||
source /opt/env/bin/activate
|
||||
coverage run -m pytest tests/e2e/youtube && coverage xml -o /opt/coverage/youtube/coverage.xml
|
||||
|
||||
- name: Save coverage
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/coverage/youtube
|
||||
key: ${{github.sha}}-coverage-youtube
|
||||
|
||||
test-plugins:
|
||||
runs-on: ubuntu-22.04
|
||||
needs: test-build
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Restore Python build cache
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/env
|
||||
key: ${{github.sha}}-env
|
||||
|
||||
- name: Run e2e plugin tests with coverage
|
||||
run: |
|
||||
sudo apt-get install -y ffmpeg
|
||||
source /opt/env/bin/activate
|
||||
coverage run -m pytest tests/e2e/plugins && coverage xml -o /opt/coverage/plugins/coverage.xml
|
||||
|
||||
- name: Save coverage
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/coverage/plugins
|
||||
key: ${{github.sha}}-coverage-plugins
|
||||
|
||||
codecov-upload:
|
||||
runs-on: ubuntu-22.04
|
||||
needs: [
|
||||
test-unit,
|
||||
test-soundcloud,
|
||||
test-youtube,
|
||||
test-plugins
|
||||
]
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- name: Restore unit test coverage
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/coverage/unit
|
||||
key: ${{github.sha}}-coverage-unit
|
||||
|
||||
- name: Restore soundcloud test coverage
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/coverage/soundcloud
|
||||
key: ${{github.sha}}-coverage-soundcloud
|
||||
|
||||
- name: Restore youtube test coverage
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/coverage/youtube
|
||||
key: ${{github.sha}}-coverage-youtube
|
||||
|
||||
- name: Restore plugins test coverage
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /opt/coverage/plugins
|
||||
key: ${{github.sha}}-coverage-plugins
|
||||
|
||||
- name: Upload code coverage to codecov.io
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ./coverage.xml
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
files: /opt/coverage/unit/coverage.xml,/opt/coverage/soundcloud/coverage.xml,/opt/coverage/youtube/coverage.xml,/opt/coverage/plugins/coverage.xml
|
||||
6
.github/workflows/package.yaml
vendored
6
.github/workflows/package.yaml
vendored
|
|
@ -49,7 +49,7 @@ jobs:
|
|||
key: ${{github.sha}}
|
||||
|
||||
|
||||
# Build ARM64 container
|
||||
# Build ARM64 container, only on master branch to save time testing
|
||||
package-arm64:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [
|
||||
|
|
@ -59,6 +59,7 @@ jobs:
|
|||
permissions:
|
||||
contents: read
|
||||
|
||||
if: ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v') }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
|
|
@ -135,7 +136,8 @@ jobs:
|
|||
key: ${{github.sha}}
|
||||
|
||||
|
||||
# On master branch, build the docker manifest file from the cached docker builds and push to the registry
|
||||
# On master branch, build the docker manifest file from the cached
|
||||
# docker builds and push to the registry
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [
|
||||
|
|
|
|||
|
|
@ -55,9 +55,11 @@ presets:
|
|||
# Overrides is a section where we can define our own variables, and use them in
|
||||
# any other section. We define our music video directory and episode file name
|
||||
# here, which gets reused above for the video, thumbnail, and NFO file.
|
||||
# Recommended to override the artist variable.
|
||||
overrides:
|
||||
music_video_directory: "path/to/Music Videos"
|
||||
music_video_name: "{artist_sanitized} - {title_sanitized}"
|
||||
artist: "{channel}"
|
||||
|
||||
# It is not always ideal to download all of an artist's music videos.
|
||||
# Maybe you only like one song of theirs. We can reuse our preset above
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ presets:
|
|||
music_directory: "/path/to/music"
|
||||
custom_track_name: "{title}"
|
||||
custom_album_name: "Singles"
|
||||
custom_artist_name: "{artist}"
|
||||
custom_artist_name: "{channel}"
|
||||
custom_track_number: "1"
|
||||
|
||||
# TODO: make a playlist of individual songs into an album. Need playlist_title
|
||||
|
|
|
|||
|
|
@ -28,51 +28,6 @@ class YoutubeVideoVariables(EntryVariables):
|
|||
"""
|
||||
return sanitize_filename(self.channel)
|
||||
|
||||
@property
|
||||
def track_title(self: BaseEntry) -> str:
|
||||
"""
|
||||
Returns
|
||||
-------
|
||||
str
|
||||
The track title of a music video if it is available, otherwise it falls back to the
|
||||
title. NOTE: Even if a video has music metadata, this variable does not always get
|
||||
pulled via yt-dlp. Use with caution.
|
||||
"""
|
||||
# Try to get the track, fall back on title
|
||||
return self.kwargs_get("track", super().title)
|
||||
|
||||
@property
|
||||
def track_title_sanitized(self) -> str:
|
||||
"""
|
||||
Returns
|
||||
-------
|
||||
str
|
||||
The sanitized track title.
|
||||
"""
|
||||
return sanitize_filename(self.track_title)
|
||||
|
||||
@property
|
||||
def artist(self: BaseEntry) -> str:
|
||||
"""
|
||||
Returns
|
||||
-------
|
||||
str
|
||||
The artist of a music video if it is available, otherwise it falls back to the channel.
|
||||
NOTE: Even if a video has music metadata, this variable does not always get pulled via
|
||||
yt-dlp. Use with caution.
|
||||
"""
|
||||
return self.kwargs_get("artist", self.kwargs("channel"))
|
||||
|
||||
@property
|
||||
def artist_sanitized(self) -> str:
|
||||
"""
|
||||
Returns
|
||||
-------
|
||||
str
|
||||
The sanitized artist name.
|
||||
"""
|
||||
return sanitize_filename(self.artist)
|
||||
|
||||
@property
|
||||
def playlist_index(self) -> int:
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -46,11 +46,6 @@ def regex_subscription_dict(output_directory):
|
|||
"Second containing {in_regex_default}",
|
||||
],
|
||||
},
|
||||
"artist": {
|
||||
"match": ["Never (.*) capture"],
|
||||
"capture_group_names": ["always_default"],
|
||||
"capture_group_defaults": ["Always default"],
|
||||
},
|
||||
},
|
||||
},
|
||||
"nfo_tags": {
|
||||
|
|
@ -60,8 +55,6 @@ def regex_subscription_dict(output_directory):
|
|||
"title_cap_2": "{title_date}",
|
||||
"desc_cap": "{description_website}",
|
||||
"upload_date_both_caps": "{upload_captured_year} and {upload_captured_month}",
|
||||
"artist_cap_always_default": "{always_default}",
|
||||
"artist_cap_always_default_sanitized": "{always_default_sanitized}",
|
||||
"override_with_capture_variable": "{contains_regex_default}",
|
||||
"override_with_capture_variable_sanitized": "{contains_regex_sanitized_default}",
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ def yt_album_as_chapters_with_regex_preset_dict(yt_album_as_chapters_preset_dict
|
|||
"captured_album",
|
||||
],
|
||||
"capture_group_defaults": [
|
||||
"{artist}",
|
||||
"{channel}",
|
||||
"{title}",
|
||||
],
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
".ytdl-sub-recent-download-archive.json": "23520634f7908081f3d1333a1441a578",
|
||||
"Season 2018/s2018.e1029 - Jesse's Minecraft Server | Teaser Trailer-thumb.jpg": "705ca4e0d99b37e9ecdf6bfe4b90c59b",
|
||||
"Season 2018/s2018.e1029 - Jesse's Minecraft Server | Teaser Trailer.info.json": "1f3a258a331dbec8513f07efb9311b4b",
|
||||
"Season 2018/s2018.e1029 - Jesse's Minecraft Server | Teaser Trailer.info.json": "200abe9cf0fbb96ef69698a633f7bebb",
|
||||
"Season 2018/s2018.e1029 - Jesse's Minecraft Server | Teaser Trailer.mp4": "82f6ee7253e1dbb83ae7215af08ffacc",
|
||||
"Season 2018/s2018.e1029 - Jesse's Minecraft Server | Teaser Trailer.nfo": "368d68db0cbe9eb4f43ece0517445e82",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id-thumb.jpg": "28d852ede73b879b9ebf9a061cfc7d46",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.en.srt": "3d2c4e7f65d2ca5e96da38ce7eecfc4e",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.info.json": "444c5c772742074552ca48bf1ff37e02",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.info.json": "7d7f3ce72ed87faef5675af218cecb30",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.mp4": "e733b4cc385b953b08c8eb0f47e03c1e",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.nfo": "d9114d43d87907b2afc06eb089a8ac0a",
|
||||
"fanart.jpg": "129c6639b47299bc48062f0365e670ee",
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
".ytdl-sub-recent-download-archive.json": "3bbf72c014d055ecf672c8ea603140f7",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id-thumb.jpg": "28d852ede73b879b9ebf9a061cfc7d46",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.en.srt": "3d2c4e7f65d2ca5e96da38ce7eecfc4e",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.info.json": "444c5c772742074552ca48bf1ff37e02",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.info.json": "7d7f3ce72ed87faef5675af218cecb30",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.mp4": "e733b4cc385b953b08c8eb0f47e03c1e",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.nfo": "d9114d43d87907b2afc06eb089a8ac0a",
|
||||
"fanart.jpg": "129c6639b47299bc48062f0365e670ee",
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
{
|
||||
"01. Intro (Feat. Racheal Ofori & Barney Artist).info.json": "d6caed6a753a43d0b04631cef1a8dcb7",
|
||||
"02. Answers (Feat. Rick David & Kaya Thomas - Dyke).info.json": "2bc497a07f620b2869737c91d4b2408e",
|
||||
"03. Blaze (Feat. Kaya Thomas - Dyke).info.json": "50f1a853a78d17455f6b07283f13b77b",
|
||||
"04. What If (Interlude).info.json": "59cfcb53a073943da369ff1e6ebdb3cb",
|
||||
"05. No Peace (Feat. Tom Misch).info.json": "429ca06333d06d09ea5e958a98afa343",
|
||||
"06. Closer (Feat. Lester Duval).info.json": "64fca065f1d01bb71cdff18b4e3526e3",
|
||||
"07. Delusions: Rumination (Interlude) (Feat. Racheal Ofori).info.json": "dccc927e7522642cca3b79c6c15a9c80",
|
||||
"08. Dreams (Feat. Carmody).info.json": "18e9a4f4609c9110a9da1669debdaf90",
|
||||
"09. Dreaming (Interlude) (Feat. Racheal Ofori).info.json": "5393cc84a1b48e365ea337c28a66b3ba",
|
||||
"10. Hopeful (Feat. Jordan Rakei).info.json": "117df1e4cbb2e3d476bc7b2608c3a656",
|
||||
"11. Sunrise (Pillows) (Feat. Emmavie).info.json": "4ec5967d4a77ef974325243c317b6c0f",
|
||||
"01. Intro (Feat. Racheal Ofori & Barney Artist).info.json": "94a46b3263d7a0c144371e19107d3cf6",
|
||||
"02. Answers (Feat. Rick David & Kaya Thomas - Dyke).info.json": "53748da13a12862098594051041a84d1",
|
||||
"03. Blaze (Feat. Kaya Thomas - Dyke).info.json": "1dfe88b81ad1e6bd25b9ce3a94b0ce1e",
|
||||
"04. What If (Interlude).info.json": "65b165b1d2ec5184fa7894350b4594e1",
|
||||
"05. No Peace (Feat. Tom Misch).info.json": "c47761519802a1a9f2078c1ffa58ab05",
|
||||
"06. Closer (Feat. Lester Duval).info.json": "0fa1a9de65f828e35825c0431c7fc72e",
|
||||
"07. Delusions: Rumination (Interlude) (Feat. Racheal Ofori).info.json": "fa8566864fd40d358f932a8e701f159e",
|
||||
"08. Dreams (Feat. Carmody).info.json": "366b8c6d86ac3f4978916acf0f770f9a",
|
||||
"09. Dreaming (Interlude) (Feat. Racheal Ofori).info.json": "79a5c6131e95d943f3ca8e97e9e3fcf3",
|
||||
"10. Hopeful (Feat. Jordan Rakei).info.json": "a3b98eea72b55353fb05250beafe6634",
|
||||
"11. Sunrise (Pillows) (Feat. Emmavie).info.json": "8d0ab69f6b93bed6737f3f04e51e9a24",
|
||||
"Alfa Mist - Nocturne [Full Album]/01 - 01. Intro (Feat. Racheal Ofori & Barney Artist).mp3": "ddc24257729f24055bf1b8dc06f8224c",
|
||||
"Alfa Mist - Nocturne [Full Album]/02 - 02. Answers (Feat. Rick David & Kaya Thomas - Dyke).mp3": "10dd7f13c469bd51ffcf3f8ff3ed3d69",
|
||||
"Alfa Mist - Nocturne [Full Album]/03 - 03. Blaze (Feat. Kaya Thomas - Dyke).mp3": "376722aaf08d1ef6dcba0aaf7a3b7a79",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"Oblivion Mod "Falcor" p.1.info.json": "1f0ddcab2854a515d27fba208ad23714",
|
||||
"Oblivion Mod "Falcor" p.1.info.json": "5357a4ad737634396c577883ae586516",
|
||||
"Oblivion Mod "Falcor" p.1/01 - Oblivion Mod "Falcor" p.1.mp3": "703ffb93964ac025ee66221b98ee4d49",
|
||||
"Oblivion Mod "Falcor" p.1/folder.jpg": "fb95b510681676e81c321171fc23143e"
|
||||
}
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"Answers (Feat. Rick David & Kaya Thomas - Dyke).info.json": "02a0382fb418e279ae378ae6c79ba736",
|
||||
"Blaze (Feat. Kaya Thomas - Dyke).info.json": "48ee2257b62a7e2d152bf6633105704a",
|
||||
"Closer (Feat. Lester Duval).info.json": "4f3f15c93f5fbe5f9bf5154eb3da3ecd",
|
||||
"Delusions: Rumination (Interlude) (Feat. Racheal Ofori).info.json": "15e3184ac935672ef51ca0ffea44a25d",
|
||||
"Dreaming (Interlude) (Feat. Racheal Ofori).info.json": "bf97ae0ddddd3dc6546a50ff42e9861e",
|
||||
"Dreams (Feat. Carmody).info.json": "ab159ed943d1b5d41fe1efd98c94d973",
|
||||
"Hopeful (Feat. Jordan Rakei).info.json": "05c32307125de1a28586be687c675cc1",
|
||||
"Intro (Feat. Racheal Ofori & Barney Artist).info.json": "c5dcd31ecc441011f9de08a999f5b0da",
|
||||
"No Peace (Feat. Tom Misch).info.json": "0f9f982f6e41c73f9925ef18f7c591c6",
|
||||
"Answers (Feat. Rick David & Kaya Thomas - Dyke).info.json": "3cb3f1eec1813da1a09e2a2be0435fe3",
|
||||
"Blaze (Feat. Kaya Thomas - Dyke).info.json": "a8600671c5c19683d405579185b51dbd",
|
||||
"Closer (Feat. Lester Duval).info.json": "d46241bc3b6322838aa3634f5d4b74f4",
|
||||
"Delusions: Rumination (Interlude) (Feat. Racheal Ofori).info.json": "fdeb58df8b9d55f7ddbb52fa3ac274d5",
|
||||
"Dreaming (Interlude) (Feat. Racheal Ofori).info.json": "e3d5795ea6c596d6d97244daadf55fe9",
|
||||
"Dreams (Feat. Carmody).info.json": "bcc5e14e8a25a62dfe6ab014a1eb98be",
|
||||
"Hopeful (Feat. Jordan Rakei).info.json": "5643583ca640949f95d5e9ca135048aa",
|
||||
"Intro (Feat. Racheal Ofori & Barney Artist).info.json": "49ef8e8555483a57773ce4573c9adbe9",
|
||||
"No Peace (Feat. Tom Misch).info.json": "2ed45e531fdc46712dc6db1a8cc05f94",
|
||||
"Nocturne/01 - Intro (Feat. Racheal Ofori & Barney Artist).mp3": "15157be58e0f72485de1e7e10961321f",
|
||||
"Nocturne/02 - Answers (Feat. Rick David & Kaya Thomas - Dyke).mp3": "28ff5e2dda45771f1c6d5265dd03095e",
|
||||
"Nocturne/03 - Blaze (Feat. Kaya Thomas - Dyke).mp3": "705d7fc1799c1a14aa0656bd6e2bf260",
|
||||
|
|
@ -20,6 +20,6 @@
|
|||
"Nocturne/10 - Hopeful (Feat. Jordan Rakei).mp3": "ef7e06690ac849e1dd35771936d6ddb6",
|
||||
"Nocturne/11 - Sunrise (Pillows) (Feat. Emmavie).mp3": "56293fb70edc1ef7decc2d417d87ff1d",
|
||||
"Nocturne/folder.jpg": "bd3685acc53072e591bae2505ecb0648",
|
||||
"Sunrise (Pillows) (Feat. Emmavie).info.json": "d90c8d11cd2cf7ec20c2b992c74bb93d",
|
||||
"What If (Interlude).info.json": "c7f78947b22f8ebd838bd4df076944b2"
|
||||
"Sunrise (Pillows) (Feat. Emmavie).info.json": "c2671abc8c942b8a6eac6f46f80be93f",
|
||||
"What If (Interlude).info.json": "2df295486a3265b73979984f815f7983"
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
"Jesse's Minecraft Server [Trailer - Feb.1].info.json": "15940eb703b80f718f8b23b98259ddff",
|
||||
"Jesse's Minecraft Server [Trailer - Feb.1].info.json": "c80b80fa2ba893d54b1468cdabd223d8",
|
||||
"Jesse's Minecraft Server [Trailer - Feb.1].ogg": "16f66f1d81541a1f18b62bc08ad01d16",
|
||||
"Jesse's Minecraft Server [Trailer - Feb.27].info.json": "84a6b6484a68179dac72ec2247a3eb22",
|
||||
"Jesse's Minecraft Server [Trailer - Feb.27].info.json": "55cd6350a21653ff7b988e665b3ea923",
|
||||
"Jesse's Minecraft Server [Trailer - Feb.27].ogg": "6f322d842a1e43b4c9981b42423d9b4c",
|
||||
"Jesse's Minecraft Server [Trailer - Mar.21].info.json": "7913fbea2ad4d5ea748342559a1a4d82",
|
||||
"Jesse's Minecraft Server [Trailer - Mar.21].info.json": "5dd992c1dc201e83870af317e12cdd43",
|
||||
"Jesse's Minecraft Server [Trailer - Mar.21].ogg": "fe1dc3361a102661c27020d5b95a2a81"
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"YouTube Rewind 2019: For the Record | #YouTubeRewind.info.json": "1ed6876a5e9d78654667a33ff71b2ea3",
|
||||
"YouTube Rewind 2019: For the Record | #YouTubeRewind.info.json": "6ef6fd3f6b1b0f4f7736d85e618777ac",
|
||||
"YouTube Rewind 2019: For the Record | #YouTubeRewind.mp3": "3a156b122bd79c956cce5079d3530cc3"
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"JMC - This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case-thumb.jpg": "b5353a824a4800cc26f884e3025ed969",
|
||||
"JMC - This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.info.json": "f6ccef77e006c1c6c9ef5c94df5e38f2",
|
||||
"JMC - This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.mp4": "2d40822bf4c0527f9080f00357b26ce0",
|
||||
"JMC - This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.info.json": "d5e2788100b6f0578fb0d7111e422785",
|
||||
"JMC - This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.mp4": "7e53f29dcc257882d947dd4728407745",
|
||||
"JMC - This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.nfo": "b9bd35e4f260c728774d8dd31f83637c"
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"JMC - This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case-thumb.jpg": "b5353a824a4800cc26f884e3025ed969",
|
||||
"JMC - This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.info.json": "e49ee50fbe88e7d1415f2df84e9c85cb",
|
||||
"JMC - This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.mp4": "6f0bac1c364ff3bb13d3e8a955aaa002",
|
||||
"JMC - This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.info.json": "a242fdeba2d172c8bc359298c7329f27",
|
||||
"JMC - This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.mp4": "a1f8b2973eb7c703e08baf85d9a26ac9",
|
||||
"JMC - This GPU SLIDES into this Case! - Silverstone SUGO 16 ITX Case.nfo": "b9bd35e4f260c728774d8dd31f83637c"
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"JMC - YouTube Rewind 2019: For the Record | #YouTubeRewind-thumb.jpg": "50ee47c80f679029f5d3503bb91b045a",
|
||||
"JMC - YouTube Rewind 2019: For the Record | #YouTubeRewind.info.json": "d34427224f4dbc62a0c6b48dbd10ec01",
|
||||
"JMC - YouTube Rewind 2019: For the Record | #YouTubeRewind.info.json": "c476aae219a3d3fa7a78b4afb145e8b5",
|
||||
"JMC - YouTube Rewind 2019: For the Record | #YouTubeRewind.mp4": "8562853314b75c1e47abd4f5ba97315c",
|
||||
"JMC - YouTube Rewind 2019: For the Record | #YouTubeRewind.nfo": "c64964fab07574080e5da3242e3bfd48"
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
"JMC - YouTube Rewind 2019: For the Record | #YouTubeRewind-thumb.jpg": "50ee47c80f679029f5d3503bb91b045a",
|
||||
"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": "9cdc849168fbc91724fe6fe6e4b72fed",
|
||||
"JMC - YouTube Rewind 2019: For the Record | #YouTubeRewind.info.json": "083591b51f393cd2d426fa9828d2e6fa",
|
||||
"JMC - YouTube Rewind 2019: For the Record | #YouTubeRewind.mp4": "8562853314b75c1e47abd4f5ba97315c",
|
||||
"JMC - YouTube Rewind 2019: For the Record | #YouTubeRewind.nfo": "c64964fab07574080e5da3242e3bfd48"
|
||||
}
|
||||
|
|
@ -1,32 +1,32 @@
|
|||
{
|
||||
".ytdl-sub-jb-download-archive.json": "1114f07090dfb35eea6848efeaf9755a",
|
||||
"j_b/[2021] Baby Santana's Dorian Groove/01 - Baby Santana's Dorian Groove.info.json": "5eb47f40cb9de8fd324d66c31995f934",
|
||||
"j_b/[2021] Baby Santana's Dorian Groove/01 - Baby Santana's Dorian Groove.info.json": "dd5596c895aa015734548b0012644ddd",
|
||||
"j_b/[2021] Baby Santana's Dorian Groove/01 - Baby Santana's Dorian Groove.mp3": "bffbd558e12c6a9e029dc136a88342c4",
|
||||
"j_b/[2021] Baby Santana's Dorian Groove/folder.jpg": "967892be44b8c47e1be73f055a7c6f08",
|
||||
"j_b/[2021] Purple Clouds/01 - Purple Clouds.info.json": "3301ac86ee70a05abe0588277d1e4a6c",
|
||||
"j_b/[2021] Purple Clouds/01 - Purple Clouds.info.json": "86aaba3d72d84a54c3f1f9e0f1bb54e7",
|
||||
"j_b/[2021] Purple Clouds/01 - Purple Clouds.mp3": "038db58aebe2ba875b733932b42a94d6",
|
||||
"j_b/[2021] Purple Clouds/folder.jpg": "967892be44b8c47e1be73f055a7c6f08",
|
||||
"j_b/[2022] Acoustic Treats/01 - 20160426 184214.info.json": "6d5cc99d594bd5b7183a37b005225400",
|
||||
"j_b/[2022] Acoustic Treats/01 - 20160426 184214.info.json": "7cc6f9db8e623861534c78de7aa1147c",
|
||||
"j_b/[2022] Acoustic Treats/01 - 20160426 184214.mp3": "e145f0a2f6012768280c38655ca58065",
|
||||
"j_b/[2022] Acoustic Treats/02 - 20160502 123150.info.json": "6d73a0fc77aa8b718857236d9f7c6cbd",
|
||||
"j_b/[2022] Acoustic Treats/02 - 20160502 123150.info.json": "501cf469c5be8317e2be04bc2243d404",
|
||||
"j_b/[2022] Acoustic Treats/02 - 20160502 123150.mp3": "60c8b8817a197a13e4bb90903af612c5",
|
||||
"j_b/[2022] Acoustic Treats/03 - 20160504 143832.info.json": "4e6fc80669ee79572182d3066575a6a7",
|
||||
"j_b/[2022] Acoustic Treats/03 - 20160504 143832.info.json": "bf80d5682e4a060c1e32ee7d88899894",
|
||||
"j_b/[2022] Acoustic Treats/03 - 20160504 143832.mp3": "8265b7e4f79878af877bc6ecd9757efe",
|
||||
"j_b/[2022] Acoustic Treats/04 - 20160601 221234.info.json": "80aef642112e661d6eb30e0038cc7aed",
|
||||
"j_b/[2022] Acoustic Treats/04 - 20160601 221234.info.json": "8ae1746c6dc67cebf1e3df36584238f5",
|
||||
"j_b/[2022] Acoustic Treats/04 - 20160601 221234.mp3": "accf46b76891d2954b893d0f91d82816",
|
||||
"j_b/[2022] Acoustic Treats/05 - 20160601 222440.info.json": "25e5abf44f3bdb57c045c82121f7d11c",
|
||||
"j_b/[2022] Acoustic Treats/05 - 20160601 222440.info.json": "ca3e17cdde4709f265fcab0df8c96259",
|
||||
"j_b/[2022] Acoustic Treats/05 - 20160601 222440.mp3": "e1f584f523336160d5c1104a61de77f3",
|
||||
"j_b/[2022] Acoustic Treats/06 - 20170604 190236.info.json": "4524f03ec40823085bc08294b108bfa9",
|
||||
"j_b/[2022] Acoustic Treats/06 - 20170604 190236.info.json": "7109c43eca4316aa0b18151b7480d8da",
|
||||
"j_b/[2022] Acoustic Treats/06 - 20170604 190236.mp3": "f6885b25901177f0357649afe97328cc",
|
||||
"j_b/[2022] Acoustic Treats/07 - 20170612 193646.info.json": "83e5d1403994a9ecd20a9dcb545a4cb6",
|
||||
"j_b/[2022] Acoustic Treats/07 - 20170612 193646.info.json": "5419304bbd7c27ac5b12e1a56bd6a504",
|
||||
"j_b/[2022] Acoustic Treats/07 - 20170612 193646.mp3": "fa057f221cbe4cf2442cd2fdb960743e",
|
||||
"j_b/[2022] Acoustic Treats/08 - 20170628 215206.info.json": "5bccfb88c2441af51294cefb988ef131",
|
||||
"j_b/[2022] Acoustic Treats/08 - 20170628 215206.info.json": "139549303915d2bc35addd1ecdd5cd4a",
|
||||
"j_b/[2022] Acoustic Treats/08 - 20170628 215206.mp3": "7794ae812c64580e2ac8fc457d5cc85f",
|
||||
"j_b/[2022] Acoustic Treats/09 - Finding Home.info.json": "84347cdbfb61ed1e2c21d3cab7325966",
|
||||
"j_b/[2022] Acoustic Treats/09 - Finding Home.info.json": "85a11cc5860bdfbd6577601043f6aa9b",
|
||||
"j_b/[2022] Acoustic Treats/09 - Finding Home.mp3": "adbf02eddb2090c008eb497d13ff84b9",
|
||||
"j_b/[2022] Acoustic Treats/10 - Shallow Water WIP.info.json": "1eacf5411e7e7041609c9d194013c78d",
|
||||
"j_b/[2022] Acoustic Treats/10 - Shallow Water WIP.info.json": "7317859f8b458a22a51e2aef2a4418f5",
|
||||
"j_b/[2022] Acoustic Treats/10 - Shallow Water WIP.mp3": "65bb10c84366c71498161734f953e93d",
|
||||
"j_b/[2022] Acoustic Treats/11 - Untold History.info.json": "0ab0eb6aa6e8b3f38076aeed0fae2a13",
|
||||
"j_b/[2022] Acoustic Treats/11 - Untold History.info.json": "d240bb16200eb688a46bc746af74dbc9",
|
||||
"j_b/[2022] Acoustic Treats/11 - Untold History.mp3": "6904b2918e5dc38d9a9f72d967eb74bf",
|
||||
"j_b/[2022] Acoustic Treats/folder.jpg": "967892be44b8c47e1be73f055a7c6f08"
|
||||
}
|
||||
|
|
@ -1,52 +1,52 @@
|
|||
{
|
||||
".ytdl-sub-pz-download-archive.json": "70615451318cdb5e018e007c77893a39",
|
||||
"Season 2010/s2010.e0813 - Oblivion Mod "Falcor" p.1-thumb.jpg": "fb95b510681676e81c321171fc23143e",
|
||||
"Season 2010/s2010.e0813 - Oblivion Mod "Falcor" p.1.info.json": "321813dd5598303d5fc91c7aa302f1b5",
|
||||
"Season 2010/s2010.e0813 - Oblivion Mod "Falcor" p.1.info.json": "5a73e1a5de066b11b8c228f8881d790c",
|
||||
"Season 2010/s2010.e0813 - Oblivion Mod "Falcor" p.1.mp4": "931a705864c57d21d6fedebed4af6bbc",
|
||||
"Season 2010/s2010.e0813 - Oblivion Mod "Falcor" p.1.nfo": "2d0738094d8e649eaebbab16fd647da1",
|
||||
"Season 2010/s2010.e1202 - Oblivion Mod "Falcor" p.2-thumb.jpg": "8b32ee9c037fa669e444a0ac181525a1",
|
||||
"Season 2010/s2010.e1202 - Oblivion Mod "Falcor" p.2.info.json": "461c98e86a4c3848fd89671a78900131",
|
||||
"Season 2010/s2010.e1202 - Oblivion Mod "Falcor" p.2.mp4": "d3469b4dca7139cb3dbc38712b6796bf",
|
||||
"Season 2010/s2010.e1202 - Oblivion Mod "Falcor" p.2.info.json": "a43092fc871ab2f6697adc8f60a14dd2",
|
||||
"Season 2010/s2010.e1202 - Oblivion Mod "Falcor" p.2.mp4": "0b11a785addfac82a6c1dbc897c0a8f9",
|
||||
"Season 2010/s2010.e1202 - Oblivion Mod "Falcor" p.2.nfo": "5c258f9e54854ef292ce3c58331da110",
|
||||
"Season 2011/s2011.e0201 - Jesse's Minecraft Server [Trailer - Feb.1]-thumb.jpg": "b232d253df621aa770b780c1301d364d",
|
||||
"Season 2011/s2011.e0201 - Jesse's Minecraft Server [Trailer - Feb.1].info.json": "ccb88e48fa500e74f7a51fcac5d4934d",
|
||||
"Season 2011/s2011.e0201 - Jesse's Minecraft Server [Trailer - Feb.1].info.json": "d3d7c8b13a89b461c748f6239efb450f",
|
||||
"Season 2011/s2011.e0201 - Jesse's Minecraft Server [Trailer - Feb.1].mp4": "e66287b9832277b6a4d1554e29d9fdcc",
|
||||
"Season 2011/s2011.e0201 - Jesse's Minecraft Server [Trailer - Feb.1].nfo": "abb3ac33366cc3b86d0467c8fb80a323",
|
||||
"Season 2011/s2011.e0227 - Jesse's Minecraft Server [Trailer - Feb.27]-thumb.jpg": "d17c379ea8b362f5b97c6b213b0342cb",
|
||||
"Season 2011/s2011.e0227 - Jesse's Minecraft Server [Trailer - Feb.27].info.json": "157d3cb2fdb0f47d924fbab5a07bbe9e",
|
||||
"Season 2011/s2011.e0227 - Jesse's Minecraft Server [Trailer - Feb.27].info.json": "25824e1e019ba1ac3ad37167bc476d05",
|
||||
"Season 2011/s2011.e0227 - Jesse's Minecraft Server [Trailer - Feb.27].mp4": "04ab5cb3cc12325d0c96a7cd04a8b91d",
|
||||
"Season 2011/s2011.e0227 - Jesse's Minecraft Server [Trailer - Feb.27].nfo": "46190954652c9d9812e061fc0c9e1d92",
|
||||
"Season 2011/s2011.e0321 - Jesse's Minecraft Server [Trailer - Mar.21]-thumb.jpg": "e7830aa8a64b0cde65ba3f7e5fc56530",
|
||||
"Season 2011/s2011.e0321 - Jesse's Minecraft Server [Trailer - Mar.21].info.json": "9660710f3aab66cbfaaa485eac55db13",
|
||||
"Season 2011/s2011.e0321 - Jesse's Minecraft Server [Trailer - Mar.21].info.json": "5650cf47773fa4f8236e6fe62957759b",
|
||||
"Season 2011/s2011.e0321 - Jesse's Minecraft Server [Trailer - Mar.21].mp4": "025de6099a5c98e6397153c7a62d517d",
|
||||
"Season 2011/s2011.e0321 - Jesse's Minecraft Server [Trailer - Mar.21].nfo": "30993fa8e00a0e370b4db244f3da8f7d",
|
||||
"Season 2011/s2011.e0529 - Project Zombie |Official Trailer| (IP: mc.projectzombie.beastnode.net)-thumb.jpg": "c956192a379b3661595c9920972d4819",
|
||||
"Season 2011/s2011.e0529 - Project Zombie |Official Trailer| (IP: mc.projectzombie.beastnode.net).info.json": "d43ca09cff753e13c4d4badaad8b8cf3",
|
||||
"Season 2011/s2011.e0529 - Project Zombie |Official Trailer| (IP: mc.projectzombie.beastnode.net).info.json": "23878cc3a8db1d836ec72261e4d7a95f",
|
||||
"Season 2011/s2011.e0529 - Project Zombie |Official Trailer| (IP: mc.projectzombie.beastnode.net).mp4": "3d9c19835b03355d6fd5d00cd59dbe5b",
|
||||
"Season 2011/s2011.e0529 - Project Zombie |Official Trailer| (IP: mc.projectzombie.beastnode.net).nfo": "11a0e8754c414875bcd454358683da5f",
|
||||
"Season 2011/s2011.e0630 - Project Zombie |Fin|-thumb.jpg": "00ed383591779ffe98291de60f198fe9",
|
||||
"Season 2011/s2011.e0630 - Project Zombie |Fin|.info.json": "351c14be8af8b7811515533f778252af",
|
||||
"Season 2011/s2011.e0630 - Project Zombie |Fin|.info.json": "e6f93de0450c83fdd90ba3f6cade5d07",
|
||||
"Season 2011/s2011.e0630 - Project Zombie |Fin|.mp4": "4971cb2d4fa29460361031f3fa8e1ea9",
|
||||
"Season 2011/s2011.e0630 - Project Zombie |Fin|.nfo": "a464b9c8c48a9a5d4776436d8108f8f5",
|
||||
"Season 2011/s2011.e1121 - Skyrim 'Ultra HD w⧸Mods' [PC]-thumb.jpg": "1718599d5189c65f7d8cf6acfa5ea851",
|
||||
"Season 2011/s2011.e1121 - Skyrim 'Ultra HD w⧸Mods' [PC].info.json": "a46366e7be54d3cb755a8a2994a55d3e",
|
||||
"Season 2011/s2011.e1121 - Skyrim 'Ultra HD w⧸Mods' [PC].info.json": "c1a04de7bc628b88b32a774f656e890a",
|
||||
"Season 2011/s2011.e1121 - Skyrim 'Ultra HD w⧸Mods' [PC].mp4": "55e9b0add08c48c9c66105da0def2426",
|
||||
"Season 2011/s2011.e1121 - Skyrim 'Ultra HD w⧸Mods' [PC].nfo": "3562934ab9a5e802d955eda24ad355de",
|
||||
"Season 2012/s2012.e0123 - Project Zombie |Map Trailer|-thumb.jpg": "54ebe9df801b278fdd17b21afa8373a6",
|
||||
"Season 2012/s2012.e0123 - Project Zombie |Map Trailer|.info.json": "64857d41adcad52bf97611e4fcae292d",
|
||||
"Season 2012/s2012.e0123 - Project Zombie |Map Trailer|.info.json": "7daa381b23f0cbb14d84661b706bd424",
|
||||
"Season 2012/s2012.e0123 - Project Zombie |Map Trailer|.mp4": "65e4ce53ed5ec4139995469f99477a50",
|
||||
"Season 2012/s2012.e0123 - Project Zombie |Map Trailer|.nfo": "5e810d839be90dab579400a6177f90b3",
|
||||
"Season 2013/s2013.e0719 - Project Zombie Rewind |Trailer|-thumb.jpg": "e29d49433175de8a761af35c5307791f",
|
||||
"Season 2013/s2013.e0719 - Project Zombie Rewind |Trailer|.info.json": "8d18bb9557625b910dd044f158969d05",
|
||||
"Season 2013/s2013.e0719 - Project Zombie Rewind |Trailer|.info.json": "23bb9520f84cfb759f23b5dd4e820b21",
|
||||
"Season 2013/s2013.e0719 - Project Zombie Rewind |Trailer|.mp4": "18620a8257a686beda65e54add4d4cd1",
|
||||
"Season 2013/s2013.e0719 - Project Zombie Rewind |Trailer|.nfo": "83772bec917bb5d71e1ca0c061c1ec78",
|
||||
"Season 2018/s2018.e1029 - Jesse's Minecraft Server | Teaser Trailer-thumb.jpg": "705ca4e0d99b37e9ecdf6bfe4b90c59b",
|
||||
"Season 2018/s2018.e1029 - Jesse's Minecraft Server | Teaser Trailer.info.json": "d9088a723ce5445c88bf72cb5a39b933",
|
||||
"Season 2018/s2018.e1029 - Jesse's Minecraft Server | Teaser Trailer.info.json": "2a0033e6f81b3a186241c3274b17c520",
|
||||
"Season 2018/s2018.e1029 - Jesse's Minecraft Server | Teaser Trailer.mp4": "82f6ee7253e1dbb83ae7215af08ffacc",
|
||||
"Season 2018/s2018.e1029 - Jesse's Minecraft Server | Teaser Trailer.nfo": "368d68db0cbe9eb4f43ece0517445e82",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id-thumb.jpg": "28d852ede73b879b9ebf9a061cfc7d46",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.en.srt": "3d2c4e7f65d2ca5e96da38ce7eecfc4e",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.info.json": "7907cf957d8de4d4036af60d686061f5",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.info.json": "8708fa01466ce60aa3a405c8aad08ac1",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.mp4": "e733b4cc385b953b08c8eb0f47e03c1e",
|
||||
"Season 2018/s2018.e1102 - Jesse's Minecraft Server | IP mc.jesse.id.nfo": "d9114d43d87907b2afc06eb089a8ac0a",
|
||||
"fanart.jpg": "129c6639b47299bc48062f0365e670ee",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"JMC - Jesse's Minecraft Server-thumb.jpg": "a3f1910f9c51f6442f845a528e190829",
|
||||
"JMC - Jesse's Minecraft Server.info.json": "5f54afde1f0965c2ede30291d978c7bf",
|
||||
"JMC - Jesse's Minecraft Server.info.json": "5d521fdb7b735e69080ac31fb67eaa99",
|
||||
"JMC - Jesse's Minecraft Server.mkv": "21f246b1c922e11add509ea26c43c53d",
|
||||
"JMC - Jesse's Minecraft Server.nfo": "d16396c60b63c06a4f2c9239553bdf61"
|
||||
}
|
||||
|
|
@ -1,16 +1,16 @@
|
|||
{
|
||||
".ytdl-sub-music_video_playlist_test-download-archive.json": "25b8e44961343116436584e341c7fe9b",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Feb.1]-thumb.jpg": "b232d253df621aa770b780c1301d364d",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Feb.1].info.json": "a1763e5afb49be0935d932334336f62f",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Feb.1].info.json": "2c8bf622feb28760376c76afe4a9f7b5",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Feb.1].mp4": "e66287b9832277b6a4d1554e29d9fdcc",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Feb.1].nfo": "f8fd72bb97ed03938487494ad9094ca0",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Feb.27]-thumb.jpg": "d17c379ea8b362f5b97c6b213b0342cb",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Feb.27].info.json": "2d3b4299450776edd822514d071671a4",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Feb.27].info.json": "009323eb966a7ad9b47abcbe499fc6e2",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Feb.27].mp4": "04ab5cb3cc12325d0c96a7cd04a8b91d",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Feb.27].nfo": "6de4d997cfb300356072b4ebb09cbe38",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Mar.21]-thumb.jpg": "e7830aa8a64b0cde65ba3f7e5fc56530",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Mar.21].info.json": "17a942919cb951d7cfd0dcc502bf4499",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Mar.21].info.json": "4bcc266ee276d45da869c37cd8caa084",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Mar.21].mp4": "025de6099a5c98e6397153c7a62d517d",
|
||||
"JMC - Jesse's Minecraft Server [Trailer - Mar.21].nfo": "f000a6ed8caacb62a134a6ca81e3f308",
|
||||
"tvshow.nfo": "792b0594defdfd6642086b76fcc6a91b"
|
||||
"tvshow.nfo": "e4123860532466ed5e0ebf2c9e44eb18"
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"JMC - Oblivion Mod "Falcor" p.1-thumb.jpg": "fb95b510681676e81c321171fc23143e",
|
||||
"JMC - Oblivion Mod "Falcor" p.1.info.json": "9ded1b3bd37e1d8d04a417dfb8291810",
|
||||
"JMC - Oblivion Mod "Falcor" p.1.info.json": "a1f343b06752c39dfdf07a26c836f5e9",
|
||||
"JMC - Oblivion Mod "Falcor" p.1.mp4": "28c14cdac05c803efe71abb9454ab306",
|
||||
"JMC - Oblivion Mod "Falcor" p.1.nfo": "24cc4e17d2bebc89b2759ce5471d403e"
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
Files created in '{output_directory}'
|
||||
----------------------------------------
|
||||
Rick Beato - Can you hear the difference? 🎸🔥 #shorts-thumb.jpg
|
||||
Rick Beato - Can you hear the difference? 🎸🔥 #shorts.3gp
|
||||
Rick Beato - Can you hear the difference? 🎸🔥 #shorts.info.json
|
||||
Rick Beato - Can you hear the difference? 🎸🔥 #shorts.mp4
|
||||
Rick Beato - Can you hear the difference? 🎸🔥 #shorts.nfo
|
||||
NFO tags:
|
||||
musicvideo:
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
Files created in '{output_directory}'
|
||||
----------------------------------------
|
||||
Rick Beato - Can you hear the difference? 🎸🔥 #shorts-thumb.jpg
|
||||
Rick Beato - Can you hear the difference? 🎸🔥 #shorts.3gp
|
||||
Rick Beato - Can you hear the difference? 🎸🔥 #shorts.info.json
|
||||
Rick Beato - Can you hear the difference? 🎸🔥 #shorts.mp4
|
||||
Rick Beato - Can you hear the difference? 🎸🔥 #shorts.nfo
|
||||
NFO tags:
|
||||
musicvideo:
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@ Project Zombie - Jesse's Minecraft Server [Trailer - Feb.1].nfo
|
|||
musicvideo:
|
||||
album: Music Videos
|
||||
artist: Project Zombie
|
||||
artist_cap_always_default: Always default
|
||||
artist_cap_always_default_sanitized: Always default
|
||||
desc_cap: www.jesseminecraft.webs
|
||||
override_with_capture_variable: contains Trailer
|
||||
override_with_capture_variable_sanitized: contains Trailer
|
||||
|
|
@ -28,8 +26,6 @@ Project Zombie - Jesse's Minecraft Server [Trailer - Feb.27].nfo
|
|||
musicvideo:
|
||||
album: Music Videos
|
||||
artist: Project Zombie
|
||||
artist_cap_always_default: Always default
|
||||
artist_cap_always_default_sanitized: Always default
|
||||
desc_cap: jesseminecraft.webs
|
||||
override_with_capture_variable: contains Trailer
|
||||
override_with_capture_variable_sanitized: contains Trailer
|
||||
|
|
|
|||
|
|
@ -34,6 +34,6 @@ JMC - Jesse's Minecraft Server [Trailer - Mar.21].nfo
|
|||
tvshow.nfo
|
||||
NFO tags:
|
||||
test:
|
||||
source_description: Trailers, Updates, etc
|
||||
source_title: Jesse's Minecraft Server
|
||||
source_uploader: Project Zombie
|
||||
playlist_description: Trailers, Updates, etc
|
||||
playlist_title: Jesse's Minecraft Server
|
||||
playlist_uploader: Project Zombie
|
||||
|
|
@ -1,12 +1,8 @@
|
|||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
from conftest import assert_debug_log
|
||||
from e2e.expected_download import assert_expected_downloads
|
||||
from e2e.expected_transaction_log import assert_transaction_log_matches
|
||||
|
||||
from ytdl_sub.subscriptions.subscription import Subscription
|
||||
from ytdl_sub.utils.retry import logger as retry_logger
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
|
@ -28,7 +24,7 @@ def channel_preset_dict(output_directory):
|
|||
},
|
||||
"output_directory_nfo_tags": {
|
||||
"tags": {
|
||||
"source_uploader": "{source_uploader}",
|
||||
"source_uploader": "{playlist_uploader}",
|
||||
}
|
||||
},
|
||||
"overrides": {"tv_show_name": "Project / Zombie"},
|
||||
|
|
|
|||
|
|
@ -23,9 +23,9 @@ def playlist_preset_dict(output_directory):
|
|||
"nfo_name": "tvshow.nfo",
|
||||
"nfo_root": "test",
|
||||
"tags": {
|
||||
"source_title": "{source_title}",
|
||||
"source_uploader": "{source_uploader}",
|
||||
"source_description": "{source_description}",
|
||||
"playlist_title": "{playlist_title}",
|
||||
"playlist_uploader": "{playlist_uploader}",
|
||||
"playlist_description": "{playlist_description}",
|
||||
},
|
||||
},
|
||||
"subtitles": {
|
||||
|
|
|
|||
|
|
@ -20,19 +20,7 @@ def channel():
|
|||
|
||||
|
||||
@pytest.fixture
|
||||
def track_title():
|
||||
return "not the title!"
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def artist():
|
||||
return "not the channel"
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_youtube_video_to_dict(
|
||||
mock_entry_to_dict, playlist_index, playlist_size, channel, track_title, artist
|
||||
):
|
||||
def mock_youtube_video_to_dict(mock_entry_to_dict, playlist_index, playlist_size, channel):
|
||||
return dict(
|
||||
mock_entry_to_dict,
|
||||
**{
|
||||
|
|
@ -40,26 +28,18 @@ def mock_youtube_video_to_dict(
|
|||
"playlist_size": playlist_size,
|
||||
"channel": channel,
|
||||
"channel_sanitized": channel,
|
||||
"track_title": track_title,
|
||||
"track_title_sanitized": track_title,
|
||||
"artist": artist,
|
||||
"artist_sanitized": artist,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_youtube_video_kwargs(
|
||||
mock_entry_kwargs, playlist_index, playlist_size, channel, track_title, artist
|
||||
):
|
||||
def mock_youtube_video_kwargs(mock_entry_kwargs, playlist_index, playlist_size, channel):
|
||||
return dict(
|
||||
mock_entry_kwargs,
|
||||
**{
|
||||
"playlist_index": playlist_index,
|
||||
"playlist_count": playlist_size,
|
||||
"channel": channel,
|
||||
"track": track_title,
|
||||
"artist": artist,
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue