Accepting request 458661 from multimedia:apps

- Drop bonusdisc.py, URL disappeared

- Update to version 1.4.0
  * Bugfix: AcoustID submission fails with code 299 (PICARD-82)
  * Bugfix: Ignoring "hip hop rap" folksonomy tags also ignores "rap", "hip hop", etc. (PICARD-335)
  * Bugfix: Picard downloads multiple 'front' images instead of just first one. (PICARD-350)
  * Bugfix: Saving hidden file with only an extension drops the extension (PICARD-357)
  * Bugfix: Add directory opens in "wrong" dir (PICARD-366)
  * Bugfix: Picard should de-duplicate work lists (PICARD-375)
  * Bugfix: Tree selector in Options window is partially obscured, pane too narrow (PICARD-408)
  * Bugfix: tag acoustid_id can not be removed or deleted in script, renaming or plugin (PICARD-419)
  * Bugfix: Can't remove value from field (PICARD-546)
  * Bugfix: Can't open Options (PICARD-592)
  * Bugfix: "Tags from filenames" action stays enabled even if it is unavailable. (PICARD-688)
  * Bugfix: Using the first image type as filename changes the name of front images (PICARD-701)
  * Bugfix: Fingerprint Submission Failes if AcoustID tags are present and/or invalid (PICARD-706)
  * Bugfix: Picard moves into the selected folder (PICARD-726)
  * Bugfix: Picard does not support (recording) relationship credits (PICARD-730)
  * Bugfix: Picard repeats/duplicates field data (PICARD-748)
  * Bugfix: Number of pending web requests is not decremented on exceptions in the handler (PICARD-751)
  * Bugfix: Divide by zero error in _convert_folksonomy_tags_to_genre when no tag at the release/release group level (  PICARD-753)
  * Bugfix: Directory tree (file browser) not sorted for non-system drives under Windows (PICARD-754)
  * Bugfix: Crash when loading release with only zero count tags (PICARD-759)
  * Bugfix: No name and no window grouping in gnome-shell Alt-Tab app switcher (PICARD-761)
  * Bugfix: Lookup in Browser does not and can not load HTTPS version of musicbrainz.org (PICARD-764)
  * Bugfix: Unable to login using oauth via Picard options with Server Port set to 443 (PICARD-766)
  * Bugfix: "AttributeError: 'MetadataBox' object has no attribute 'resize_columns'" when enabling the cover art box (  PICARD-775)
  * Bugfix: Pre-gap tracks are not counted in absolutetracknumber (PICARD-778)
  * Bugfix: CAA cover art provider runs even if cover art has already been loaded (PICARD-780)
  * Bugfix: Toggling Embed Cover Art in Tags and restarting doesn't have the expected behavior (PICARD-782)
  * Bugfix: XMLWS redirects incorrectly (PICARD-788)
  * Bugfix: Handle empty collection-list in web server response (PICARD-798)
  * Bugfix: Amazon Cover Art provider does not work (and does not have a lot of debug logging enabled) (PICARD-799)
  * Bugfix: Cover Art from CAA release group is skipped even though it exists (PICARD-801)
  * Bugfix: Multiple instances of history and log dialogs (PICARD-804)
  * Bugfix: Empty string lookup (PICARD-805)
  * Bugfix: Will not load album information on any albums (PICARD-811)
  * Bugfix: Redirect URL is not encoded which leads to http 400 error. (PICARD-814)
  * Bugfix: Not compatible with latest Mutagen (PICARD-833)
  * Bugfix: Can't save any files.  Get: "error: invalid literal for int() with base 10" (PICARD-834)
  * Bugfix: Picard 1.3.2 shows cleartext username & password on status line when errors occur (PICARD-839)
  * Bugfix: Cannot fetch cover art from amazon link contains https scheme. (PICARD-848)
  * Bugfix: media-optical-modified.png icon still displayed after release save when two files match one track (PICARD-851)
  * Bugfix: Release that Picard will not load (due to disc with just data track?) (PICARD-853)
  * Bugfix: ValueError in metadata.py (PICARD-855)
  * Bugfix: Improper detection of Gnome as a desktop environment and no support for gnome 3 (PICARD-857)
  * Bugfix: Apparent non-functional tagger button (PICARD-858)
  * Bugfix: Picard does not read Ogg/Opus files with an ".ogg" file exension (PICARD-859)
  * Bugfix: Setting a large value in in $num function as length causes picard to become unresponsive (PICARD-865)
  * Bugfix: id3 deletion needs to be improved (PICARD-867)
  * Bugfix: id3v2.3 does not properly handle TMOO ( mood tag) (PICARD-868)
  * Bugfix: Coverart providers duplicates on reset (PICARD-870)
  * Bugfix: Restore defaults broken for plugins page and tagger scripts page (PICARD-873)
  * Bugfix: Coverart providers erroneous save (PICARD-874)
  * Bugfix: The metadatabox doesn't correctly show the tag selected  (PICARD-876)
  * Bugfix: Length tag for ID3 is no longer displayed in the metadata box (PICARD-881)
  * Bugfix: Removed tags are not removed from the metadatabox after saving the file (PICARD-882)
  * Bugfix: File Browser pane doesn't check for path type( file or folder) when setting home path/move files here (  PICARD-884)
  * Bugfix: mov files return a +ve score for mp4 container leading to errors (PICARD-885)
  * Bugfix: "Restore defaults" doesn't log out the user (PICARD-888)
  * Bugfix: Broken 'Restore Defaults' (PICARD-907)
  * Bugfix: Messagebox wraps and displays title inappropriately (PICARD-911)
  * Bugfix: An “empty” track shouldn’t get an “excellent match” tooltip. (PICARD-914)
  * Bugfix: In plugins list, some plugins don't show description (PICARD-915)
  * Bugfix: Plugin restore defaults broken (PICARD-916)
  * Bugfix: Does not use UI language but locale on Windows (PICARD-917)
  * Bugfix: Preserve scripting splitter position (PICARD-925)
  * Bugfix: Having trouble submitting AcoustIDs (PICARD-926)
  * Bugfix: Cluster double‐click opens the Info… panel (PICARD-931)
  * Bugfix: Status bar not cleared when selection changed (PICARD-937)
  * Bugfix: Open containing folder not working for shared files over network  (PICARD-942)
  * Bugfix: Warning: Plugin directory '…/python2.7/site-packages/contrib/plugins' doesn't exist (PICARD-945)
  * Bugfix: Additionnal files aren't moved anymore (PICARD-946)
  * Bugfix: Search window error message does not appear translated (PICARD-947)
  * Bugfix: Open Containing Folder duplicates (PICARD-950)
  * Bugfix: Errors when directory / file names contain unicode characters (PICARD-958)
  * New Feature: AIF support (ID3) (PICARD-42)
  * New Feature: Test and integrate support for "local" cover art into Picard (PICARD-137)
  * New Feature: Display infos (album, artist, tracklist) for clusters without release match (PICARD-680)
  * New Feature: Add download plugin functionality to existing UI (PICARD-691)
  * New Feature: Fallback on album artist's tags if no tags are found for album (PICARD-738)
  * New Feature: Add m2a as a supported extension (PICARD-743)
  * New Feature: MusicBrainz/AcoustID entities should be hyperlinked in Picard (PICARD-756)
  * New Feature: Support key tag (PICARD-769)
  * New Feature: Export / import settings (PICARD-901)
  * New Feature: Search releases from within a Picard dialog (PICARD-927)
  * New Feature: Searching tracks and displaying similar tracks in a dialog box (PICARD-928)
  * New Feature: Search for artists from dialog (PICARD-929)
  * Task: Picard default name files script refinement (PICARD-717)
  * Task: Update Picard logo/icons (PICARD-760)
  * Task: Link to the Scripting documentation on the Scripting options page (PICARD-779)
  * Task: Remove contrib/plugins from the repository (PICARD-835)
  * Task: Raise the required mutagen version to 1.22 (PICARD-841)
  * Task: Renaming save_only_front_images_to_tags option to something more appropriate  (PICARD-861)
  * Task: Allow translators to finalize translations before releasing Picard 1.4 (PICARD-895)
  * Task: Raise the required Python version to 2.7. (PICARD-904)
  * Task: Bump Picard’s copyright date (PICARD-912)
  * Task: Add Norwegian to UI languages (PICARD-982)
  * Task: Provide ~video variable for video tracks (PICARD-652)
  * Task: Improve error logging on AcoustId submission (PICARD-708)
  * Improvement: Link to Picard Scripting page under 'File Naming' (PICARD-22)
  * Improvement: Restore default settings button/s (PICARD-116)
  * Improvement: Speed of Ogg tag writing/updating (PICARD-133)
  * Improvement: Allow adding/removing tags to be preserved from context menu in the tag diff pane (PICARD-207)
  * Improvement: Make it easier to remove everything currently loaded in Picard (PICARD-210)
  * Improvement: Bring back keyboard shortcuts for editing tags (PICARD-222)
  * Improvement: Case sensitivity for "Move additional files" option (PICARD-229)
  * Improvement: Metadata comparison box shows that it intends to write (and has written) tags unsupported by   underlyingfile format (PICARD-253)
  * Improvement: Add more descriptive tooltips to buttons (PICARD-267)
  * Improvement: Allow musicip_puid and acoustid_id to be cleared from tags (PICARD-268)
  * Improvement: Make it possible to remove existing tags without clearing all tags (PICARD-287)
  * Improvement: Disable recurse subdirectories should be added (PICARD-291)
  * Improvement: display how many "pending files" left on lookup (PICARD-305)
  * Improvement: Handle MP3 TSST/TIT3 (subtitle) tags better with ID3v2.3 (PICARD-307)
  * Improvement: Customisable toolbars (PICARD-353)
  * Improvement: Ignore file extension and try to read anyway (PICARD-359)
  * Improvement: Make it possible to unset all performer (etc) tags (PICARD-384)
  * Improvement: Progress tracking (PICARD-388)
  * Improvement: Add ability to handle multiple tagger scripts (PICARD-404)
  * Improvement: the option "select all" to save (PICARD-476)
  * Improvement: Option to load only audio tracks, i.e. not DVD-Video, CD-ROM tracks (PICARD-514)
  * Improvement: Picard should use OAuth for authentication (PICARD-615)
  * Improvement: Improvements to WMA tags (PICARD-648)
  * Improvement: Only ask to "log in now" once per session (PICARD-678)
  * Improvement: Show codec info for MP4 files (PICARD-683)
  * Improvement: "Play File" button should be renamed to "Open in Player" (PICARD-692)
  * Improvement: ID3 padding not reduced can result in large files (PICARD-695)
  * Improvement: Set option 'caa_approved_only' disabled by default (PICARD-705)
  * Improvement: Validate fpcalc executable in options (PICARD-707)
  * Improvement: Improve File Naming options (PICARD-733)
  * Improvement: Add --long-version/-V option, outputting third parties libs versions as well as Picard version PICARD-734)
  * Improvement: missing info in the help file (PICARD-740)
  * Improvement: Pass command-line arguments to QtApplication (PICARD-773)
  * Improvement: Use the more detailed icons in more places on windows (PICARD-777)
  * Improvement: Use .ini configuration file on all platforms (PICARD-794)
  * Improvement: Use python2 shebang as of PEP 0394 (PICARD-806)
  * Improvement: Display existing covers in File Info dialog (PICARD-808)
  * Improvement: Use HTTPS for external links (PICARD-818)
  * Improvement: Install a scalable icon (PICARD-838)
  * Improvement: Use HTTPS for requests to the plugins API on picard.musicbrainz.org (PICARD-852)
  * Improvement: Use magic numbers to determine the audio file types instead of relying on extensions (PICARD-864)
  * Improvement: Multi-scripting UI is very basic (PICARD-883)
  * Improvement: Allow scripting functions to have arbitrary number of arguments (PICARD-887)
  * Improvement: The "Restore defaults" confirmation buttons should follow the quit confirmation dialog in style PICARD-890)
  * Improvement: Replace submit icon with AcoustID logo (PICARD-896)
  * Improvement: Rename "Submit" button to "Submit AcoustIDs" (PICARD-897)
  * Improvement: Use UTF-8 for ID3v2.4 by default instead of UTF-16 (PICARD-898)
  * Improvement: Restore defaults is slightly broken for tags option page (PICARD-902)
  * Improvement: Rearrange the action toolbar icons from left to right according to the expected user-flow (PICARD-908)
  * Improvement: Add tooltips to “Restore all Defaults” and “Restore Defaults” (PICARD-913)
  * Improvement: Make PICARD-883 UI have adjustable widths for list of scripts and script content (PICARD-918)
  * Improvement: Move Options/Advanced/Scripting to Options/Scripting (PICARD-919)
  * Improvement: Move UI options page up the options tree (PICARD-921)
  * Improvement: Add $startswith and $endswith string functions (PICARD-923)
  * Improvement: Make list of scripts smaller than script text by default (PICARD-924)
  * Improvement: Wait for save thread pool to be finished before exit  (PICARD-944)
  * Improvement: New guess format functionality should use explicit buffer size (PICARD-970)

- Fix the source urls for the plugins.

- Add 0001-Introduce-new-cover-art-thumbnail-class.patch
  0002-Connect-events-for-CoverArtThumbnail-class.patch
  0003-Update-coverartbox-class-to-include-new-and-original.patch
  0004-Update-labels-in-_show-method.patch
  0005-Update-mainwindow-to-display-original-coverart.patch
  0006-Implement-__eq__-method-for-CoverArtThumbnail-and-up.patch
  0007-Add-i18n-support-to-coverart-labels.patch
  0008-Add-view-coverart-changes-button.patch
  0009-Add-spacer-item-to-push-coverartbox-items-to-top.patch
  which are part of pull request 586, which fixes PICARD-258.
  This pull request was already approved upstream but will be merged
  after 1.4.0 is released.
- This makes picard show visual feedback in the main window
  for coverart changes in tracks.

- Add fix-cover-art-downloads.diff, which fixes drag&drop issues with
  cover art images from amazon/google images/urls using https.

OBS-URL: https://build.opensuse.org/request/show/458661
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/picard?expand=0&rev=26
This commit is contained in:
Dominique Leuenberger 2017-02-28 22:50:08 +00:00 committed by Git OBS Bridge
commit c7d8c7f9d2
15 changed files with 843 additions and 49 deletions

View File

@ -0,0 +1,87 @@
From b56a1ac307c2183052334926114cb71da41f3956 Mon Sep 17 00:00:00 2001
From: Sambhav Kothari <sambhavs.email@gmail.com>
Date: Sun, 22 Jan 2017 18:49:00 +0530
Subject: [PATCH 1/9] Introduce new cover-art thumbnail class
---
picard/ui/coverartbox.py | 64 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
diff --git a/picard/ui/coverartbox.py b/picard/ui/coverartbox.py
index fc515877..a2ca057f 100644
--- a/picard/ui/coverartbox.py
+++ b/picard/ui/coverartbox.py
@@ -67,6 +67,70 @@ class ActiveLabel(QtGui.QLabel):
if accepted:
event.acceptProposedAction()
+class CoverArtThumbnail(ActiveLabel):
+
+ def __init__(self, active=False, drops=False, *args, **kwargs):
+ super(CoverArtThumbnail, self).__init__(active, drops, *args, **kwargs)
+ self.data = None
+ self.shadow = QtGui.QPixmap(":/images/CoverArtShadow.png")
+ self.release = None
+ self.setPixmap(self.shadow)
+ self.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignHCenter)
+ self.clicked.connect(self.open_release_page)
+ self.imageDropped.connect(self.fetch_remote_image)
+
+ def show(self):
+ self.set_data(self.data, True)
+
+ def set_data(self, data, force=False, pixmap=None):
+ if not force and self.data == data:
+ return
+
+ self.data = data
+ if not force and self.parent().isHidden():
+ return
+
+ cover = self.shadow
+ if self.data:
+ if pixmap is None:
+ pixmap = QtGui.QPixmap()
+ pixmap.loadFromData(self.data.data)
+ if not pixmap.isNull():
+ offx, offy, w, h = (1, 1, 121, 121)
+ cover = QtGui.QPixmap(self.shadow)
+ pixmap = pixmap.scaled(w, h, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
+ painter = QtGui.QPainter(cover)
+ bgcolor = QtGui.QColor.fromRgb(0, 0, 0, 128)
+ painter.fillRect(QtCore.QRectF(offx, offy, w, h), bgcolor)
+ x = offx + (w - pixmap.width()) / 2
+ y = offy + (h - pixmap.height()) / 2
+ painter.drawPixmap(x, y, pixmap)
+ painter.end()
+ self.setPixmap(cover)
+
+ def set_metadata(self, metadata):
+ data = None
+ if metadata and metadata.images:
+ for image in metadata.images:
+ if image.is_front_image():
+ data = image
+ break
+ else:
+ # There's no front image, choose the first one available
+ data = metadata.images[0]
+ self.set_data(data)
+ release = None
+ if metadata:
+ release = metadata.get("musicbrainz_albumid", None)
+ if release:
+ self.setActive(True)
+ self.setToolTip(_(u"View release on MusicBrainz"))
+ else:
+ self.setActive(False)
+ self.setToolTip("")
+ self.release = release
+
+
class CoverArtBox(QtGui.QGroupBox):
--
2.11.0

View File

@ -0,0 +1,29 @@
From 908c6d73ed340dfba5da5de888e868aa9b211179 Mon Sep 17 00:00:00 2001
From: Sambhav Kothari <sambhavs.email@gmail.com>
Date: Sun, 22 Jan 2017 18:49:48 +0530
Subject: [PATCH 2/9] Connect events for CoverArtThumbnail class
---
picard/ui/coverartbox.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/picard/ui/coverartbox.py b/picard/ui/coverartbox.py
index a2ca057f..b7e4b21c 100644
--- a/picard/ui/coverartbox.py
+++ b/picard/ui/coverartbox.py
@@ -130,6 +130,12 @@ class CoverArtThumbnail(ActiveLabel):
self.setToolTip("")
self.release = release
+ def open_release_page(self):
+ lookup = self.tagger.get_file_lookup()
+ lookup.albumLookup(self.release)
+
+ def fetch_remote_image(self, url):
+ return self.parent().fetch_remote_image(url)
class CoverArtBox(QtGui.QGroupBox):
--
2.11.0

View File

@ -0,0 +1,146 @@
From 569510e9761b80db9e9aac60dffdd207f59a1647 Mon Sep 17 00:00:00 2001
From: Sambhav Kothari <sambhavs.email@gmail.com>
Date: Sun, 22 Jan 2017 18:50:52 +0530
Subject: [PATCH 3/9] Update coverartbox class to include new and original
coverart
---
picard/ui/coverartbox.py | 101 +++++++++++++++--------------------------------
1 file changed, 32 insertions(+), 69 deletions(-)
diff --git a/picard/ui/coverartbox.py b/picard/ui/coverartbox.py
index b7e4b21c..f09326ab 100644
--- a/picard/ui/coverartbox.py
+++ b/picard/ui/coverartbox.py
@@ -137,88 +137,50 @@ class CoverArtThumbnail(ActiveLabel):
def fetch_remote_image(self, url):
return self.parent().fetch_remote_image(url)
-
class CoverArtBox(QtGui.QGroupBox):
def __init__(self, parent):
QtGui.QGroupBox.__init__(self, "")
self.layout = QtGui.QVBoxLayout()
- self.layout.setSpacing(0)
+ self.layout.setSpacing(6)
# Kills off any borders
self.setStyleSheet('''QGroupBox{background-color:none;border:1px;}''')
self.setFlat(True)
- self.release = None
- self.data = None
self.item = None
- self.shadow = QtGui.QPixmap(":/images/CoverArtShadow.png")
- self.coverArt = ActiveLabel(False, parent)
- self.coverArt.setPixmap(self.shadow)
- self.coverArt.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignHCenter)
- self.coverArt.clicked.connect(self.open_release_page)
- self.coverArt.imageDropped.connect(self.fetch_remote_image)
- self.layout.addWidget(self.coverArt, 0)
+ self.cover_art_label = QtGui.QLabel('Cover-Art')
+ self.cover_art_label.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignHCenter)
+ self.cover_art = CoverArtThumbnail(False, True, parent)
+ self.orig_cover_art_label = QtGui.QLabel('')
+ self.orig_cover_art = CoverArtThumbnail(False, False, parent)
+ self.orig_cover_art_label.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignHCenter)
+ self.orig_cover_art.setHidden(True)
+ self.layout.addWidget(self.cover_art_label)
+ self.layout.addWidget(self.cover_art)
+ self.layout.addWidget(self.orig_cover_art_label)
+ self.layout.addWidget(self.orig_cover_art)
self.setLayout(self.layout)
+ def _show(self):
+ if self.cover_art.data == self.orig_cover_art.data:
+ self.orig_cover_art.setHidden(True)
+ else:
+ self.orig_cover_art.setHidden(False)
+ self.cover_art_label.setText('New Cover-Art')
+ self.orig_cover_art_label.setText('Original Cover-Art')
+
def show(self):
- self.__set_data(self.data, True)
+ self.cover_art.show()
+ if self.orig_cover_art.data:
+ self.orig_cover_art.show()
+ self._show()
QtGui.QGroupBox.show(self)
- def __set_data(self, data, force=False, pixmap=None):
- if not force and self.data == data:
- return
-
- self.data = data
- if not force and self.isHidden():
- return
-
- cover = self.shadow
- if self.data:
- if pixmap is None:
- pixmap = QtGui.QPixmap()
- pixmap.loadFromData(self.data.data)
- if not pixmap.isNull():
- offx, offy, w, h = (1, 1, 121, 121)
- cover = QtGui.QPixmap(self.shadow)
- pixmap = pixmap.scaled(w, h, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
- painter = QtGui.QPainter(cover)
- bgcolor = QtGui.QColor.fromRgb(0, 0, 0, 128)
- painter.fillRect(QtCore.QRectF(offx, offy, w, h), bgcolor)
- x = offx + (w - pixmap.width()) / 2
- y = offy + (h - pixmap.height()) / 2
- painter.drawPixmap(x, y, pixmap)
- painter.end()
- self.coverArt.setPixmap(cover)
-
- def set_metadata(self, metadata, item):
- self.item = item
- data = None
- if metadata and metadata.images:
- for image in metadata.images:
- if image.is_front_image():
- data = image
- break
- else:
- # There's no front image, choose the first one available
- data = metadata.images[0]
- self.__set_data(data)
- if item and metadata:
- self.coverArt.setAcceptDrops(True)
- else:
- self.coverArt.setAcceptDrops(False)
- release = None
- if metadata:
- release = metadata.get("musicbrainz_albumid", None)
- if release:
- self.coverArt.setActive(True)
- self.coverArt.setToolTip(_(u"View release on MusicBrainz"))
- else:
- self.coverArt.setActive(False)
- self.coverArt.setToolTip("")
- self.release = release
-
- def open_release_page(self):
- lookup = self.tagger.get_file_lookup()
- lookup.albumLookup(self.release)
+ def set_metadata(self, metadata, orig_metadata, item):
+ self.cover_art.set_metadata(metadata)
+ self.orig_cover_art.set_metadata(orig_metadata)
+ self._show()
+ if item:
+ self.item = item
def fetch_remote_image(self, url):
if self.item is None:
@@ -261,7 +223,8 @@ class CoverArtBox(QtGui.QGroupBox):
return
pixmap = QtGui.QPixmap()
pixmap.loadFromData(data)
- self.__set_data([mime, data], pixmap=pixmap)
+ self.cover_art.set_data([mime, data], pixmap=pixmap)
+ self._show()
if isinstance(self.item, Album):
album = self.item
album.metadata.append_image(coverartimage)
--
2.11.0

View File

@ -0,0 +1,64 @@
From a2df06a4d9cbaf6cc5220fad42751bbb9f269c54 Mon Sep 17 00:00:00 2001
From: Sambhav Kothari <sambhavs.email@gmail.com>
Date: Sun, 22 Jan 2017 18:53:26 +0530
Subject: [PATCH 4/9] Update labels in _show method
---
picard/ui/coverartbox.py | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/picard/ui/coverartbox.py b/picard/ui/coverartbox.py
index f09326ab..2ec1719e 100644
--- a/picard/ui/coverartbox.py
+++ b/picard/ui/coverartbox.py
@@ -35,11 +35,11 @@ class ActiveLabel(QtGui.QLabel):
clicked = QtCore.pyqtSignal()
imageDropped = QtCore.pyqtSignal(QtCore.QUrl)
- def __init__(self, active=True, *args):
+ def __init__(self, active=True, drops=False, *args):
QtGui.QLabel.__init__(self, *args)
self.setMargin(0)
self.setActive(active)
- self.setAcceptDrops(False)
+ self.setAcceptDrops(drops)
def setActive(self, active):
self.active = active
@@ -67,6 +67,7 @@ class ActiveLabel(QtGui.QLabel):
if accepted:
event.acceptProposedAction()
+
class CoverArtThumbnail(ActiveLabel):
def __init__(self, active=False, drops=False, *args, **kwargs):
@@ -137,6 +138,7 @@ class CoverArtThumbnail(ActiveLabel):
def fetch_remote_image(self, url):
return self.parent().fetch_remote_image(url)
+
class CoverArtBox(QtGui.QGroupBox):
def __init__(self, parent):
@@ -147,7 +149,7 @@ class CoverArtBox(QtGui.QGroupBox):
self.setStyleSheet('''QGroupBox{background-color:none;border:1px;}''')
self.setFlat(True)
self.item = None
- self.cover_art_label = QtGui.QLabel('Cover-Art')
+ self.cover_art_label = QtGui.QLabel('')
self.cover_art_label.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignHCenter)
self.cover_art = CoverArtThumbnail(False, True, parent)
self.orig_cover_art_label = QtGui.QLabel('')
@@ -163,6 +165,8 @@ class CoverArtBox(QtGui.QGroupBox):
def _show(self):
if self.cover_art.data == self.orig_cover_art.data:
self.orig_cover_art.setHidden(True)
+ self.cover_art_label.setText('')
+ self.orig_cover_art_label.setText('')
else:
self.orig_cover_art.setHidden(False)
self.cover_art_label.setText('New Cover-Art')
--
2.11.0

View File

@ -0,0 +1,51 @@
From 5eadc2556046fef1a5d25d4735493db90551c3f2 Mon Sep 17 00:00:00 2001
From: Sambhav Kothari <sambhavs.email@gmail.com>
Date: Sun, 22 Jan 2017 18:54:15 +0530
Subject: [PATCH 5/9] Update mainwindow to display original coverart
---
picard/ui/mainwindow.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/picard/ui/mainwindow.py b/picard/ui/mainwindow.py
index 3229f6b7..e34e24ce 100644
--- a/picard/ui/mainwindow.py
+++ b/picard/ui/mainwindow.py
@@ -892,15 +892,17 @@ class MainWindow(QtGui.QMainWindow):
self.update_actions()
metadata = None
+ orig_metadata = None
obj = None
# Clear any existing status bar messages
self.set_statusbar_message("")
if len(objects) == 1:
obj = list(objects)[0]
if isinstance(obj, File):
metadata = obj.metadata
+ orig_metadata = obj.orig_metadata
if obj.state == obj.ERROR:
msg = N_("%(filename)s (error: %(error)s)")
mparms = {
@@ -914,6 +916,7 @@ class MainWindow(QtGui.QMainWindow):
metadata = obj.metadata
if obj.num_linked_files == 1:
file = obj.linked_files[0]
+ orig_metadata = file.orig_metadata
if file.state == File.ERROR:
msg = N_("%(filename)s (%(similarity)d%%) (error: %(error)s)")
mparms = {
@@ -934,7 +937,7 @@ class MainWindow(QtGui.QMainWindow):
self.metadata_box.selection_dirty = True
self.metadata_box.update()
- self.cover_art_box.set_metadata(metadata, obj)
+ self.cover_art_box.set_metadata(metadata, orig_metadata, obj)
self.selection_updated.emit(objects)
def show_cover_art(self):
--
2.11.0

View File

@ -0,0 +1,41 @@
From 623dde46e633ea26338293823ab1b8ebcc78e740 Mon Sep 17 00:00:00 2001
From: Sambhav Kothari <sambhavs.email@gmail.com>
Date: Sun, 22 Jan 2017 19:20:35 +0530
Subject: [PATCH 6/9] Implement __eq__ method for CoverArtThumbnail and update
_show() method
---
picard/ui/coverartbox.py | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/picard/ui/coverartbox.py b/picard/ui/coverartbox.py
index 2ec1719e..03bcdc57 100644
--- a/picard/ui/coverartbox.py
+++ b/picard/ui/coverartbox.py
@@ -80,6 +80,12 @@ class CoverArtThumbnail(ActiveLabel):
self.clicked.connect(self.open_release_page)
self.imageDropped.connect(self.fetch_remote_image)
+ def __eq__(self, other):
+ if self.data and other.data:
+ return self.data.data == other.data.data
+ else:
+ return False
+
def show(self):
self.set_data(self.data, True)
@@ -163,7 +169,9 @@ class CoverArtBox(QtGui.QGroupBox):
self.setLayout(self.layout)
def _show(self):
- if self.cover_art.data == self.orig_cover_art.data:
+ # We want to show the 2 coverarts only if they are different
+ # and orig_cover_art is not None
+ if getattr(self.orig_cover_art, 'data', None) is None or self.cover_art == self.orig_cover_art:
self.orig_cover_art.setHidden(True)
self.cover_art_label.setText('')
self.orig_cover_art_label.setText('')
--
2.11.0

View File

@ -0,0 +1,27 @@
From 1241e13c11e2ad2b441f4f6c5852986145f1ddc7 Mon Sep 17 00:00:00 2001
From: Sambhav Kothari <sambhavs.email@gmail.com>
Date: Sun, 22 Jan 2017 19:35:40 +0530
Subject: [PATCH 7/9] Add i18n support to coverart labels
---
picard/ui/coverartbox.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/picard/ui/coverartbox.py b/picard/ui/coverartbox.py
index 03bcdc57..fb1e6e37 100644
--- a/picard/ui/coverartbox.py
+++ b/picard/ui/coverartbox.py
@@ -177,8 +177,8 @@ class CoverArtBox(QtGui.QGroupBox):
self.orig_cover_art_label.setText('')
else:
self.orig_cover_art.setHidden(False)
- self.cover_art_label.setText('New Cover-Art')
- self.orig_cover_art_label.setText('Original Cover-Art')
+ self.cover_art_label.setText(_(u'New Cover-Art'))
+ self.orig_cover_art_label.setText(_(u'Original Cover-Art'))
def show(self):
self.cover_art.show()
--
2.11.0

View File

@ -0,0 +1,76 @@
From 6d0f24b91a472519c85fb2b93fb60b0809ca4c1c Mon Sep 17 00:00:00 2001
From: Sambhav Kothari <sambhavs.email@gmail.com>
Date: Sun, 22 Jan 2017 20:31:57 +0530
Subject: [PATCH 8/9] Add view coverart changes button
---
picard/ui/coverartbox.py | 10 ++++++++++
picard/ui/mainwindow.py | 3 ++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/picard/ui/coverartbox.py b/picard/ui/coverartbox.py
index fb1e6e37..2b3b4cfa 100644
--- a/picard/ui/coverartbox.py
+++ b/picard/ui/coverartbox.py
@@ -151,6 +151,7 @@ class CoverArtBox(QtGui.QGroupBox):
QtGui.QGroupBox.__init__(self, "")
self.layout = QtGui.QVBoxLayout()
self.layout.setSpacing(6)
+ self.parent = parent
# Kills off any borders
self.setStyleSheet('''QGroupBox{background-color:none;border:1px;}''')
self.setFlat(True)
@@ -162,20 +163,29 @@ class CoverArtBox(QtGui.QGroupBox):
self.orig_cover_art = CoverArtThumbnail(False, False, parent)
self.orig_cover_art_label.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignHCenter)
self.orig_cover_art.setHidden(True)
+ self.view_changes_button = QtGui.QPushButton(_(u'View all changes'), self)
+ self.view_changes_button.setHidden(True)
self.layout.addWidget(self.cover_art_label)
self.layout.addWidget(self.cover_art)
self.layout.addWidget(self.orig_cover_art_label)
self.layout.addWidget(self.orig_cover_art)
+ self.layout.addWidget(self.view_changes_button)
self.setLayout(self.layout)
+ self.view_changes_button.clicked.connect(self.show_cover_art_info)
+
+ def show_cover_art_info(self):
+ self.parent.view_info(default_tab=1)
def _show(self):
# We want to show the 2 coverarts only if they are different
# and orig_cover_art is not None
if getattr(self.orig_cover_art, 'data', None) is None or self.cover_art == self.orig_cover_art:
+ self.view_changes_button.setHidden(True)
self.orig_cover_art.setHidden(True)
self.cover_art_label.setText('')
self.orig_cover_art_label.setText('')
else:
+ self.view_changes_button.setHidden(False)
self.orig_cover_art.setHidden(False)
self.cover_art_label.setText(_(u'New Cover-Art'))
self.orig_cover_art_label.setText(_(u'Original Cover-Art'))
diff --git a/picard/ui/mainwindow.py b/picard/ui/mainwindow.py
index e34e24ce..4c89dfe2 100644
--- a/picard/ui/mainwindow.py
+++ b/picard/ui/mainwindow.py
@@ -818,7 +818,7 @@ class MainWindow(QtGui.QMainWindow):
dialog.show_similar_albums(obj)
dialog.exec_()
- def view_info(self):
+ def view_info(self, default_tab=0):
if isinstance(self.selected_objects[0], Album):
album = self.selected_objects[0]
dialog = AlbumInfoDialog(album, self)
@@ -828,6 +828,7 @@ class MainWindow(QtGui.QMainWindow):
else:
file = self.tagger.get_files_from_objects(self.selected_objects)[0]
dialog = FileInfoDialog(file, self)
+ dialog.ui.tabWidget.setCurrentIndex(default_tab)
dialog.exec_()
def cluster(self):
--
2.11.0

View File

@ -0,0 +1,32 @@
From de61907483452dc6c85c1b7f596ccbbae8fe8fea Mon Sep 17 00:00:00 2001
From: Sambhav Kothari <sambhavs.email@gmail.com>
Date: Sun, 22 Jan 2017 20:33:01 +0530
Subject: [PATCH 9/9] Add spacer item to push coverartbox items to top
---
picard/ui/coverartbox.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/picard/ui/coverartbox.py b/picard/ui/coverartbox.py
index 2b3b4cfa..3acb23f6 100644
--- a/picard/ui/coverartbox.py
+++ b/picard/ui/coverartbox.py
@@ -159,6 +159,7 @@ class CoverArtBox(QtGui.QGroupBox):
self.cover_art_label = QtGui.QLabel('')
self.cover_art_label.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignHCenter)
self.cover_art = CoverArtThumbnail(False, True, parent)
+ spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.orig_cover_art_label = QtGui.QLabel('')
self.orig_cover_art = CoverArtThumbnail(False, False, parent)
self.orig_cover_art_label.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignHCenter)
@@ -170,6 +171,7 @@ class CoverArtBox(QtGui.QGroupBox):
self.layout.addWidget(self.orig_cover_art_label)
self.layout.addWidget(self.orig_cover_art)
self.layout.addWidget(self.view_changes_button)
+ self.layout.addSpacerItem(spacerItem)
self.setLayout(self.layout)
self.view_changes_button.clicked.connect(self.show_cover_art_info)
--
2.11.0

View File

@ -1,30 +0,0 @@
# -*- coding: utf-8 -*-
PLUGIN_NAME = 'Bonus Disc'
PLUGIN_AUTHOR = 'Jan van Thiel'
PLUGIN_DESCRIPTION = '''Based on a script by Lukas Lalinsky.<br/>
<br/>
Moves bonus disc and bonus disc titles from album titles to separate tags. For example:<br/>
<em>"Sleeping With Ghosts (bonus disc: Covers)"</em>
<ul>
<li>album = <em>"Sleeping With Ghosts"</em></li>
<li>bonusdisc = <em>"bonus"</em></li>
<li>bonusdisctitle = <em>"Covers"</em></li>
</ul>'''
PLUGIN_VERSION = "0.1"
PLUGIN_API_VERSIONS = ["0.9.0", "0.10", "0.15"]
from picard.metadata import register_album_metadata_processor
import re
_bonusdisc_re = re.compile(r"\s+\(bonus disc(?::\s+([^)]+))?\)")
def remove_bonusdiscs(tagger, metadata, release):
matches = _bonusdisc_re.search(metadata["album"])
if matches:
metadata["bonusdisc"] = "bonus"
if matches.group(1):
metadata["bonusdisctitle"] = matches.group(1)
metadata["album"] = _bonusdisc_re.sub('', metadata["album"])
register_album_metadata_processor(remove_bonusdiscs)

View File

@ -0,0 +1,56 @@
diff --git a/picard/ui/coverartbox.py b/picard/ui/coverartbox.py
index fc515877..f381fe77 100644
--- a/picard/ui/coverartbox.py
+++ b/picard/ui/coverartbox.py
@@ -54,14 +54,14 @@ class ActiveLabel(QtGui.QLabel):
def dragEnterEvent(self, event):
for url in event.mimeData().urls():
- if url.scheme() in ('http', 'file'):
+ if url.scheme() in ('https', 'http', 'file'):
event.acceptProposedAction()
break
def dropEvent(self, event):
accepted = False
for url in event.mimeData().urls():
- if url.scheme() in ('http', 'file'):
+ if url.scheme() in ('https', 'http', 'file'):
accepted = True
self.imageDropped.emit(url)
if accepted:
@@ -153,11 +153,15 @@ class CoverArtBox(QtGui.QGroupBox):
def fetch_remote_image(self, url):
if self.item is None:
return
- if url.scheme() == 'http':
+ if url.scheme() in ('https', 'http'):
path = url.encodedPath()
if url.hasQuery():
path += '?' + url.encodedQuery()
- self.tagger.xmlws.get(url.encodedHost(), url.port(80), path,
+ if url.scheme() == 'https':
+ port = 443
+ else:
+ port = 80
+ self.tagger.xmlws.get(str(url.encodedHost()), url.port(port), str(path),
partial(self.on_remote_image_fetched, url),
xml=False,
priority=True, important=True)
@@ -173,13 +177,14 @@ class CoverArtBox(QtGui.QGroupBox):
mime = reply.header(QtNetwork.QNetworkRequest.ContentTypeHeader)
if mime in ('image/jpeg', 'image/png'):
self.load_remote_image(url, mime, data)
- elif reply.url().hasQueryItem("imgurl"):
+ elif url.hasQueryItem("imgurl"):
# This may be a google images result, try to get the URL which is encoded in the query
- url = QtCore.QUrl(reply.url().queryItemValue("imgurl"))
+ url = QtCore.QUrl(url.queryItemValue("imgurl"))
self.fetch_remote_image(url)
else:
log.warning("Can't load image with MIME-Type %s", mime)
+
def load_remote_image(self, url, mime, data):
try:
coverartimage = CoverArtImage(

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e728234560b82eb33d3143a53d3bbb92833455fd130f8d2083193cffceea4120
size 2047760

3
picard-1.4.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:069266ce0b0e25cc4eacfd9cc1c78e1b19d4341a3ca2ce50b0e731796070273e
size 2075987

View File

@ -1,3 +1,196 @@
-------------------------------------------------------------------
Fri Feb 17 10:16:22 UTC 2017 - olaf@aepfle.de
- Drop bonusdisc.py, URL disappeared
-------------------------------------------------------------------
Tue Feb 14 12:34:42 UTC 2017 - alarrosa@suse.com
- Update to version 1.4.0
* Bugfix: AcoustID submission fails with code 299 (PICARD-82)
* Bugfix: Ignoring "hip hop rap" folksonomy tags also ignores "rap", "hip hop", etc. (PICARD-335)
* Bugfix: Picard downloads multiple 'front' images instead of just first one. (PICARD-350)
* Bugfix: Saving hidden file with only an extension drops the extension (PICARD-357)
* Bugfix: Add directory opens in "wrong" dir (PICARD-366)
* Bugfix: Picard should de-duplicate work lists (PICARD-375)
* Bugfix: Tree selector in Options window is partially obscured, pane too narrow (PICARD-408)
* Bugfix: tag acoustid_id can not be removed or deleted in script, renaming or plugin (PICARD-419)
* Bugfix: Can't remove value from field (PICARD-546)
* Bugfix: Can't open Options (PICARD-592)
* Bugfix: "Tags from filenames" action stays enabled even if it is unavailable. (PICARD-688)
* Bugfix: Using the first image type as filename changes the name of front images (PICARD-701)
* Bugfix: Fingerprint Submission Failes if AcoustID tags are present and/or invalid (PICARD-706)
* Bugfix: Picard moves into the selected folder (PICARD-726)
* Bugfix: Picard does not support (recording) relationship credits (PICARD-730)
* Bugfix: Picard repeats/duplicates field data (PICARD-748)
* Bugfix: Number of pending web requests is not decremented on exceptions in the handler (PICARD-751)
* Bugfix: Divide by zero error in _convert_folksonomy_tags_to_genre when no tag at the release/release group level ( PICARD-753)
* Bugfix: Directory tree (file browser) not sorted for non-system drives under Windows (PICARD-754)
* Bugfix: Crash when loading release with only zero count tags (PICARD-759)
* Bugfix: No name and no window grouping in gnome-shell Alt-Tab app switcher (PICARD-761)
* Bugfix: Lookup in Browser does not and can not load HTTPS version of musicbrainz.org (PICARD-764)
* Bugfix: Unable to login using oauth via Picard options with Server Port set to 443 (PICARD-766)
* Bugfix: "AttributeError: 'MetadataBox' object has no attribute 'resize_columns'" when enabling the cover art box ( PICARD-775)
* Bugfix: Pre-gap tracks are not counted in absolutetracknumber (PICARD-778)
* Bugfix: CAA cover art provider runs even if cover art has already been loaded (PICARD-780)
* Bugfix: Toggling Embed Cover Art in Tags and restarting doesn't have the expected behavior (PICARD-782)
* Bugfix: XMLWS redirects incorrectly (PICARD-788)
* Bugfix: Handle empty collection-list in web server response (PICARD-798)
* Bugfix: Amazon Cover Art provider does not work (and does not have a lot of debug logging enabled) (PICARD-799)
* Bugfix: Cover Art from CAA release group is skipped even though it exists (PICARD-801)
* Bugfix: Multiple instances of history and log dialogs (PICARD-804)
* Bugfix: Empty string lookup (PICARD-805)
* Bugfix: Will not load album information on any albums (PICARD-811)
* Bugfix: Redirect URL is not encoded which leads to http 400 error. (PICARD-814)
* Bugfix: Not compatible with latest Mutagen (PICARD-833)
* Bugfix: Can't save any files. Get: "error: invalid literal for int() with base 10" (PICARD-834)
* Bugfix: Picard 1.3.2 shows cleartext username & password on status line when errors occur (PICARD-839)
* Bugfix: Cannot fetch cover art from amazon link contains https scheme. (PICARD-848)
* Bugfix: media-optical-modified.png icon still displayed after release save when two files match one track (PICARD-851)
* Bugfix: Release that Picard will not load (due to disc with just data track?) (PICARD-853)
* Bugfix: ValueError in metadata.py (PICARD-855)
* Bugfix: Improper detection of Gnome as a desktop environment and no support for gnome 3 (PICARD-857)
* Bugfix: Apparent non-functional tagger button (PICARD-858)
* Bugfix: Picard does not read Ogg/Opus files with an ".ogg" file exension (PICARD-859)
* Bugfix: Setting a large value in in $num function as length causes picard to become unresponsive (PICARD-865)
* Bugfix: id3 deletion needs to be improved (PICARD-867)
* Bugfix: id3v2.3 does not properly handle TMOO ( mood tag) (PICARD-868)
* Bugfix: Coverart providers duplicates on reset (PICARD-870)
* Bugfix: Restore defaults broken for plugins page and tagger scripts page (PICARD-873)
* Bugfix: Coverart providers erroneous save (PICARD-874)
* Bugfix: The metadatabox doesn't correctly show the tag selected (PICARD-876)
* Bugfix: Length tag for ID3 is no longer displayed in the metadata box (PICARD-881)
* Bugfix: Removed tags are not removed from the metadatabox after saving the file (PICARD-882)
* Bugfix: File Browser pane doesn't check for path type( file or folder) when setting home path/move files here ( PICARD-884)
* Bugfix: mov files return a +ve score for mp4 container leading to errors (PICARD-885)
* Bugfix: "Restore defaults" doesn't log out the user (PICARD-888)
* Bugfix: Broken 'Restore Defaults' (PICARD-907)
* Bugfix: Messagebox wraps and displays title inappropriately (PICARD-911)
* Bugfix: An “empty” track shouldnt get an “excellent match” tooltip. (PICARD-914)
* Bugfix: In plugins list, some plugins don't show description (PICARD-915)
* Bugfix: Plugin restore defaults broken (PICARD-916)
* Bugfix: Does not use UI language but locale on Windows (PICARD-917)
* Bugfix: Preserve scripting splitter position (PICARD-925)
* Bugfix: Having trouble submitting AcoustIDs (PICARD-926)
* Bugfix: Cluster doubleclick opens the Info… panel (PICARD-931)
* Bugfix: Status bar not cleared when selection changed (PICARD-937)
* Bugfix: Open containing folder not working for shared files over network (PICARD-942)
* Bugfix: Warning: Plugin directory '…/python2.7/site-packages/contrib/plugins' doesn't exist (PICARD-945)
* Bugfix: Additionnal files aren't moved anymore (PICARD-946)
* Bugfix: Search window error message does not appear translated (PICARD-947)
* Bugfix: Open Containing Folder duplicates (PICARD-950)
* Bugfix: Errors when directory / file names contain unicode characters (PICARD-958)
* New Feature: AIF support (ID3) (PICARD-42)
* New Feature: Test and integrate support for "local" cover art into Picard (PICARD-137)
* New Feature: Display infos (album, artist, tracklist) for clusters without release match (PICARD-680)
* New Feature: Add download plugin functionality to existing UI (PICARD-691)
* New Feature: Fallback on album artist's tags if no tags are found for album (PICARD-738)
* New Feature: Add m2a as a supported extension (PICARD-743)
* New Feature: MusicBrainz/AcoustID entities should be hyperlinked in Picard (PICARD-756)
* New Feature: Support key tag (PICARD-769)
* New Feature: Export / import settings (PICARD-901)
* New Feature: Search releases from within a Picard dialog (PICARD-927)
* New Feature: Searching tracks and displaying similar tracks in a dialog box (PICARD-928)
* New Feature: Search for artists from dialog (PICARD-929)
* Task: Picard default name files script refinement (PICARD-717)
* Task: Update Picard logo/icons (PICARD-760)
* Task: Link to the Scripting documentation on the Scripting options page (PICARD-779)
* Task: Remove contrib/plugins from the repository (PICARD-835)
* Task: Raise the required mutagen version to 1.22 (PICARD-841)
* Task: Renaming save_only_front_images_to_tags option to something more appropriate (PICARD-861)
* Task: Allow translators to finalize translations before releasing Picard 1.4 (PICARD-895)
* Task: Raise the required Python version to 2.7. (PICARD-904)
* Task: Bump Picards copyright date (PICARD-912)
* Task: Add Norwegian to UI languages (PICARD-982)
* Task: Provide ~video variable for video tracks (PICARD-652)
* Task: Improve error logging on AcoustId submission (PICARD-708)
* Improvement: Link to Picard Scripting page under 'File Naming' (PICARD-22)
* Improvement: Restore default settings button/s (PICARD-116)
* Improvement: Speed of Ogg tag writing/updating (PICARD-133)
* Improvement: Allow adding/removing tags to be preserved from context menu in the tag diff pane (PICARD-207)
* Improvement: Make it easier to remove everything currently loaded in Picard (PICARD-210)
* Improvement: Bring back keyboard shortcuts for editing tags (PICARD-222)
* Improvement: Case sensitivity for "Move additional files" option (PICARD-229)
* Improvement: Metadata comparison box shows that it intends to write (and has written) tags unsupported by underlyingfile format (PICARD-253)
* Improvement: Add more descriptive tooltips to buttons (PICARD-267)
* Improvement: Allow musicip_puid and acoustid_id to be cleared from tags (PICARD-268)
* Improvement: Make it possible to remove existing tags without clearing all tags (PICARD-287)
* Improvement: Disable recurse subdirectories should be added (PICARD-291)
* Improvement: display how many "pending files" left on lookup (PICARD-305)
* Improvement: Handle MP3 TSST/TIT3 (subtitle) tags better with ID3v2.3 (PICARD-307)
* Improvement: Customisable toolbars (PICARD-353)
* Improvement: Ignore file extension and try to read anyway (PICARD-359)
* Improvement: Make it possible to unset all performer (etc) tags (PICARD-384)
* Improvement: Progress tracking (PICARD-388)
* Improvement: Add ability to handle multiple tagger scripts (PICARD-404)
* Improvement: the option "select all" to save (PICARD-476)
* Improvement: Option to load only audio tracks, i.e. not DVD-Video, CD-ROM tracks (PICARD-514)
* Improvement: Picard should use OAuth for authentication (PICARD-615)
* Improvement: Improvements to WMA tags (PICARD-648)
* Improvement: Only ask to "log in now" once per session (PICARD-678)
* Improvement: Show codec info for MP4 files (PICARD-683)
* Improvement: "Play File" button should be renamed to "Open in Player" (PICARD-692)
* Improvement: ID3 padding not reduced can result in large files (PICARD-695)
* Improvement: Set option 'caa_approved_only' disabled by default (PICARD-705)
* Improvement: Validate fpcalc executable in options (PICARD-707)
* Improvement: Improve File Naming options (PICARD-733)
* Improvement: Add --long-version/-V option, outputting third parties libs versions as well as Picard version PICARD-734)
* Improvement: missing info in the help file (PICARD-740)
* Improvement: Pass command-line arguments to QtApplication (PICARD-773)
* Improvement: Use the more detailed icons in more places on windows (PICARD-777)
* Improvement: Use .ini configuration file on all platforms (PICARD-794)
* Improvement: Use python2 shebang as of PEP 0394 (PICARD-806)
* Improvement: Display existing covers in File Info dialog (PICARD-808)
* Improvement: Use HTTPS for external links (PICARD-818)
* Improvement: Install a scalable icon (PICARD-838)
* Improvement: Use HTTPS for requests to the plugins API on picard.musicbrainz.org (PICARD-852)
* Improvement: Use magic numbers to determine the audio file types instead of relying on extensions (PICARD-864)
* Improvement: Multi-scripting UI is very basic (PICARD-883)
* Improvement: Allow scripting functions to have arbitrary number of arguments (PICARD-887)
* Improvement: The "Restore defaults" confirmation buttons should follow the quit confirmation dialog in style PICARD-890)
* Improvement: Replace submit icon with AcoustID logo (PICARD-896)
* Improvement: Rename "Submit" button to "Submit AcoustIDs" (PICARD-897)
* Improvement: Use UTF-8 for ID3v2.4 by default instead of UTF-16 (PICARD-898)
* Improvement: Restore defaults is slightly broken for tags option page (PICARD-902)
* Improvement: Rearrange the action toolbar icons from left to right according to the expected user-flow (PICARD-908)
* Improvement: Add tooltips to “Restore all Defaults” and “Restore Defaults” (PICARD-913)
* Improvement: Make PICARD-883 UI have adjustable widths for list of scripts and script content (PICARD-918)
* Improvement: Move Options/Advanced/Scripting to Options/Scripting (PICARD-919)
* Improvement: Move UI options page up the options tree (PICARD-921)
* Improvement: Add $startswith and $endswith string functions (PICARD-923)
* Improvement: Make list of scripts smaller than script text by default (PICARD-924)
* Improvement: Wait for save thread pool to be finished before exit (PICARD-944)
* Improvement: New guess format functionality should use explicit buffer size (PICARD-970)
-------------------------------------------------------------------
Tue Feb 14 11:33:53 UTC 2017 - alarrosa@suse.com
- Fix the source urls for the plugins.
-------------------------------------------------------------------
Sun Feb 12 11:28:08 UTC 2017 - alarrosa@suse.com
- Add 0001-Introduce-new-cover-art-thumbnail-class.patch
0002-Connect-events-for-CoverArtThumbnail-class.patch
0003-Update-coverartbox-class-to-include-new-and-original.patch
0004-Update-labels-in-_show-method.patch
0005-Update-mainwindow-to-display-original-coverart.patch
0006-Implement-__eq__-method-for-CoverArtThumbnail-and-up.patch
0007-Add-i18n-support-to-coverart-labels.patch
0008-Add-view-coverart-changes-button.patch
0009-Add-spacer-item-to-push-coverartbox-items-to-top.patch
which are part of pull request 586, which fixes PICARD-258.
This pull request was already approved upstream but will be merged
after 1.4.0 is released.
- This makes picard show visual feedback in the main window
for coverart changes in tracks.
-------------------------------------------------------------------
Sat Feb 11 09:13:52 UTC 2017 - alarrosa@suse.com
- Add fix-cover-art-downloads.diff, which fixes drag&drop issues with
cover art images from amazon/google images/urls using https.
-------------------------------------------------------------------
Wed Jun 29 09:56:06 UTC 2016 - hpj@urpla.net

View File

@ -1,7 +1,7 @@
#
# spec file for package picard
#
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -17,25 +17,37 @@
Name: picard
Version: 1.3.2
Version: 1.4.0
Release: 0
Summary: The Next Generation MusicBrainz Tagger
License: GPL-2.0+
Group: Productivity/Multimedia/Sound/Utilities
Url: http://musicbrainz.org/doc/PicardTagger
Source0: http://ftp.musicbrainz.org/pub/musicbrainz/picard/%{name}-%{version}.tar.gz
Source0: ftp://ftp.musicbrainz.org/pub/musicbrainz/picard/%{name}-1.4.tar.gz
Patch0: fix-cover-art-downloads.diff
Patch1: 0001-Introduce-new-cover-art-thumbnail-class.patch
Patch2: 0002-Connect-events-for-CoverArtThumbnail-class.patch
Patch3: 0003-Update-coverartbox-class-to-include-new-and-original.patch
Patch4: 0004-Update-labels-in-_show-method.patch
Patch5: 0005-Update-mainwindow-to-display-original-coverart.patch
Patch6: 0006-Implement-__eq__-method-for-CoverArtThumbnail-and-up.patch
Patch7: 0007-Add-i18n-support-to-coverart-labels.patch
Patch8: 0008-Add-view-coverart-changes-button.patch
Patch9: 0009-Add-spacer-item-to-push-coverartbox-items-to-top.patch
# http://wiki.musicbrainz.org/Picard_Plugins
Source2: http://dispuutivv.nl/~jan/bonusdisc.py
Source8: http://users.musicbrainz.org/~brianfreud/SearchAmazon3.py
Source9: http://users.musicbrainz.org/~brianfreud/SearchAMG.py
Source10: http://users.musicbrainz.org/~brianfreud/SearchCastAlbums3.py
Source11: http://users.musicbrainz.org/~brianfreud/SearchDiscogs3.py
Source12: http://users.musicbrainz.org/~brianfreud/SearchFilmMusziek3.py
Source13: http://users.musicbrainz.org/~brianfreud/SearchGMR.py
Source14: http://users.musicbrainz.org/~brianfreud/SearchGoogle3.py
Source15: http://users.musicbrainz.org/~brianfreud/SearchLortelArchives3.py
Source16: http://users.musicbrainz.org/~brianfreud/SearchSoundtrackCollector3.py
Source17: http://users.musicbrainz.org/~brianfreud/SearchSoundtrackINFO3.py
# All of the Search*.py files come from https://github.com/brianfreud/Picard-plugins
# The full URL can not be part of this specfile because download corrupts line endings
Source8: SearchAmazon3.py
Source9: SearchAMG.py
Source10: SearchCastAlbums3.py
Source11: SearchDiscogs3.py
Source12: SearchFilmMusziek3.py
Source13: SearchGMR.py
Source14: SearchGoogle3.py
Source15: SearchLortelArchives3.py
Source16: SearchSoundtrackCollector3.py
Source17: SearchSoundtrackINFO3.py
#
BuildRequires: desktop-file-utils
BuildRequires: gcc-c++
BuildRequires: libofa-devel
@ -58,7 +70,17 @@ tagging and cross platform compatibility.
%lang_package
%prep
%setup -q -n %{name}-release-%{version}
%setup -q -n %{name}-release-1.4
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%build
python setup.py config
@ -69,7 +91,6 @@ python setup.py install --skip-build --prefix=%{_prefix} --root=%{buildroot}
# install plugins
PLUGINDIR=%{buildroot}%{py_sitedir}/picard/plugins/
install -m 0644 %{SOURCE2} ${PLUGINDIR}
install -m 0644 %{SOURCE8} ${PLUGINDIR}
install -m 0644 %{SOURCE9} ${PLUGINDIR}
install -m 0644 %{SOURCE10} ${PLUGINDIR}
@ -102,6 +123,7 @@ rm -rfv %{buildroot}%{_datadir}/locale/sco
%{_datadir}/applications/%{name}.desktop
%{python_sitearch}/picard*
%{_datadir}/icons/hicolor/*/apps/picard.png
%{_datadir}/icons/hicolor/*/apps/picard.svg
%files lang -f %{name}.lang
%defattr(-,root,root)