Merge pull request 'Various fixes from github issues and PRs' (#8) from octoshrimpy/zotify:main into main
Reviewed-on: https://zotify.xyz/zotify/zotify/pulls/8
This commit is contained in:
commit
0db75acc7e
|
@ -0,0 +1,32 @@
|
||||||
|
### Installing Zotify
|
||||||
|
|
||||||
|
> **Windows**
|
||||||
|
|
||||||
|
This guide uses *Scoop* (https://scoop.sh) to simplify installing prerequisites and *pipx* to manage Zotify itself.
|
||||||
|
There are other ways to install and run Zotify on Windows but this is the official recommendation, other methods of installation will not receive support.
|
||||||
|
|
||||||
|
- Open PowerShell (cmd will not work)
|
||||||
|
- Install Scoop by running:
|
||||||
|
- `Set-ExecutionPolicy RemoteSigned -Scope CurrentUser`
|
||||||
|
- `irm get.scoop.sh | iex`
|
||||||
|
- After installing scoop run: `scoop install python ffmpeg-shared git`
|
||||||
|
- Install pipx:
|
||||||
|
- `python3 -m pip install --user pipx`
|
||||||
|
- `python3 -m pipx ensurepath`
|
||||||
|
Now close PowerShell and reopen it to ensure the pipx command is available.
|
||||||
|
- Install Zotify with: `pipx install https://get.zotify.xyz`
|
||||||
|
- Done! Use `zotify --help` for a basic list of commands or check the *README.md* file in Zotify's code repository for full documentation.
|
||||||
|
|
||||||
|
> **macOS**
|
||||||
|
- Open the Terminal app
|
||||||
|
- Install *Homebrew* (https://brew.sh) by running: `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
|
||||||
|
- After installing Homebrew run: `brew install python@3.11 pipx ffmpeg git`
|
||||||
|
- Setup pipx: `pipx ensurepath`
|
||||||
|
- Install Zotify: `pipx install https://get.zotify.xyz`
|
||||||
|
- Done! Use `zotify --help` for a basic list of commands or check the README.md file in Zotify's code repository for full documentation.
|
||||||
|
|
||||||
|
> **Linux (Most Popular Distributions)**
|
||||||
|
- Install `python3`, `pip` (if a separate package), `ffmpeg`, and `git` from your distribution's package manager or software center.
|
||||||
|
- Then install pipx, either from your package manager or through pip with: `python3 -m pip install --user pipx`
|
||||||
|
- Install Zotify `pipx install https://get.zotify.xyz`
|
||||||
|
- Done! Use `zotify --help` for a basic list of commands or check the README.md file in Zotify's code repository for full documentation.
|
28
README.md
28
README.md
|
@ -3,10 +3,10 @@
|
||||||
### A highly customizable music and podcast downloader.
|
### A highly customizable music and podcast downloader.
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://i.imgur.com/hGXQWSl.png" width="50%">
|
<img src="https://i.imgur.com/hGXQWSl.png" width="50%" alt="Zotify logo">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
### Featues
|
### Features
|
||||||
- Downloads at up to 320kbps*
|
- Downloads at up to 320kbps*
|
||||||
- Downloads directly from the source**
|
- Downloads directly from the source**
|
||||||
- Downloads podcasts, playlists, liked songs, albums, artists, singles.
|
- Downloads podcasts, playlists, liked songs, albums, artists, singles.
|
||||||
|
@ -40,12 +40,13 @@ Basic command line usage:
|
||||||
zotify <track/album/playlist/episode/artist url> Downloads the track, album, playlist or podcast episode specified as a command line argument. If an artist url is given, all albums by specified artist will be downloaded. Can take multiple urls.
|
zotify <track/album/playlist/episode/artist url> Downloads the track, album, playlist or podcast episode specified as a command line argument. If an artist url is given, all albums by specified artist will be downloaded. Can take multiple urls.
|
||||||
|
|
||||||
Basic options:
|
Basic options:
|
||||||
(nothing) Download the tracks/alumbs/playlists URLs from the parameter
|
(nothing) Download the tracks/albums/playlists URLs from the parameter
|
||||||
-d, --download Download all tracks/alumbs/playlists URLs from the specified file
|
-d, --download Download all tracks/albums/playlists URLs from the specified file
|
||||||
-p, --playlist Downloads a saved playlist from your account
|
-p, --playlist Downloads a saved playlist from your account
|
||||||
-l, --liked Downloads all the liked songs from your account
|
-l, --liked Downloads all the liked songs from your account
|
||||||
-f, --followed Downloads all songs by all artists you follow
|
-f, --followed Downloads all songs by all artists you follow
|
||||||
-s, --search Searches for specified track, album, artist or playlist, loads search prompt if none are given.
|
-s, --search Searches for specified track, album, artist or playlist, loads search prompt if none are given.
|
||||||
|
-h, --help See this message.
|
||||||
```
|
```
|
||||||
|
|
||||||
### Options
|
### Options
|
||||||
|
@ -67,7 +68,7 @@ Be aware you have to set boolean values in the commandline like this: `--downloa
|
||||||
| DOWNLOAD_FORMAT | --download-format | The download audio format (aac, fdk_aac, m4a, mp3, ogg, opus, vorbis)
|
| DOWNLOAD_FORMAT | --download-format | The download audio format (aac, fdk_aac, m4a, mp3, ogg, opus, vorbis)
|
||||||
| DOWNLOAD_QUALITY | --download-quality | Audio quality of downloaded songs (normal, high, very_high*)
|
| DOWNLOAD_QUALITY | --download-quality | Audio quality of downloaded songs (normal, high, very_high*)
|
||||||
| TRANSCODE_BITRATE | --transcode-bitrate | Overwrite the bitrate for ffmpeg encoding
|
| TRANSCODE_BITRATE | --transcode-bitrate | Overwrite the bitrate for ffmpeg encoding
|
||||||
| SKIP_EXISTING_FILES | --skip-existing-files | Skip songs with the same name
|
| SKIP_EXISTING_FILES | --skip-existing | Skip songs with the same name
|
||||||
| SKIP_PREVIOUSLY_DOWNLOADED | --skip-previously-downloaded | Use a song_archive file to skip previously downloaded songs
|
| SKIP_PREVIOUSLY_DOWNLOADED | --skip-previously-downloaded | Use a song_archive file to skip previously downloaded songs
|
||||||
| RETRY_ATTEMPTS | --retry-attempts | Number of times Zotify will retry a failed request
|
| RETRY_ATTEMPTS | --retry-attempts | Number of times Zotify will retry a failed request
|
||||||
| BULK_WAIT_TIME | --bulk-wait-time | The wait time between bulk downloads
|
| BULK_WAIT_TIME | --bulk-wait-time | The wait time between bulk downloads
|
||||||
|
@ -82,7 +83,18 @@ Be aware you have to set boolean values in the commandline like this: `--downloa
|
||||||
| PRINT_DOWNLOADS | --print-downloads | Print messages when a song is finished downloading
|
| PRINT_DOWNLOADS | --print-downloads | Print messages when a song is finished downloading
|
||||||
| TEMP_DOWNLOAD_DIR | --temp-download-dir | Download tracks to a temporary directory first
|
| TEMP_DOWNLOAD_DIR | --temp-download-dir | Download tracks to a temporary directory first
|
||||||
|
|
||||||
*very-high is limited to premium only
|
*very-high is limited to premium only
|
||||||
|
|
||||||
|
### Configuration
|
||||||
|
|
||||||
|
You can find the configuration file in following locations:
|
||||||
|
| OS | Location
|
||||||
|
|-----------------|---------------------------------------------------------|
|
||||||
|
| Windows | `C:\Users\<USERNAME>\AppData\Roaming\Zotify\config.json`|
|
||||||
|
| MacOS | `/Users/<USERNAME>/.config/zotify/config.json` |
|
||||||
|
| Linux | `/home/<USERNAME>/.config/zotify/config.json` |
|
||||||
|
|
||||||
|
To log out, just remove the configuration file. Uninstalling Zotify does not remove the config file.
|
||||||
|
|
||||||
### Output format
|
### Output format
|
||||||
|
|
||||||
|
@ -133,7 +145,7 @@ If you see this, don't worry! Just try logging back in. If you see the incorrect
|
||||||
Currently no user has reported their account getting banned after using Zotify.
|
Currently no user has reported their account getting banned after using Zotify.
|
||||||
|
|
||||||
It is recommended you use Zotify with a burner account.
|
It is recommended you use Zotify with a burner account.
|
||||||
Alternatively, there is a configuration option labled ```DOWNLOAD_REAL_TIME```, this limits the download speed to the duration of the song being downloaded thus appearing less suspicious.
|
Alternatively, there is a configuration option labeled ```DOWNLOAD_REAL_TIME```, this limits the download speed to the duration of the song being downloaded thus appearing less suspicious.
|
||||||
This option is much slower and is only recommended for premium users who wish to download songs in 320kbps without buying premium on a burner account.
|
This option is much slower and is only recommended for premium users who wish to download songs in 320kbps without buying premium on a burner account.
|
||||||
|
|
||||||
### Disclaimer
|
### Disclaimer
|
||||||
|
|
|
@ -152,7 +152,7 @@ def search(search_term):
|
||||||
try:
|
try:
|
||||||
int(splits[index+1])
|
int(splits[index+1])
|
||||||
except ValueError:
|
except ValueError:
|
||||||
raise ValueError('Paramater passed after {} option must be an integer.\n'.
|
raise ValueError('Parameter passed after {} option must be an integer.\n'.
|
||||||
format(split))
|
format(split))
|
||||||
if int(splits[index+1]) > 50:
|
if int(splits[index+1]) > 50:
|
||||||
raise ValueError('Invalid limit passed. Max is 50.\n')
|
raise ValueError('Invalid limit passed. Max is 50.\n')
|
||||||
|
|
|
@ -54,7 +54,7 @@ CONFIG_VALUES = {
|
||||||
TRANSCODE_BITRATE: { 'default': 'auto', 'type': str, 'arg': '--transcode-bitrate' },
|
TRANSCODE_BITRATE: { 'default': 'auto', 'type': str, 'arg': '--transcode-bitrate' },
|
||||||
SKIP_EXISTING: { 'default': 'True', 'type': bool, 'arg': '--skip-existing' },
|
SKIP_EXISTING: { 'default': 'True', 'type': bool, 'arg': '--skip-existing' },
|
||||||
SKIP_PREVIOUSLY_DOWNLOADED: { 'default': 'False', 'type': bool, 'arg': '--skip-previously-downloaded' },
|
SKIP_PREVIOUSLY_DOWNLOADED: { 'default': 'False', 'type': bool, 'arg': '--skip-previously-downloaded' },
|
||||||
RETRY_ATTEMPTS: { 'default': '1', 'type': int, 'arg': '--retry-attemps' },
|
RETRY_ATTEMPTS: { 'default': '1', 'type': int, 'arg': '--retry-attempts' },
|
||||||
BULK_WAIT_TIME: { 'default': '1', 'type': int, 'arg': '--bulk-wait-time' },
|
BULK_WAIT_TIME: { 'default': '1', 'type': int, 'arg': '--bulk-wait-time' },
|
||||||
OVERRIDE_AUTO_WAIT: { 'default': 'False', 'type': bool, 'arg': '--override-auto-wait' },
|
OVERRIDE_AUTO_WAIT: { 'default': 'False', 'type': bool, 'arg': '--override-auto-wait' },
|
||||||
CHUNK_SIZE: { 'default': '20000', 'type': int, 'arg': '--chunk-size' },
|
CHUNK_SIZE: { 'default': '20000', 'type': int, 'arg': '--chunk-size' },
|
||||||
|
|
Loading…
Reference in New Issue