arabcoders / ytptube

A WebGUI for yt-dlp with concurrent downloads support.
MIT License
107 stars 5 forks source link

[BUG] using PostProcessor results in KeyError #266

Closed schmoaaaaah closed 2 weeks ago

schmoaaaaah commented 2 weeks ago

Describe the bug When trying to run a yt-dlp PostProcessor using --use-postprocessor the command fails with a KeyError:

ytp      | 22:31:30 [Download.NAwAeOATEfg] [ERROR] 'testerPP'
ytp      | Traceback (most recent call last):
ytp      |   File "/app/app/library/Download.py", line 233, in _download
ytp      |     cls = yt_dlp.YoutubeDL(params=params)
ytp      |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ytp      |   File "/opt/python/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py", line 825, in init
ytp      |     get_postprocessor(pp_def.pop('key'))(self, **pp_def),
ytp      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ytp      |   File "/opt/python/lib/python3.11/site-packages/yt_dlp/postprocessor/init.py", line 53, in get_postprocessor
ytp      |     return postprocessors.value[key + 'PP']
ytp      |            ~~~~^^^^^^^^^^^^
ytp      | KeyError: 'examplePP'

setting YTP_DEBUG: "true" seems to make it work.

To Reproduce

examplePP.py

from yt_dlp.postprocessor.common import PostProcessor

class ExamplePP(PostProcessor):
    def run(self, information):
        self.to_screen("Doing stuff in Custom processor")
        return [], information

Expected behavior PostProcessor gets run.

arabcoders commented 2 weeks ago

Hello, after discussing it in discord it seems the class def need to be in lower case, so

instead of doing

class StashPP(PostProcessor):
    pass

it should be

class stashPP(PostProcessor):
    pass