Commit Graph

374 Commits

Author SHA1 Message Date
Miraclx 3f0236df46
fix unidentified service name 2020-05-15 04:27:04 +01:00
Miraclx 900731ce7a
Cast queryStats as an array of responses and parse each one to support artist albums 2020-05-15 04:22:35 +01:00
Miraclx 3816da0fc6
Simplify the artist album handler, fix async awaiting
• Skip sorting albums as we could have promise responses
• Await all tracks in album to be resolved before next
2020-05-15 04:15:44 +01:00
Miraclx 58db59c46a
insulate track request errors and process their report 2020-05-14 22:00:47 +01:00
Miraclx 03198a8587
Print (no data) when queries return nullish values 2020-05-14 21:55:35 +01:00
Miraclx 500dad9802
Add support for printing (no data) from processedPromises with a null-ish return value 2020-05-14 21:53:46 +01:00
Miraclx 376b4d6af3
Remove the useless `requests` field from the default contained config 2020-05-14 18:03:21 +01:00
Miraclx 7bef03b45d
redo(d6ac2): Fix typo from copy before commit that fixed typo 2020-05-14 18:02:21 +01:00
Miraclx 2355512903
Standardize error handling and printing
Catch variable: `err`
Printing precedence:
• err.code (if any)
• err.message (if any)
• err (fallback)
2020-05-14 17:58:38 +01:00
Miraclx 0edf82e250
Use unified VALIDS object 2020-05-14 17:39:57 +01:00
Miraclx b3c3a5d769
Update concurrency description to include valid concurrency keys 2020-05-14 17:34:22 +01:00
Miraclx d6ac21183d
Fix typo: downoloader 2020-05-14 17:33:14 +01:00
Miraclx 5acff666f4
Remove sources and feed concurrency keys 2020-05-14 17:32:57 +01:00
Miraclx d1e8138a03
Fallback to native async interface as opposed to queues for source and feed handles 2020-05-14 17:32:02 +01:00
Miraclx 334e4010b9
Implement the dymanic source and feed collator into the broker 2020-05-14 17:14:44 +01:00
Miraclx 735582b93c
Replace source and feed queues with a single unifying interface for querying services in order 2020-05-14 17:06:27 +01:00
Miraclx 9b6911bb74
Use getEngineMetas to collate download-compatible services 2020-05-14 05:49:13 +01:00
Miraclx b82acece8e
Insert blank line between functions 2020-05-14 05:43:29 +01:00
Miraclx d178a6a692
Use getBitrates() to collate compatible bitrates for arg scanning and cli help 2020-05-14 05:38:13 +01:00
Miraclx cc0da20191
CLI: Include newline breaks where possible, reword some descriptions 2020-05-14 04:11:51 +01:00
Miraclx 463515f92d
Include a per-initialization field that extends the static properties of it's constructor 2020-05-14 04:08:54 +01:00
Miraclx 2e13f14e82
fix(465f93): Remove former declaration of BASE_DIRECTORY 2020-05-13 21:51:51 +01:00
Miraclx f56e98e4c7
Implement the downloader arg and downloader config order 2020-05-13 21:50:06 +01:00
Miraclx bf2c3de90c
Concatenate any array field with the `order` key 2020-05-13 21:48:12 +01:00
Miraclx 5997487500
Replace lodash.merge with lodash itself 2020-05-13 20:13:36 +01:00
Miraclx 3af411c1c7
Revert to single-line eslint exceptions 2020-05-13 19:47:35 +01:00
Miraclx b41b6e4f66
Standardize dependency require ordering
1st: Node core
2nd: Third-party libraries
3rd: Local scripts
2020-05-13 19:43:35 +01:00
Miraclx 771fb52049
Assigned the downloader flag the `-D` shorthand 2020-05-13 04:10:15 +01:00
Miraclx 465f937146
Reworded fat flag `directory-prefix` to `directory` 2020-05-13 04:09:49 +01:00
Miraclx e50591578d
Remove yt_music from possible downloaders 2020-05-13 03:29:42 +01:00
Miraclx 3ea5bc8f41
Standardize means to getting service metadata with shared symbols 2020-05-13 03:25:37 +01:00
Miraclx cac5f790d0
Fix typo on cli name libxget to freyr 2020-05-12 23:20:26 +01:00
Miraclx d689319a2e
Ensure return code is appropriate for errors with initialization of a freyr instance 2020-05-11 23:15:11 +01:00
Miraclx 4ee779293a
Switch to the freyrCoreConfig from the CLI 2020-05-11 23:15:05 +01:00
Miraclx 9a1ae554a9
Added method to collect prop schema from the services themselves 2020-05-11 23:12:27 +01:00
Miraclx c91e2cb0e3
Moved configuration base to the cli script as opposed to the main library file 2020-05-11 23:11:43 +01:00
Miraclx b5fd5a37ea
refactor informative message 2020-05-11 22:42:53 +01:00
Miraclx 5f0b578fcb
Do not respond to error events if for some reason it's emitted after completion
Wouldn't want unsolicited errors getting rid of our perfectly completed download, now would we?
2020-05-11 22:40:51 +01:00
Miraclx 6a6b57b926
Implement windows executable extension check 2020-05-11 22:00:13 +01:00
Miraclx 8ee1278ebe
Added method to force explicit .exe extension inclusion on windows platforms 2020-05-11 21:59:40 +01:00
Miraclx 9200615e8f
Replace comma with `,` 2020-05-11 03:52:22 +01:00
Miraclx ac803533b7
Update cli description for the `--downloader` flag for comma-separated ordering 2020-05-11 03:52:22 +01:00
Miraclx 4b8281bbd7
Updated flag descriptions 2020-05-11 03:52:22 +01:00
Miraclx 78cbf3f136
Add a separator on the `--concurrency` flag 2020-05-07 02:37:37 +01:00
Miraclx 9ef8f093da
Ensure to handle errors once on the single fragment stream 2020-05-07 02:35:47 +01:00
Miraclx 5cf49248e0
Inplement the `--config` flag 2020-05-07 02:30:29 +01:00
Miraclx e3cd691f2d
Add checks to ensure input file is non-binary 2020-05-06 11:37:39 +01:00
Miraclx a5a8821ee7
Invalidate the query checking process only when there's no input file 2020-05-06 11:29:34 +01:00
Miraclx 8931fb4231
CLI: Check that there's at least one query 2020-05-06 11:29:09 +01:00
Miraclx 56441fe322
Prioritize CLI arg checks before configuration 2020-05-06 11:26:56 +01:00
Miraclx f7c9fed044
Include album art cover size in stats 2020-05-06 11:19:08 +01:00
Miraclx 09c5765dcb
Include extra unimplemented flags 2020-05-06 01:54:01 +01:00
Miraclx 66d2ef721a
Better error handling for query-related errors 2020-05-06 01:52:03 +01:00
Miraclx 1144c2fe6f
Skip showing totalBytes if its not defined 2020-05-03 21:41:14 +01:00
Miraclx 9e4d789dd8
Update retryHandler after libxget update including the meta field 2020-05-02 07:54:48 +01:00
Miraclx f23753704f
Fix bug showing "Download complete" before actually completing the download 2020-05-02 04:23:25 +01:00
Miraclx cc09a29899
Add support for parsing width and height from within config objects 2020-05-01 05:54:58 +01:00
Miraclx a7d294ce2c
Add CLI flag and config field for defining preferred cover art dimensions 2020-05-01 05:41:16 +01:00
Miraclx 56435f91e5
Added feature for individual services' album art url parsing based on width, height 2020-05-01 04:51:07 +01:00
Miraclx 1671fc1e0a
Add a key to make error message more descriptive 2020-05-01 04:38:06 +01:00
Miraclx e3c2ecd56c
Tweak code to workaround showing an empty array on help 2020-05-01 04:37:25 +01:00
Miraclx 955a1f1f4d
CLI: Modify atomicParsley not found message as it covers cases where what's available isn't a binary 2020-05-01 02:32:21 +01:00
Miraclx d56aa4324e
Handle, parse and merge the config spec collated from the --concurrency option 2020-04-23 08:41:36 +01:00
Miraclx 3c79a47c5d
Define repeatable logic for handling the concurrency flag 2020-04-23 08:40:51 +01:00
Miraclx 9d02379e00
Removed deprecated logic 2020-04-23 08:40:10 +01:00
Miraclx 2da890c2b6
Update the unimplemented concurrency CLI flag to use more specific key-value pairs 2020-04-23 06:55:38 +01:00
Miraclx fc13e7908b
Add concurrency feature specification in conf file with optimized defaults 2020-04-23 06:33:41 +01:00
Miraclx 3d209e8194
Define defaults object to be merged with file config 2020-04-23 06:16:44 +01:00
Miraclx 7e14040dc0
Propagate & print caught errors in the final postprocessor list 2020-04-23 06:14:50 +01:00
Miraclx cdab463077
Replace the feedMeta with audioSource. Misreferenced property 2020-04-23 06:13:49 +01:00
Miraclx 43ff91cd3a
Fix directory inexistence bug by ensuring directory creation before other post processing events 2020-04-23 06:12:05 +01:00
Miraclx f76f2f7a60
Properly report failure code/reason for images as done with the raw audio 2020-04-23 06:10:19 +01:00
Miraclx cad1364d08
Convert emitted errors to proper objects 2020-04-23 06:09:25 +01:00
Miraclx c75fe7c2da
Properly ignore other segment errors when one has caused whole rejection 2020-04-23 06:08:12 +01:00
Miraclx b82742d2b1
Add support for identifying which chunk of a segment was retried 2020-04-23 06:05:49 +01:00
Miraclx af9a2c2d39
Hint to new feature: filtering out explicit 2020-04-21 08:03:47 +01:00
Miraclx 27c8278ac6
Add CLI flag: --cover-size 2020-04-21 08:03:15 +01:00
Miraclx f23e5a4dcc
Reorder CLI flags 2020-04-21 07:58:51 +01:00
Miraclx 74c1e7e381
Update author field within package.json to support node's expansion 2020-04-21 07:57:58 +01:00
Miraclx db1aaed46f
CLI: Add sorted stats for skipped, passed and failed tracks 2020-04-21 03:29:02 +01:00
Miraclx 31c787e23f
Show change track post-download text to reflect actual event 2020-04-21 03:27:20 +01:00
Miraclx 545038f2f5
Standardize download interrupt messages 2020-04-21 03:26:24 +01:00
Miraclx 35d5eaa119
Major Commit: Switch to AsyncQueue for handling queries 2020-04-21 03:25:27 +01:00
Miraclx 3d6530e5fe
Support unencoded errors by printing their content 2020-04-19 05:58:50 +01:00
Miraclx 48ce0150ed
Major Commit: Breakdown track processes into individual queues to induce manageable concurrency 2020-04-19 05:57:58 +01:00
Miraclx 0a5769f5c9
Skip catching an error rather, insulating the event 2020-04-19 05:54:59 +01:00
Miraclx 5783c827ec
Fix timeout bug 2020-04-19 05:54:16 +01:00
Miraclx e0d0e7add0
CLI: await track response to support cases of returned promises 2020-04-13 17:33:54 +01:00
Miraclx 320393b5bc
Standardise inclusion of associated data count. ntracks for albums and playlists, nalbum for artists 2020-04-13 17:24:02 +01:00
Miraclx 585389cc42
Eslint Rules: Ignore function called before its definition 2020-04-10 00:58:18 +01:00
Miraclx 36e76f2f5f
Update CLI after async_queue update 2020-04-10 00:57:26 +01:00
Miraclx 4b068e0ef3
Add support for handling errors with a function 2020-04-07 02:54:27 +01:00
Miraclx 7982f13a3b
Rewrite asynchronouslyProcessTracks method to utilize the AsyncQueue 2020-04-07 02:52:49 +01:00
Miraclx 71219e3b23
AtomicParsley: Skip undefined values 2020-04-07 02:52:39 +01:00
Miraclx 8b1cc72ff4
Base attempt at utilizing the async queue to pre-process tracks 2020-04-05 04:13:36 +01:00
Miraclx 99eb1c24f9
Skip over artist genres wherever absent 2020-04-01 01:22:53 +01:00
Miraclx d851928707
Include ntracks property within the playlist object 2020-03-31 00:59:17 +01:00
Miraclx 23481fbb2e
Add apple music specification for default storefront 2020-03-26 21:44:21 +01:00
Miraclx d55be6af6c
Add base implementation support for the --storefront flag 2020-03-26 18:28:37 +01:00
Miraclx af6292657f
Prioritize the `P` type copyright as opposed to the `C` type copyright 2020-03-26 01:13:10 +01:00
Miraclx 65e45cf0a4
Defined methods per-service for checking for authentication properties like tokens to be saved within the config 2020-03-26 00:46:20 +01:00
Miraclx d31c1cac63
Add unimplemented flag for future concurrency support 2020-03-25 23:57:44 +01:00
Miraclx 4bfa7dadd0
Add unimplemented flag for future conf-file path specification 2020-03-25 23:57:44 +01:00
Miraclx a04417446b
Persist to conf.json in project root directory only 2020-03-23 01:27:33 +01:00
Miraclx 2779467354
Add method for checking if a service can try to authenticate 2020-03-23 00:22:20 +01:00
Miraclx 7612f53edb
Standardize return codes 2020-03-23 00:19:40 +01:00
Miraclx a968dc791f
Catch and report freyr constructor errors 2020-03-23 00:12:29 +01:00
Miraclx 10babcf546
Ensure configuration file can be loaded and parsed appropriately. 2020-03-23 00:12:12 +01:00
Miraclx 9de41be701
Pass serverOpts as a third argument through freyr to the service constructor 2020-03-22 23:46:52 +01:00
Miraclx 1e37ab3bfc
Revert back to using a plain configuration file. 2020-03-22 21:16:47 +01:00
Miraclx 5a3955f30c
Request individual album metadata as artist albums list might not always be complete 2020-03-22 02:33:41 +01:00
Miraclx de577ec1c7
Implement new method for asynchronously track pre-processing 2020-03-22 02:32:53 +01:00
Miraclx 333b4838d4
Add feature allowing to asynchronously load audio source and feed 2020-03-22 02:31:36 +01:00
Miraclx 19869e9241
Skip matching milli secs to support cases without them 2020-03-18 19:32:19 +01:00
Miraclx 31e5dc2417
Only show followers if the property is present 2020-03-15 21:06:28 +01:00
Miraclx 0ee5b71511
Add timeout option 2020-03-15 19:03:58 +01:00
Miraclx 5d5897ca68
Asynchronously process fragment streams rather than sequentially. 2020-03-15 19:03:05 +01:00
Miraclx 3cdc938807
Return null if invalid object construct. In turn, invalidate the query 2020-03-15 19:00:59 +01:00
Miraclx cee8aef385
Merge remote-tracking branch 'github/master' 2020-03-15 18:37:16 +01:00
Miraclx 3d69ce6522
Unify type property based on server response 2020-03-15 18:33:18 +01:00
Miraclx 924b55b3c3
Extend trackName if playlist or album compilation 2020-03-15 18:33:18 +01:00
Miraclx 57541d1cf0
Unify return err code for stage directory errors: 3 2020-03-15 18:33:18 +01:00
Miraclx fe296480c9
Check if working directory exists before proceeding 2020-03-15 18:33:18 +01:00
Miraclx 7ece1e5508
Bug fix: Typo compilation instead of collection 2020-03-15 18:33:18 +01:00
Miraclx 0dd8d1dd4f
Bug fix: -f redundancy. undefined --filter redefined to -x 2020-03-15 18:33:18 +01:00
Miraclx 393be4f09b
Show album type when querying albums 2020-03-15 18:33:18 +01:00
Miraclx 7b4d6b2a91
Support compilation collation 2020-03-15 18:33:18 +01:00
Miraclx 4494775b6a
Indicate whether or not track is part of a compilation 2020-03-15 18:33:18 +01:00
Miraclx 42d8f788a5
Embed source name within audio file 2020-03-15 18:33:18 +01:00
Miraclx aff261593a
Appropriate metadata definition 2020-03-15 18:33:18 +01:00
Miraclx babc48e309
Configure operation by distinguishing between an album and a compilation 2020-03-15 18:33:18 +01:00
Miraclx f7a2d4aa82
Unify return err code for stage directory errors: 3 2020-03-09 07:19:35 +01:00
Miraclx fbadd10ff0
Check if working directory exists before proceeding 2020-03-09 07:17:38 +01:00
Miraclx fb8266d0ec
Bug fix: Typo compilation instead of collection 2020-03-09 07:04:36 +01:00
Miraclx c94b525f70
Bug fix: -f redundancy. undefined --filter redefined to -x 2020-03-09 07:02:19 +01:00
Miraclx a8a799e14b
Show album type when querying albums 2020-03-09 07:01:32 +01:00
Miraclx 9a7af7bffb
Support compilation collation 2020-03-09 07:00:25 +01:00
Miraclx 12a8698a57
Indicate whether or not track is part of a compilation 2020-03-09 06:44:34 +01:00
Miraclx 3cfb3eaecc
Embed source name within audio file 2020-03-09 06:42:51 +01:00
Miraclx c52d528a3a
Appropriate metadata definition 2020-03-09 06:42:02 +01:00
Miraclx 0acdc4175e
Configure operation by distinguishing between an album and a compilation 2020-03-09 06:41:25 +01:00
Miraclx c541850f09
Create playlists for album collections 2020-03-08 05:50:13 +01:00
Miraclx a8a3fa0ecd
Show album genres, if any is specified 2020-03-08 05:49:50 +01:00
Miraclx 4fe0389a65
Removed extraTrackProps for uniformity 2020-03-08 05:48:55 +01:00
Miraclx 0beb5b5996
Better track processing
• Request multiple URIs, caching each result
• Efficient caching for objects to maximise efficiency
• Split URIs to multiple requests for each request
• Request tracks separate from group objects such as Album tracks, artist albums, playlist tracks
2020-03-08 05:47:20 +01:00
Miraclx dc6761d21c
Show artist follower count 2020-03-08 05:40:45 +01:00
Miraclx ae5dbeabec
Show artist followers 2020-03-08 05:36:18 +01:00
Miraclx cb11b27d4b
Print message or entire reason 2020-03-08 04:53:25 +01:00
Miraclx b4805c3538
Add storefront cli flag (unimplemented) 2020-03-06 07:48:54 +01:00
Miraclx 39389f2efa
Skip some metadata if not provided 2020-03-06 07:48:34 +01:00
Miraclx e222892f72
Skip re-requesting for individual album data after 2020-03-06 07:41:38 +01:00
Miraclx ed33589874
Ignore falsey value specification 2020-03-06 07:38:52 +01:00
Miraclx 62b7845ecb
Skip requesting album information on a per-track basis 2020-03-06 07:34:30 +01:00
Miraclx 1dfc26f6f0
Hide artist genre in absence of one 2020-03-06 07:31:03 +01:00
Miraclx 3d14902bba
Typo fix: genres 2020-03-06 07:30:14 +01:00
Miraclx 78215e33d3
Remove sortOrder 2020-03-06 07:29:17 +01:00
Miraclx 1bf9a237e7
Translate date to uniform YYYY-MM-DD format 2020-03-06 07:28:49 +01:00
Miraclx 650aff6e5e
Include album_type in wrapped album presentation 2020-03-06 07:27:31 +01:00
Miraclx f82321a430
Standardized artist properties to an array of names 2020-03-06 07:25:49 +01:00
Miraclx c1cca9ae3d
Ensure authentication server is closed immediately after authentication 2020-03-06 07:21:05 +01:00
Miraclx 5d6ff88e79
Date.now() rather that new Date() 2020-03-04 03:02:59 +01:00
Miraclx f3bfcc554d
format cli help manual 2020-03-02 16:53:49 +01:00
Miraclx ff2c7b485d
Defined constructs to check for the presence of AtomicParsley and react appropriately 2020-03-02 05:17:05 +01:00
Miraclx 9040273068
Show custom error if any 2020-03-02 05:16:26 +01:00
Miraclx 59edabf9ad
Check for and react to custom errors 2020-03-02 05:15:39 +01:00
Miraclx 87fdb1ffc8
Format alignment 2020-02-27 14:29:28 +01:00
Miraclx 45758c32f1
Extend embedder err object if any with stdout and err code 2020-02-27 14:28:32 +01:00
Miraclx 3f5d5f7137
Format: uniformly lowercase descriptions 2020-02-27 04:53:20 +01:00
Miraclx f859e53f30
Strictly call function to generate stream requests in case of an error 2020-02-27 04:17:48 +01:00
Miraclx 50099828e0
Add flag `-f` to facilitate overwrite of existing tracks 2020-02-27 04:17:04 +01:00
Miraclx bd5a525f1a
Add support for creating playlists from all processed tracks 2020-02-27 03:57:25 +01:00
Miraclx 0ac10bdd47
Support m3u tagging with extra metadata 2020-02-27 03:56:47 +01:00
Miraclx e6f7485b13
Handle cases where resolution values are falsey 2020-02-27 03:50:49 +01:00
Miraclx 168243d007
Add core cli 2020-02-26 20:41:50 +01:00