Releases: miraclx/freyr-js
v0.10.3
What's changed?
- Implemented automated authentication for Apple Music. #623, #624
- Fixed the YouTube Music logic for sourcing tracks. #632
- Tracks from Deezer now encode copyright information. #639
- Sort metadata (sonm, soar, soal) are now embedded in the output file. #636
- Tracks from Spotify now encode copyright in the format
℗ {YEAR} {LABEL}
to match Apple Music. #638 - Non-explicit Spotify tracks are now tagged "Inoffensive". #635
- Fix the Apple Music uri format for tracks. #622
- Fix the total disc number count. #634
Full Changelog: v0.10.2...v0.10.3
v0.10.2
v0.10.1
What's changed?
- Added support for Apple Music song URLs -
https://music.apple.com/us/song/1699712652
. #552 - Embed a locale in the URLs generated from parsing Deezer URLs. #553
Full Changelog: v0.10.0...v0.10.1
v0.10.0
What's changed?
- Changed Spotify credentials, introduced migrations to mitigate any complications. #454, #470, #526
- Improved the YouTube Music track weighing logic, we should get 30% more accurate results. #472
- Freyr now supports paginated track artists. #471
- Accented words like
Solidarité
now get properly normalized, helping more accurate lookups. #473 - Fix bug with Apple Music & Deezer URI parser. #403, #549
- Freyr now treats binaries in
bins/{posix,windows}
as being of higher priority than those inPATH
. #474 - Freyr now properly handles tracks that have no copyright information. #467
- Freyr now properly checks the base dir instead of the current working dir for existing tracks. #527
- Updated logic for extracting source feeds from yt-dlp's response. #515
- Freyr now auto-disables the progress bar when it detects the absence of a compatible TTY, avoiding errors wherever possible. #506
- Allow overriding the atomicparsley binary used with the
ATOMIC_PARSLEY_PATH
environment variable. #475 - Updated
AtomicParsley
in the Docker images, fixing a class of errors. #476 - Ignore yt-dlp warnings that could cause hard errors when parsing its response. #511
- Fixed YouTube accuracy calculation. #509, #510
Full Changelog: v0.9.0...v0.10.0
v0.9.0
What's changed?
- BREAKING: replaced
-D, --downloader
with-S, --source
, introduced the-D, --check-dir
flag. #350 - BREAKING: replaced the
.downloader.order
entry in the config file with.downloader.sources
. #350 - BREAKING: freyr no longer uses the temp directory by default to cache assets. #354
- BREAKING: freyr now persists the cached assets across runs, this will grow over time, but you can clear it at will. #354
- Replaced native
ffmpeg
with bundled Wasm version. #305 - Implemented Apple Music pagination. #348, #400
- Implemented ability to check for track existence in other directories. #350
- Allow excluding download sources. #355
- Use correct cover art file extension. #311
- Simplified the banner to 8-bit instead of the 24-bit truecolor version. #309
- Add support for Docker Desktop, or generic NAS with Docker support. #316
- Fix race condition potentially resulting in file corruption when two identical tracks are downloaded at the same time. #338
- Persist configuration options in the user config file. #353
- Stripped HTML tags from playlist descriptions. #324
- Fix
urify
subcommand with Spotify URLs. #308 - Fix YouTube feed sourcing logic after dependency update. #299
- Update minimum Node.js version to
v16
. #293, #332, d4ed669 - Remove the temporary image downloaded when an error is detected. 5e7f551
- Revamp the test runner. #303, #304
- Removed unimplemented features. #368
- Updated Apple Music access token. #399
Full Changelog: v0.8.1...v0.9.0
v0.8.1
What's changed?
- Ensure maximum compatibility with axios when npm fails to install an expected version. #291
Full Changelog: v0.8.0...v0.8.1
v0.8.0
What's changed?
- Refactored the Dockerfile, and reduced the docker image size by 23%. #257
- Manually compile
AtomicParsley
during docker build to allow for maximum platform support. #212 - Add Mac M1 support to the docker image. #214
- Made docker build faster by caching and unbinding nondependent layers. #273, #268
- Fix
yarn install
not ahering to dependency overrides. #215 - Add ability to disable the progressbar. #263
- Remove persistent
tty
writing for normal logs. Allowingstdout
piping for everything except the progressbar. #231 - Fix long standing issue with freyr seeming frozen on exit. #216
- Upgraded to ES6 Modules. #202
- Introduced the pushing of docker images for each PR. #218, #228
- Introduced a test runner, with local reproducible builds. #264
- Redesigned the auth page a bit. #286
- Introduced CI checks for formatting.
- Updated dependencies.
- Removed some unused dependencies. #217, #245
Full Changelog: v0.7.0...v0.8.0
v0.7.0
v0.6.0
What's changed?
- All dependencies updated.
- Support
"single"
specification in"type"
filter. #124 - Address hanging problem on exit. #125
- Touch up final stats. #126
- Fix
AND
andOR
behavior when dealing with filters. #127 - Added the
CHANGELOG.md
file to track project changes. #148 - Introduced CI runtime checks. #121
- Introduced CI lint checks. #123 #137
- Automated the CI release process. #123 #148
- Support either
AtomicParsley
oratomicparsley
. #140 - Documents the dependency on YouTube for sourcing audio. #142
- Documentation now links to file index of an example library – https://miraclx.github.io/freyr-demo-library/.
Full Changelog: v0.5.0...v0.6.0
Initial NPM Release: v0.5.0 🎉
🔗 View on NPM
🔗 View on Docker Hub
💾 Installation:
📦 NPM:
npm install -g [email protected]
🧶 Yarn:yarn global add [email protected]
🐳 Docker:docker pull freyrcli/freyrjs:v0.5.0
Full Changelog: https://github.com/miraclx/freyr-js/commits/v0.5.0
FreyrJS
A versatile, service-agnostic music downloader and manager
Built with ❤︎ by
Miraculous Owonubi
Demo
Support the project
Donate via
Crypto
-
Via Coinbase (
BTC
,ETH
,USDC
,LTC
,DAI
,BCH
):- Support us with
$5
|$10
|$15
|$20
- Donate anything you want
- Support us with
-
Or Directly:
Installation
Manually
Requirements
Hey there, you might want to consider a cleaner and straight-forward installation method, without having to manually setup the requirements. If so, checkout the Docker installation method
python >= v3.2
Download for your individual platforms here https://www.python.org/downloads/
Linux: (check individual package managers)
- Debian:
sudo apt-get install python3.6
- Arch Linux:
sudo pacman -S python
- Android (Termux):
apt install python
- Alpine Linux:
sudo apk add python3
nodejs >= v12.0.0
Download for your individual platforms here https://nodejs.org/en/download/
macOS + Linux: nvm recommended.
# install node with this nvm command
# freyr works with a minimum of v12
$ nvm install --lts
- Android (Termux):
apt install nodejs
- Alpine Linux:
sudo apk add nodejs
ffmpeg >= v0.9
Download for your individual platforms here https://ffmpeg.org/download.html
- Windows + macOS:
- Ensure to extract the
ffmpeg
binary from the compressed file, if it's in one. - make sure it's available in your
PATH
- otherwise, set
FFMPEG_PATH
to explicitly specify binary to use
- Ensure to extract the
- Linux: (check individual package managers)
- Debian: The
ppa:mc3man/trusty-media
PPA provides recent builds - Arch Linux:
sudo pacman -S ffmpeg
- Android (Termux):
apt install ffmpeg
- Alpine Linux:
sudo apk add ffmpeg
- Debian: The
AtomicParsley >= (v0.9.6 | 20200701)
First, download the latest release for your individual platforms here https://github.com/wez/atomicparsley/releases/latest
Then;
- Windows:
- unzip and place the
AtomicParsley.exe
in yourPATH
. - or the
bins/windows
folder of this project directory. Create the folder(s) if they don't exist.
- unzip and place the
- Linux + macOS (the brew package isn't recommended):
- unzip and place the
AtomicParsley
in yourPATH
. - or the
bins/posix
folder of this project directory. Create the folder(s) if they don't exist.
- unzip and place the
- Alternatively:
- Debian:
sudo apt-get install atomicparsley
- Arch Linux:
sudo pacman -S atomicparsley
- Android (Termux):
apt install atomicparsley
- Build from source: See wez/AtomicParsley
- Debian:
First start by ensuring all requirements listed above are satisfied. Thereafter, you can use either of these options to install freyr:
-
NPM:
npm install -g freyr
-
Yarn:
yarn global add freyr
-
Or you can build from source
git clone https://github.com/miraclx/freyr-js.git freyr cd freyr
% NPM Yarn pull dependencies npm install
yarn install
install globally npm link
yarn link
Docker
For convenience, we provide officially prebuilt images (automated builds from this repo) so you can skip the setup and build process and get right into it.
Usage (docker)
docker run -it --rm -v $PWD:/data freyrcli/freyrjs [options, arguments and queries...]
You can also create a handy alias to skip remembering that whole line everytime
alias freyr='docker run -it --rm -v $PWD:/data freyrcli/freyrjs'
The
-v $PWD:/data
part sets the working directory for freyr to the current working directory.
For example, you can use-v ~/Music/freyr:/data
to set the work directory and consequently, default save location to~/Music/freyr
.Please ensure the folder on the host already exists, create it if not. Otherwise, docker autocreates the folder as root and that causes unpleasant
Permission Denied
issues when you run freyr.
[See Docker Development]
Getting Started
Usage
Usage: freyr [options] [query...]
Usage: freyr [options] [subcommand]
[See Service Support].
Show freyr help and list subcommands
freyr --help
Get CLI Help
*The get
subcommand is implicit and default.
Usage: freyr [options] get [options] [query...]
Usage: freyr [options] [query...]
freyr get --help
____
/ __/_______ __ _______
/ /_/ ___/ _ \/ / / / ___/
/ __/ / / __/ /_/ / /
/_/ /_/ \___/\__, /_/
/____/ v0.1.0
freyr v0.1.0 - (c) Miraculous Owonubi <[email protected]>
-------------------------------------------------------------
Usage: freyr get [options] [query...]
Download music tracks from queries
Options:
-i, --input <FILE> use URIs found in the specified FILE as queries (file size limit: 1 MiB)
(each query on a new line, use '#' for comments, whitespaces ignored)
(example: `-i queue.txt`)
-b, --bitrate <N> set audio quality / bitrate for audio encoding
(valid: 96,128,160,192,256,320) (default: "320k")
-n, --chunks <N> number of concurrent chunk streams with which to d...