Skip to content

Releases: miraclx/freyr-js

v0.10.3

14 Jan 04:31
123e65a
Compare
Choose a tag to compare

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

01 Jan 21:14
1665462
Compare
Choose a tag to compare

What's changed?

  • Ensure tracks maintain their order from collections to playlist file output. #569
  • Support non-latin letters in source search. #574
  • Failure to acquire an audio source is now handled gracefully. fc29256
  • Updated Apple Music access token. #610, #583

Full Changelog: v0.10.1...v0.10.2

v0.10.1

08 Aug 04:12
ff92b47
Compare
Choose a tag to compare

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

08 Aug 00:08
1f7965b
Compare
Choose a tag to compare

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 in PATH. #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

17 Dec 22:59
cdedfda
Compare
Choose a tag to compare

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

04 Aug 07:04
9cf3e93
Compare
Choose a tag to compare

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

04 Aug 06:11
3b6a0a1
Compare
Choose a tag to compare

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. Allowing stdout 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

09 Jun 04:47
c0c534c
Compare
Choose a tag to compare

What's changed?

  • Updated Apple Music access key. #191
  • Simplified the output of using the -v, --version. #152
  • Dropped extra version in the header. #153
  • Fixed issue with docker build not bundling dependencies. #165
  • Update dependencies.

Full Changelog: v0.6.0...v0.7.0

v0.6.0

21 Feb 09:26
b2d8d9a
Compare
Choose a tag to compare

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 and OR 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 or atomicparsley. #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 🎉

27 Jan 01:38
a234630
Compare
Choose a tag to compare

🔗 View on NPM
🔗 View on Docker Hub

💾 Installation:

📦 NPM: npm install -g freyr@0.5.0
🧶 Yarn: yarn global add freyr@0.5.0
🐳 Docker: docker pull freyrcli/freyrjs:v0.5.0

Full Changelog: https://github.com/miraclx/freyr-js/commits/v0.5.0


FreyrJS - connoisseur of music
FreyrJS

A versatile, service-agnostic music downloader and manager

GitHub CodeFactor Grade GitHub top language Total Lines Of Code Docker Cloud Build Status Docker Cloud Pull Status GitHub NodeJS Version Python Version GitHub repo size GitHub issues GitHub last commit

Built with ❤︎ by
Miraculous Owonubi

Demo

ASCII Demo

Support the project

Donate via

Patreon Donation
Liberapay receiving
Ko-fi Donation

Crypto

  • Via Coinbase (BTC, ETH, USDC, LTC, DAI, BCH):

  • Or Directly:

    • BTC: bc1qqe5y9kw7ewne8njdces8e4ajx5u7zhfftdvl33
    • XLM: GB6GPPXXJTQ6EFYQQ4PFA4WEAT5G2DIDILOEDLYH76743UUVDDU4KOWY
    • ZEC: zs10awcwm4uwpjr3mxxdwe03fda0j0zn95s4hu3qxlvhfajjw8es98ftmpaava7zh735x9s22pan0l

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
  • 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
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 your PATH.
    • or the bins/windows folder of this project directory. Create the folder(s) if they don't exist.
  • Linux + macOS (the brew package isn't recommended):
    • unzip and place the AtomicParsley in your PATH.
    • or the bins/posix folder of this project directory. Create the folder(s) if they don't exist.
  • Alternatively:
    • Debian: sudo apt-get install atomicparsley
    • Arch Linux: sudo pacman -S atomicparsley
    • Android (Termux): apt install atomicparsley
    • Build from source: See wez/AtomicParsley

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.

Image Size: Docker Image Size

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 <omiraculous@gmail.com>
-------------------------------------------------------------
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...
Read more