Commit Graph

200 Commits

Author SHA1 Message Date
Ritiek Malhotra
fc226442fe Custom YouTube search string (#261)
* Custom YouTube search string

* Fix sorting issues on < Python 3.6
2018-04-08 15:56:44 +05:30
Ritiek Malhotra
96ab547c5c Support FLAC output format (#259)
* Convert to .flac option

* Embed metadata to FLAC

* Update usage help

* Write tests
2018-04-02 00:47:31 +05:30
Ritiek Malhotra
b968b5d206 Scrape YouTube by default and optionally use YouTube API to perform searches (#250)
* YouTube scraping

* Cleanup GenerateYouTubeURL class

* Some minor improvements

* Add test to fetch title with and without api key
2018-03-09 20:40:15 +05:30
Ritiek Malhotra
3e6b2d7702 Increase coverage (#218)
* Monkeypatch fetch user and use pytest.tempdir

* Cover spotify_tools.grab_album()

* Cover avconv conversion

* Cover grab_single()

* Reduce code repetition

* Move grab_playlist() to spotify_tools.py

* Move Spotify specific functions to spotify_tools.py

* Refactoring

* Return track list from write_tracks()

* Fix tests

* Cover more cases in generate_youtube_url()

* Test for unavailable audio streams

* Test for filename without spaces

* handle.py 100% coverage

* Improve config tests

* Speed up tests

* Install avconv and libfdk-aac

* Some cleaning

* FFmpeg with libfdk-aac, libopus

* Some refactoring

* Convert tmpdir to string

* Cover YouTube title when downloading from list

* Explicitly cover some internals.py functions
2018-01-26 20:44:37 +05:30
Ritiek Malhotra
d624bbb3d5 Specify optional param in enumerate() 2018-01-25 19:30:16 +05:30
Ritiek Malhotra
fcfebc55e6 Save file names using a custom format specifiers (#205)
* Use custom formats to generate file name

* Do not mess up search term

* Fix tests

* Fix conflicting names

* Fix subprocess call on file paths with spaces

* Create directories and keep spaces as defaults

* Fix config merge

* Remove underscores from default file format

* Remove debug info

* Show possible formats in usage help
2018-01-19 13:58:27 +05:30
Miguel Piedrafita
1fe94c9896 Add a config option to preserve spaces in file names (#201)
* Add a config option to preserve spaces in file names

* Typo

* Fix replacing in path
2018-01-15 13:41:11 +05:30
Aareon Sullivan
bb76220e86 Update spotdl.py 2018-01-14 14:18:24 -08:00
Aareon Sullivan
beafd4e446 Use enumerate, remove random usages of exit codes
As per the documentation for `sys.exit` most codes besides 0 and 1 are underdeveloped and produce mostly undefined results. Nothing wrong with sticking to the safe route.
2018-01-14 13:54:00 -08:00
ritiek
621e1eb21e Some cleanup 2018-01-12 21:52:43 +05:30
Linus Groh
8c6cc1cc22 Fix typo, do minor improvements 2018-01-12 13:39:58 +01:00
Linus Groh
f7c4cbd50d Show no metadata warning before download 2018-01-12 13:34:46 +01:00
Ritiek Malhotra
a9ba5b71c8 Resolve variable names 2018-01-12 17:39:32 +05:30
ritiek
68bb24612b Minor fix 2018-01-12 17:20:56 +05:30
ritiek
da68ca3989 Fix conflicts 2018-01-12 17:09:13 +05:30
ritiek
8c76bd8ea3 Fix conflicts 2018-01-12 15:56:09 +05:30
ritiek
b2f3c43d0f Remove unused imports and fix token regeneration 2018-01-11 22:32:32 +05:30
ritiek
fce2a1abcd Fix tests and const.py to hold options 2018-01-11 21:50:40 +05:30
Ritiek Malhotra
58cfa121f3 Write lyrics to track metadata (#194)
* TODO: Don't throw traceback if no lyrics found

* Add more metadata fields

* Refactor debug logging

* Fix traceback when lyrics not found

* It already vomits metadata :3

* Bump lyricwikia >= 0.1.8
2018-01-11 02:13:23 +05:30
Nitesh Sawant
fb70ad32bb Download only songs whose metadata is found #193 (#197) 2018-01-11 01:51:49 +05:30
ritiek
77dab0665d Create youtube_tools.py 2018-01-10 21:20:35 +05:30
ritiek
ea6d52999f Refactor metadata 2018-01-09 17:12:26 +05:30
ritiek
84fbb30412 Fix unused imports 2018-01-09 15:48:47 +05:30
ritiek
a6028e2155 Split spotify functions 2018-01-09 15:26:42 +05:30
ritiek
3f17ec1f8a Flake encoder WARN 2018-01-06 19:08:11 +05:30
ritiek
ee340db2ea WARN if encoder not found 2018-01-06 19:01:47 +05:30
ritiek
90b08b3334 Remove BeautifulSoup dependency (as of #191) 2018-01-06 18:42:22 +05:30
Vishnunarayan K I
4d664956cd Switch to youtube API (#191)
* Switch to youtube API

* Fix test failures

* Minor fix
2018-01-06 18:28:36 +05:30
Ritiek Malhotra
090cdd1c59 Add --dry-run option (#190) 2018-01-06 13:02:07 +05:30
Linus Groh
e175608135 Change return code for KeyboardInterrupt 2018-01-04 13:13:15 +01:00
Linus Groh
0af4a13c2b Change shebang in spotdl.py 2018-01-04 13:07:02 +01:00
Victor Yap
01bb783724 Add --overwrite option (#182)
* Add overwrite option

* Fix tests

* address changes requested
2017-12-31 12:43:34 +05:30
Ritiek Malhotra
93388418f0 Show filepath in debug mode 2017-12-21 13:24:36 +05:30
ritiek
fe11ade687 Log name if song already exists 2017-12-15 20:10:57 +05:30
Ritiek Malhotra
df513acc35 Add logging capability (#175)
* Refactoring and addition of logzero (#172)

* Refactored convert.py and added logging.

* Added logging and refactored.

* Added logzero to requirements.txt

* Added logging to metadata.py

* Created a log in misc.py. Updated slugify import.

* Some general improvement

* Improve message layout

* Improve test mechanism

* Implement debug level logging

* Fix some minor mistakes

* Make pytest happy

* Remove unimplemented --verbose option

* Update ISSUE_TEMPLATE.md

* Rename LICENSE

* Remove obvious from log.debug()

* Show track URL when writing to file (debug)
2017-12-15 19:57:57 +05:30
Ritiek Malhotra
8ea89f9d1c Import sys to deal with sys.exit() 2017-12-09 00:36:30 +05:30
Aareon Sullivan
77baa71d24 Minor tweaks (#154)
* Minor tweaks

Use at your own risk. Just thought I’d contribute at least a little bit

* Exit code 0

Exit code 0 is standard for notifying the system of a regular, non-error exit.

* No longer need unnecessary flag

* Fix `already_tagged` not defined

* <3 Zen of Python

* Silly me
2017-12-08 15:17:36 +05:30
ritiek
84b6ec601b Remove debug code 2017-12-05 22:29:20 +05:30
ritiek
9bee8d8787 Fix parameters to write_playlist() with -u option 2017-12-05 22:28:21 +05:30
Ritiek Malhotra
6075a829e5 Return codes depicting success/failure (#164)
* Add error codes for fetch playlist failures

* Add return codes to README.md
2017-11-30 10:44:46 +05:30
ritiek
d39272d6a2 Avoid use of os.chdir() 2017-11-30 10:20:36 +05:30
fanlp3
6ac60000e6 fixes: #159 Refactored grab_playlist (#160)
* Refactored grab_playlist

grab_playlist was looping through the user's playlist until it finds the playlist.
In some cases a public playlist isn't in the user's playlists
Using a more direct approach, querying for the tracks of a playlist

* Remove old `def write_playlist()`

* Playlist URL download now works on private playlists
2017-11-30 09:49:38 +05:30
ritiek
ade74e8272 Call generate_metadata() only once 2017-11-13 23:45:59 +05:30
ritiek
618476eca7 Update ISRC metadata 2017-11-13 21:33:29 +05:30
ritiek
0deea6b384 Fix error when playlist not found 2017-11-11 19:17:10 +05:30
Ritiek Malhotra
fd130f8626 Error out if playlist not found 2017-11-11 19:13:37 +05:30
Ritiek Malhotra
cfd392c6ce Fix access token regeneration 2017-10-28 01:07:50 +05:30
Ritiek Malhotra
2780ba405f Catch only IndexError 2017-10-27 14:37:26 +05:30
Valérian Galliat
237b4cca7e Add an option to grab an album (#142) 2017-10-08 19:43:55 +05:30
Ritiek Malhotra
98d21bbad9 Fix NoneType not scriptable if song not on Spotify (#140) 2017-09-29 12:38:15 +05:30