Skip to content

Commit 360e342

Browse files
author
Zotify
committed
changes
1 parent a10b32b commit 360e342

18 files changed

Lines changed: 920 additions & 460 deletions

CHANGELOG.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
## v1.0.0
44

5-
An unexpected reboot.
6-
75
### BREAKING CHANGES AHEAD
86

97
- Most components have been completely rewritten to address some fundamental design issues with the previous codebase, This update will provide a better base for new features in the future.
@@ -12,7 +10,7 @@ An unexpected reboot.
1210

1311
### Changes
1412

15-
- Genre metadata available for tracks downloaded from an album
13+
- Genre metadata available for all tracks
1614
- Boolean command line options are now set like `--save-metadata` or `--no-save-metadata` for True or False
1715
- Setting `--config` (formerly `--config-location`) can be set to "None" to not use any config file
1816
- Search result selector now accepts both comma-seperated and hyphen-seperated values at the same time
@@ -24,10 +22,12 @@ An unexpected reboot.
2422
- The output template used is now based on track info rather than search result category
2523
- Search queries with spaces no longer need to be in quotes
2624
- File metadata no longer uses sanitized file metadata, this will result in more accurate metadata.
27-
- Replaced ffmpy with custom implementation
25+
- Replaced ffmpy with custom implementation providing more tags
26+
- Fixed artist download missing some tracks
2827

2928
### Additions
3029

30+
- New library location for playlists `playlist_library`
3131
- Added new command line arguments
3232
- `--library`/`-l` overrides both `music_library` and `podcast_library` options similar to `--output`/`-o`
3333
- `--category`/`-c` will limit search results to a certain type, accepted values are "album", "artist", "playlist", "track", "show", "episode". Accepts multiple choices.
@@ -52,13 +52,13 @@ An unexpected reboot.
5252
- `{album_artist}`
5353
- `{album_artists}`
5454
- `{duration}` (milliseconds)
55+
- `{explicit}`
5556
- `{isrc}`
5657
- `{licensor}`
5758
- `{popularity}`
5859
- `{release_date}`
5960
- `{track_number}`
6061
- Genre information is now more accurate and is always enabled
61-
- New library location for playlists `playlist_library`
6262
- Added download option for "liked episodes" `--liked-episodes`/`-le`
6363
- Added `save_metadata` option to fully disable writing track metadata
6464
- Added support for ReplayGain
@@ -79,6 +79,7 @@ An unexpected reboot.
7979
- Removed `print_api_errors` because API errors are now treated like regular errors
8080
- Removed the following config options due to their corresponding features being removed:
8181
- `bulk_wait_time`
82+
- `chunk_size`
8283
- `download_real_time`
8384
- `md_allgenres`
8485
- `md_genredelimiter`

LICENCE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright (c) 2022 Zotify Contributors
1+
Copyright (c) 2024 Zotify Contributors
22

33
This software is provided 'as-is', without any express or implied
44
warranty. In no event will the authors be held liable for any damages

Pipfile

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
[[source]]
2+
url = "https://pypi.org/simple"
3+
verify_ssl = true
4+
name = "pypi"
5+
6+
[packages]
7+
librespot = {git = "git+https://github.com/kokarare1212/librespot-python"}
8+
music-tag = {git = "git+https://zotify.xyz/zotify/music-tag"}
9+
mutagen = "*"
10+
pillow = "*"
11+
pwinput = "*"
12+
requests = "*"
13+
tqdm = "*"
14+
15+
[dev-packages]
16+
17+
[requires]
18+
python_version = "3.11"

Pipfile.lock

Lines changed: 414 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 26 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
# STILL IN DEVELOPMENT, NOT RECOMMENDED FOR GENERAL USE!
2-
3-
![Logo banner](https://s1.fileditch.ch/hOwJhfeCFEsYFRWUWaz.png)
1+
![Logo banner](./assets/banner.png)
42

53
# Zotify
64

75
A customizable music and podcast downloader. \
86
Formerly ZSp‌otify.
97

10-
Available on [zotify.xyz](https://zotify.xyz/zotify/zotify) and [GitHub](https://github.com/zotify-dev/zotify).
8+
Available on [zotify.xyz](https://zotify.xyz/zotify/zotify) and [GitHub](https://github.com/zotify-dev/zotify). \
9+
Built on [Librespot](https://github.com/kokarare1212/librespot-python).
1110

1211
## Features
1312

@@ -48,23 +47,23 @@ Downloads specified items. Accepts any combination of track, album, playlist, ep
4847

4948
<details><summary>All configuration options</summary>
5049

51-
| Config key | Command line argument | Description |
52-
| ----------------------- | ------------------------- | --------------------------------------------------- |
53-
| path_credentials | --path-credentials | Path to credentials file |
54-
| path_archive | --path-archive | Path to track archive file |
55-
| music_library | --music-library | Path to root of music library |
56-
| podcast_library | --podcast-library | Path to root of podcast library |
57-
| mixed_playlist_library | --mixed-playlist-library | Path to root of mixed content playlist library |
58-
| output_album | --output-album | File layout for saved albums |
59-
| output_playlist_track | --output-playlist-track | File layout for tracks in a playlist |
60-
| output_playlist_episode | --output-playlist-episode | File layout for episodes in a playlist |
61-
| output_podcast | --output-podcast | File layout for saved podcasts |
62-
| download_quality | --download-quality | Audio download quality (auto for highest available) |
63-
| audio_format | --audio-format | Audio format of final track output |
64-
| transcode_bitrate | --transcode-bitrate | Transcoding bitrate (-1 to use download rate) |
65-
| ffmpeg_path | --ffmpeg-path | Path to ffmpeg binary |
66-
| ffmpeg_args | --ffmpeg-args | Additional ffmpeg arguments when transcoding |
67-
| save_credentials | --save-credentials | Save login credentials to a file |
50+
| Config key | Command line argument | Description | Default |
51+
| ----------------------- | ------------------------- | --------------------------------------------------- | ---------------------------------------------------------- |
52+
| path_credentials | --path-credentials | Path to credentials file | |
53+
| path_archive | --path-archive | Path to track archive file | |
54+
| music_library | --music-library | Path to root of music library | |
55+
| podcast_library | --podcast-library | Path to root of podcast library | |
56+
| mixed_playlist_library | --mixed-playlist-library | Path to root of mixed content playlist library | |
57+
| output_album | --output-album | File layout for saved albums | {album_artist}/{album}/{track_number}. {artists} - {title} |
58+
| output_playlist_track | --output-playlist-track | File layout for tracks in a playlist | {playlist}/{playlist_number}. {artists} - {title} |
59+
| output_playlist_episode | --output-playlist-episode | File layout for episodes in a playlist | {playlist}/{playlist_number}. {episode_number} - {title} |
60+
| output_podcast | --output-podcast | File layout for saved podcasts | {podcast}/{episode_number} - {title} |
61+
| download_quality | --download-quality | Audio download quality (auto for highest available) | |
62+
| audio_format | --audio-format | Audio format of final track output | |
63+
| transcode_bitrate | --transcode-bitrate | Transcoding bitrate (-1 to use download rate) | |
64+
| ffmpeg_path | --ffmpeg-path | Path to ffmpeg binary | |
65+
| ffmpeg_args | --ffmpeg-args | Additional ffmpeg arguments when transcoding | |
66+
| save_credentials | --save-credentials | Save login credentials to a file | |
6867
| save_subtitles | --save-subtitles |
6968
| save_artist_genres | --save-arist-genres |
7069

@@ -91,9 +90,9 @@ Zotify can be used as a user-friendly library for saving music, podcasts, lyrics
9190
Here's a very simple example of downloading a track and its metadata:
9291

9392
```python
94-
import zotify
93+
from zotify import Session
9594

96-
session = zotify.Session.from_userpass(username="username", password="password")
95+
session = Session.from_userpass(username="username", password="password")
9796
track = session.get_track("4cOdK2wGLETKBW3PvgPWqT")
9897
output = track.create_output("./Music", "{artist} - {title}")
9998

@@ -113,20 +112,14 @@ All new contributions should follow this principle to keep the program consisten
113112

114113
## Will my account get banned if I use this tool?
115114

116-
No user has reported their account getting banned after using Zotify
115+
There have been no confirmed cases of accounts getting banned as a result of using Zotify.
117116
However, it is still a possiblity and it is recommended you use Zotify with a burner account where possible.
118117

119-
Consider using [Exportify](https://github.com/watsonbox/exportify) to keep backups of your playlists.
118+
Consider using [Exportify](https://watsonbox.github.io/exportify/) to keep backups of your playlists.
120119

121120
## Disclaimer
122121

123122
Using Zotify violates Sp‌otify user guidelines and may get your account suspended.
124123

125-
Zotify is intended to be used in compliance with DMCA, Section 1201, for educational, private and fair use, or any simlar laws in other regions. \
126-
Zotify contributors cannot be held liable for damages caused by the use of this tool. See the [LICENSE](./LICENCE) file for more details.
127-
128-
## Acknowledgements
129-
130-
- [Librespot-Python](https://github.com/kokarare1212/librespot-python) does most of the heavy lifting, it's used for authentication, fetching track data, and audio streaming.
131-
- [music-tag](https://github.com/KristoforMaynard/music-tag) is used for writing metadata into the downloaded files.
132-
- [FFmpeg](https://ffmpeg.org/) is used for transcoding audio.
124+
Zotify is intended to be used in compliance with DMCA, Section 1201, for educational, private and fair use, or any simlar laws in other regions.
125+
Zotify contributors are not liable for damages caused by the use of this tool. See the [LICENSE](./LICENCE) file for more details.

assets/banner.png

110 KB
Loading

requirements_dev.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ black
22
flake8
33
mypy
44
pre-commit
5+
types-protobuf
56
types-requests
67
wheel

setup.cfg

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[metadata]
22
name = zotify
3-
version = 0.9.2
3+
version = 0.9.4
44
author = Zotify Contributors
55
description = A highly customizable music and podcast downloader
66
long_description = file: README.md
@@ -33,6 +33,10 @@ console_scripts =
3333

3434
[flake8]
3535
max-line-length = 160
36+
ignore =
37+
E701
38+
E704
39+
W503
3640

3741
[mypy]
3842
warn_unused_configs = True
@@ -43,6 +47,9 @@ ignore_missing_imports = True
4347
[mypy-music_tag]
4448
ignore_missing_imports = True
4549

50+
[mypy-mutagen.*]
51+
ignore_missing_imports = True
52+
4653
[mypy-pwinput]
4754
ignore_missing_imports = True
4855

0 commit comments

Comments
 (0)