Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
db54a84
Initial WIP
7x11x13 Nov 9, 2024
0fe6c4a
Better --flac solution
7x11x13 Nov 9, 2024
6f3c7e0
Fix bug with opus/wav files
7x11x13 Nov 10, 2024
21340df
WIP
7x11x13 Dec 14, 2024
f646930
Fix metadata for original download
7x11x13 Dec 24, 2024
a24f509
Fix playlist metadata
7x11x13 Dec 29, 2024
06363d2
Playlists fix
7x11x13 Dec 30, 2024
e39e4da
Fix for user
7x11x13 Dec 30, 2024
a6437b6
More fixes
7x11x13 Dec 31, 2024
37a83e2
Implement --add-description
7x11x13 Jan 2, 2025
55d7a00
Cleanup
7x11x13 Jan 2, 2025
02a0c64
Implement --no-album-tag
7x11x13 Jan 2, 2025
d2c3468
Implement --download-archive
7x11x13 Jan 2, 2025
8b3081e
Remove --remove
7x11x13 Jan 2, 2025
de57e38
Implement --original-name
7x11x13 Jan 2, 2025
b367cf4
Rename
7x11x13 Jan 2, 2025
60d0b61
Implement -c
7x11x13 Jan 2, 2025
7064b38
Fix --extract-artist
7x11x13 Jan 2, 2025
5475d2f
Implement --force-metadata
7x11x13 Jan 2, 2025
695003b
Clean up
7x11x13 Jan 2, 2025
4340216
Implement --no-playlist
7x11x13 Jan 3, 2025
a9fc22d
Update test
7x11x13 Jan 3, 2025
47b4015
Better archive implementation
7x11x13 Jan 3, 2025
3760cdf
Remove filelock dep
7x11x13 Jan 3, 2025
fe847af
Implement --sync
7x11x13 Jan 3, 2025
705316d
Smaller patch
7x11x13 Jan 4, 2025
4200571
Delete thumbnail file if not embedded
7x11x13 Jan 4, 2025
f7807e6
Combine loggers
7x11x13 Jan 4, 2025
3a838aa
Change default config
7x11x13 Jan 4, 2025
6f42531
Fix extract artist
7x11x13 Jan 4, 2025
7f16e36
Implement commented tracks
7x11x13 Jan 4, 2025
d23a665
Various changes
7x11x13 Jan 7, 2025
c44902f
Fix tests
7x11x13 Jan 7, 2025
9fcb59a
Export download_url
7x11x13 Jan 7, 2025
346d440
Update yt-dlp version
7x11x13 Mar 14, 2025
29a201d
Trim filenames
7x11x13 Mar 14, 2025
524c597
Fixes
7x11x13 Mar 14, 2025
72114b4
Fix extract artist
7x11x13 Mar 14, 2025
090b5a9
Fix test_all
7x11x13 Mar 14, 2025
9cae095
remove -n
7x11x13 Aug 9, 2025
67806b7
merge
7x11x13 Aug 9, 2025
8e3c5a1
lint
7x11x13 Aug 9, 2025
724663f
fix
7x11x13 Aug 9, 2025
1a5dbb9
ci/cd
7x11x13 Aug 9, 2025
9a6f6d2
format
7x11x13 Aug 9, 2025
a9f07ee
ci
7x11x13 Aug 9, 2025
eda2a8c
forward yt-dlp-args
7x11x13 Aug 9, 2025
9098035
fix
7x11x13 Aug 9, 2025
6e13694
remove changelog
7x11x13 Aug 9, 2025
91847b2
fix
7x11x13 Aug 9, 2025
fdb1f3e
readme
7x11x13 Aug 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 19 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,30 @@ jobs:
test:
strategy:
matrix:
version: ['3.8', '3.12']
version: ['3.9', '3.13']
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.version }}
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
python-version: ${{ matrix.version }}
version: '0.8.8'
- name: Install dependencies
run: |
pip install -e .[dev]
run: uv sync
- name: Lint
if: '!cancelled()'
run: ruff check --output-format=github
run: uv run ruff check --output-format=github
- name: Format check
if: '!cancelled()'
run: ruff format --check
run: uv run ruff format --check
- name: Type check
if: '!cancelled()'
run: mypy
run: uv run mypy
- name: Install ffmpeg
run: |
sudo apt update
Expand All @@ -38,8 +42,7 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
AUTH_TOKEN: ${{ secrets.AUTH_TOKEN }}
run: |
pytest -vv --exitfirst
run: uv run pytest -vv --exitfirst
publish:
needs: test
if: startsWith(github.ref, 'refs/tags/v')
Expand All @@ -49,14 +52,16 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
python-version: 3.9
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
python-version: 3.9
version: '0.8.8'
- name: Install dependencies
run: |
pip install -e .
run: uv sync
- name: Build package
run: |
pip install --upgrade build
python -m build
run: uv build
- name: Publish package
uses: pypa/gh-action-pypi-publish@release/v1
with:
Expand Down
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ dist/
*.egg-info/
__pycache__/
*.mp3
*.opus
*.m4a
*.flac
.vscode
.venv
.env
.coverage*
.idea
.python-version
.DS_store
.DS_Store
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
# Soundcloud Music Downloader

## Status of the project

As of version 3, this script is a wrapper around `yt-dlp` with some defaults/patches for backwards compatibility.
Development is not active and new features will likely not be merged, especially if they can be covered with the
use of `--yt-dlp-args`. Bug reports/fixes are welcome.

## Description

This script is able to download music from SoundCloud and set id3tag to the downloaded music.
Compatible with Windows, OS X, Linux.


## System requirements

* python3
Expand Down Expand Up @@ -91,6 +97,7 @@ scdl me -f
--add-description Adds the description to a seperate txt file (can be read by some players)
--no-playlist Skip downloading playlists
--opus Prefer downloading opus streams over mp3 streams
--yt-dlp-args String with custom args to forward to yt-dlp
```


Expand Down
3 changes: 0 additions & 3 deletions mypy.ini

This file was deleted.

74 changes: 74 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
[project]
name = "scdl"
version = "3.0.0"
authors=[
{name = "7x11x13"}, {name = "FlyinGrub"}
]
description = "Download Music from Souncloud"
readme = "README.md"
requires-python = ">=3.9.0"
dependencies = [
"docopt-ng>=0.9.0",
"mutagen>=1.47.0",
"soundcloud-v2>=1.6.0",
"yt-dlp>=2025.2.19",
]
classifiers = [
"Programming Language :: Python",
"Development Status :: 5 - Production/Stable",
"License :: OSI Approved :: GNU General Public License v2 (GPLv2)",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Internet",
"Topic :: Multimedia :: Sound/Audio",
]

[dependency-groups]
dev = [
"music-tag>=0.4.3",
"mypy>=1.13.0",
"pytest>=8.3.4",
"pytest-dotenv>=0.5.2",
"ruff>=0.8.3",
"types-requests>=2.32.0.20241016",
"typing_extensions>=4.12.2; python_version < '3.11'",
]

[project.urls]
Issues = "https://github.com/scdl-org/scdl/issues"
Repository = "https://github.com/scdl-org/scdl"
Changelog = "https://github.com/scdl-org/scdl/blob/master/CHANGELOG.md"

[project.scripts]
scdl = "scdl.scdl:_main"

[tool.uv]
package = true

[tool.ruff]
target-version = "py39"
line-length = 120

[tool.ruff.lint]
select = ["ALL"]
ignore = [
"ANN",
"C90", "D",
"S", "BLE", "FBT", "A", "EM", "FA", "G", "SLF", "PTH",
"PLR", "TRY",
"PLW2901", "ANN204",
"COM812", "ISC001",
"EXE"
]

[tool.mypy]
packages = ["scdl", "tests"]
check_untyped_defs = true
disable_error_code = ["import-untyped"]

[[tool.mypy.overrides]]
module = "scdl.patches.*"
ignore_errors = true
13 changes: 0 additions & 13 deletions ruff.toml

This file was deleted.

5 changes: 4 additions & 1 deletion scdl/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
"""Python Soundcloud Music Downloader."""

__version__ = "v2.12.4"
from . import patches # noqa: F401, I001
from scdl.scdl import download_url

__all__ = ["download_url"]
171 changes: 0 additions & 171 deletions scdl/metadata_assembler.py

This file was deleted.

Loading