Conversation
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…uld result in them being saved to a None/None directory. The root cause was that the directory was being generated before the songs metadata was fully fetched from YT music. album_artist and album_name were None when the directory was created, leading to an invlaid directory structure, and any M3U created after to not point to the correctt directories. The fix was entirely in downloader.py.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
As our dependencies yt-dlp, ytmusicapi no longer support py3.9, spotDL also will drop support. yt-dlp/yt-dlp#13858
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
add note to contributors
- Replaced broken search.azlyrics.com URL - Changed Request Headers to avoid bot detection
|
Hi @phcreery thanks for your efforts on this. Please also get pylint, black, mypy and isort to pass. |
|
Pylint ************* Module spotdl.utils.web
spotdl/utils/web.py:7:0: W0611: Unused dataclass imported from dataclasses (unused-import)
spotdl/utils/web.py:11:0: W0611: Unused Callable imported from typing (unused-import)
spotdl/utils/web.py:26:0: W0611: Unused Song imported from spotdl.types.song (unused-import)
************* Module spotdl.web.utils
spotdl/web/utils.py:1:0: C0114: Missing module docstring (missing-module-docstring)
spotdl/web/utils.py:3:0: C0411: standard import "typing.Optional" should be placed before first party imports "spotdl.utils.web.app_state", "spotdl.types.options.DownloaderOptions" (wrong-import-order)
************* Module spotdl.web.api
spotdl/web/api.py:1:0: C0114: Missing module docstring (missing-module-docstring)
************* Module spotdl.web.routes
spotdl/web/routes.py:120:0: C0301: Line too long (127/100) (line-too-long)
spotdl/web/routes.py:167:0: C0301: Line too long (104/100) (line-too-long)
spotdl/web/routes.py:214:0: C0301: Line too long (124/100) (line-too-long)
spotdl/web/routes.py:216:0: C0301: Line too long (101/100) (line-too-long)
spotdl/web/routes.py:242:0: C0301: Line too long (124/100) (line-too-long)
spotdl/web/routes.py:244:0: C0301: Line too long (101/100) (line-too-long)
spotdl/web/routes.py:245:0: C0301: Line too long (111/100) (line-too-long)
spotdl/web/routes.py:325:0: C0116: Missing function or method docstring (missing-function-docstring)
************* Module spotdl.download.progress_handler
spotdl/download/progress_handler.py:104:0: C0115: Missing class docstring (missing-class-docstring)
spotdl/download/progress_handler.py:119:4: C0116: Missing function or method docstring (missing-function-docstring)
spotdl/download/progress_handler.py:127:4: C0116: Missing function or method docstring (missing-function-docstring)
spotdl/download/progress_handler.py:136:4: C0116: Missing function or method docstring (missing-function-docstring)
spotdl/download/progress_handler.py:140:4: C0116: Missing function or method docstring (missing-function-docstring) |
|
Let me spend some more time and I can bring back the direct download function and the dark theme |
|
Cheers. Obviously I'm not the expert on the Web UI, xnetcat implemented most of it but is very busy and not around atm. Very grateful for all his work. Happy to merge changes you think are best for the project. Let me know if you need anything from me :). Don't worry about tests failing, the test suite is a bit of a mess atm, I haven't had time to figure out why some tests seem to just timeout - again, I didn't implement pytest and so am not an expert! Doing my best to keep the core spotDL functionality working and (relatively!) bug free. |
|
This is ready for review |


This removed the need for a second repo for the web content by making all HTML SSG using Jinja and Datastar.
The old API routes are not being used now but I left them in place since they are quite useful.
After merging and releasing, the old https://github.com/spotDL/web-ui/ can be archived.