Commit graph

233 commits

Author SHA1 Message Date
wisp3rwind
9a6b65351b Merge pull request #3560 from davidswarbrick/master
Album Art Resize to filesize
2021-03-23 12:15:51 +01:00
wisp3rwind
af70b75670 fetchart/artresizer: Improve comments & docstrings, avoid os.stat if
possible

slight enhancements on top of https://github.com/beetbox/beets/pull/3560
2021-03-23 12:04:30 +01:00
David Swarbrick
07b5e69f40 fetchart/artresizer: add max_filesize support (#3560)
Squashed from the PR, relevant commit messages follow below:

Added file size option to artresizer

 - In line with comments on PR, adjusted the ArtResizer API to add
   functionality to "resize to X bytes" through `max_filesize` arg

 - Adjustment to changelog.rst to include max_filesize change to ArtResizer
   and addition of new plugin.

Added explicit tests for PIL & Imagemagick Methods

 - Checks new resizing functions do reduce the filesize of images

Expose max_filesize logic to fetchart plugin

- Add syspath escaping for OS cross compatibility
- Return smaller PIL image even if max filesize not reached.
- Test resize logic against known smaller filesize (//2)
- Pass integer (not float) quality argument to PIL
- Remove Pillow from dependencies
- Implement "max_filesize" fetchart option, including
  logic to resize and rescale if maxwidth is also set.

Added tests & documentation for fetchart additions.

Tests now check that a target filesize is reached with a
higher initial quality (a difficult check to pass).

With a starting quality of 95% PIL takes 4 iterations to succeed
in lowering the example cover image to 90% its original size.
To cover all bases, the PIL loop has been changed to 5 iterations
in the worst case, and the documentation altered to reflect the
50% loss in quality this implies. This seems reasonable as users
concerned about performance would most likely be persuaded to
install ImageMagick, or remove the maximum filesize constraint.
The previous 30% figure was arbitrary.
2021-03-23 12:00:14 +01:00
Aksh Gupta
79858975a9 chore: refactor code quality issues 2021-03-11 08:45:42 +05:30
djl
33b10d60fb
fetchart: Improve Cover Art Archive source. (#3748)
* fetchart: Improve Cover Art Archive source.

Instead of blindly selecting the first image, we now treat all "front"
images as candidates.

This is useful where some digital releases have both an animated cover
and a still image and the animated image is the first image returned
from the API.
2020-09-13 20:27:12 +01:00
Mark Trolley
0f767ffa66 fetchart: Use Cover Art Archive thumbnails
The Cover Art Archive API offers pre-resized thumbnails of cover
art. If the `maxwidth` option of `fetchart` matches one of the
supported Cover Art Archive thumbnail sizes, and a thumbnail of
that size exists in the Cover Art Archive, fetch it directly
instead of fetching the full size image then resizing it.
2020-06-28 17:18:42 -04:00
Mark Trolley
a4c647be46 Revert "fetchart: Use Cover Art Archive thumbnails"
This reverts commit 2131f6f7d9.
2020-06-27 16:26:52 -04:00
Mark Trolley
3232a5b8b7 Revert "Indentation fix"
This reverts commit 1e527ed4e5.
2020-06-27 16:26:20 -04:00
Adrian Sampson
1e527ed4e5 Indentation fix 2020-06-27 12:49:32 -04:00
Mark Trolley
2131f6f7d9 fetchart: Use Cover Art Archive thumbnails
The Cover Art Archive API offers pre-resized thumbnails of cover
art. If the `maxwidth` option of `fetchart` matches one of the
supported Cover Art Archive thumbnail sizes fetch it directly
instead of fetching the full size image then resizing it.
2020-06-27 12:34:43 -04:00
pants108
1a79ae5a9f code review 1 2020-05-05 18:39:05 +00:00
pants108
a553693677 fetchart: clean up invalid tmp files 2020-05-03 17:58:44 +00:00
Kylie McClain
1c03f58e0d
fetchart: improve description of -q flag 2020-04-19 14:56:15 -04:00
Jack Wilsdon
333d5d1dd3
fetchart: Add Last.fm artwork source 2020-03-30 20:20:59 +01:00
Daniel Barber
fe8ba17ced Add quality setting to fetchart plugin 2020-02-22 13:36:35 -05:00
Daniel Barber
96b0e8a33e No longer need to pass a default quality here 2020-02-18 16:44:45 -05:00
Daniel Barber
86946ad4b7 Allow the quality to be set for embedded/fetched cover art 2020-02-17 21:12:20 -05:00
Adrian Sampson
91be732bf4 Fix whitespace (#3453) 2020-02-06 22:18:15 -05:00
Adrian Sampson
f9088a3eb7
Merge pull request #3453 from faulkt/master
added merge_environment_settings call
2020-02-06 21:54:14 -05:00
Tyler Faulk
964a6c2e63 restored whitespace to please style checker 2020-02-06 12:10:38 -05:00
Adrian Sampson
a08f2315ea Simplify Confuse usage (#3463) 2019-12-26 20:44:14 -05:00
Mat
2593a5be34 Use a local var to use high resolution option 2019-12-26 21:55:48 +00:00
Mat
3570f5cd56 New high_resolution config option in fetchart 2019-12-26 17:36:56 +00:00
Tyler Faulk
a1af5d280e added merge_environment_settings call in fetchart plugin to handle connections with proxy servers 2019-12-10 22:54:31 -05:00
FichteFoll
aa31fea037
Update a lot of URLs to use HTTPS
*All* URLs were checked manually, but only once per domain!

I mostly concerned myself with URLs in documentation rather than source
code because the latter may or may not have impactful changes, while the
former should be straight forward.

Changes in addition to simply adding an s:

- changed pip and pypi references as their location has changed
- MPoD (iOS app) url redirects to Regelian, so I replaced those
- updated homebrew references

Notable observations:

- beets.io does have HTTPS set up properly (via gh-pages)
- beatport.py uses the old HTTP url for beatport
- as does lyrics.py for lyrics.wikia.com
- https://tomahawk-player.org/ expired long ago, but the http page
  redirects to https regardless
- none of the sourceforge subdomains have https (in 2019!)
2019-06-05 03:11:49 +02:00
Carl Suster
6382c364e2 confit: replace with confuse in plugins 2019-06-01 10:03:41 +10:00
Carl Suster
546bf3af7e mediafile: import from standalone module 2019-05-29 09:35:14 +10:00
Jan Holthuis
c07903ed66 fetchart: Add some error handling to prevent crashes
Today I had some network problems regarding dbpedia.org, which made
beets crash because a requests.exceptions.ConnectionError was raised
("[Errno 113] No route to host"). This commits adds some error handling
around network requests to prevent further crashes in the future.
2019-02-19 16:16:56 +01:00
Reg
2ea77652a7 Fetchart: Respect ignore and ignore_hidden settings when fetching art
from the local filesystem.
2018-12-20 18:44:46 +01:00
Jack Wilsdon
5ad16983d4
Fix miscellaneous typos 2018-10-09 01:11:06 +01:00
nath@dp7510
399bfb985e fetchart: fix itunes debug info
Some typos + make it more useful overall
2018-08-15 13:56:39 +02:00
nath@dp7510
0107262ed3 fetchart: restore itunes art source
Reimplement minimalistic itunes scraper from scratch
2018-08-15 13:55:55 +02:00
wisp3rwind
318f0c4d16 Advanced fetchart source config: pep8 2018-02-24 11:26:50 +01:00
wordofglass
e7a3e27ed9 Advanced fetchart source config: Actually use the new syntax 2018-02-24 11:26:50 +01:00
wordofglass
2c1e4d878b Advanced fetchart source config: add the (still unused) match_by constructor argument 2018-02-24 11:26:50 +01:00
test
842f6afd7f Fix indentation 2017-11-10 14:04:16 +01:00
test
8544b3a830 Fix long line and add changelog entry 2017-11-10 13:46:26 +01:00
test
54297dbab4 Tentative fix for issue 2734: also check for RETAG 2017-11-05 12:04:40 +01:00
euri10
25fb2453b4 Modified the name of the fetchart plugin switch from missing to quiet 2017-09-05 18:27:47 +02:00
euri10
b2fd274e2c Added a missing switch to the fetchart command so that only missing albums
are displayed
2017-09-05 16:34:26 +02:00
wordofglass
bc582701ff fetchart: Internally pass settings in a cleaner way.
Dump the 'extra' dictionary which only duplicated attributes of the
plugin onject in favor of passing a reference to the plugin directly.
2017-01-25 00:01:05 +01:00
Adrian Sampson
f941fd42de Always use SSL on servers that don't require SNI
I did a little audit using the `openssl` command-line tool to find the servers
that don't require SNI. Here's what I found:

icbrainz.org: SNI
images.weserv.nl: inconclusive, but docs say yes SNI
coverartarchive.org: SNI
webservice.fanart.tv: *no* SNI
dbpedia.org: *no* SNI
en.wikipedia.org: *no* SNI
ws.audioscrobbler.com: *no* SNI
api.microsofttranslator.com: *no* SNI

In summary, *only* MusicBrainz and CoverArtArchive were found to require SNI.
So I'm using SSL unconditionally on all the other sites.
2017-01-02 20:39:10 -05:00
tigranl
471f875dc1 Fix typo 2016-12-10 21:26:51 +03:00
tigranl
68b4a03ecd Add tests for https 2016-12-10 19:54:44 +03:00
tigranl
21208b8c39 Add SNI_SUPPORTED 2016-12-08 19:09:15 +03:00
tigranl
efa90416a0 Add SNI_SUPPORTED
Add SNI_SUPPORTED
2016-12-06 19:51:15 +03:00
tigranl
73a7a4ff67 Add SNI_SUPPORTED variable for https check 2016-12-06 18:38:26 +03:00
nathdwek@laptop
a0877dc092 images: Make sure all jpegs work everywhere
Apply #1545 to a public function used everywhere
2016-11-08 18:48:44 +01:00
Johnny Robeson
fcbfce3984 replace deprecated log.warn() with log.warning() 2016-08-09 00:33:38 -04:00
Johnny Robeson
527b51147e add py3_path to NamedTemporaryFile suffixes 2016-07-02 04:53:57 -04:00