From b6d44fd48e8a47be424e2932407d372083a6424ad7216ac39518803031c863cd Mon Sep 17 00:00:00 2001 From: Olaf Hering Date: Tue, 14 Feb 2017 14:37:35 +0000 Subject: [PATCH 1/3] Accepting request 457107 from home:alarrosa:branches:multimedia:apps - 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) OBS-URL: https://build.opensuse.org/request/show/457107 OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/picard?expand=0&rev=47 --- ...roduce-new-cover-art-thumbnail-class.patch | 87 ++++++++ ...t-events-for-CoverArtThumbnail-class.patch | 29 +++ ...ox-class-to-include-new-and-original.patch | 146 ++++++++++++++ 0004-Update-labels-in-_show-method.patch | 64 ++++++ ...nwindow-to-display-original-coverart.patch | 51 +++++ ...-method-for-CoverArtThumbnail-and-up.patch | 41 ++++ ...-Add-i18n-support-to-coverart-labels.patch | 27 +++ 0008-Add-view-coverart-changes-button.patch | 76 +++++++ ...tem-to-push-coverartbox-items-to-top.patch | 32 +++ fix-cover-art-downloads.diff | 56 ++++++ picard-1.3.2.tar.gz | 3 - picard-1.4.tar.gz | 3 + picard.changes | 188 ++++++++++++++++++ picard.spec | 49 +++-- 14 files changed, 835 insertions(+), 17 deletions(-) create mode 100644 0001-Introduce-new-cover-art-thumbnail-class.patch create mode 100644 0002-Connect-events-for-CoverArtThumbnail-class.patch create mode 100644 0003-Update-coverartbox-class-to-include-new-and-original.patch create mode 100644 0004-Update-labels-in-_show-method.patch create mode 100644 0005-Update-mainwindow-to-display-original-coverart.patch create mode 100644 0006-Implement-__eq__-method-for-CoverArtThumbnail-and-up.patch create mode 100644 0007-Add-i18n-support-to-coverart-labels.patch create mode 100644 0008-Add-view-coverart-changes-button.patch create mode 100644 0009-Add-spacer-item-to-push-coverartbox-items-to-top.patch create mode 100644 fix-cover-art-downloads.diff delete mode 100644 picard-1.3.2.tar.gz create mode 100644 picard-1.4.tar.gz diff --git a/0001-Introduce-new-cover-art-thumbnail-class.patch b/0001-Introduce-new-cover-art-thumbnail-class.patch new file mode 100644 index 0000000..76bdbd4 --- /dev/null +++ b/0001-Introduce-new-cover-art-thumbnail-class.patch @@ -0,0 +1,87 @@ +From b56a1ac307c2183052334926114cb71da41f3956 Mon Sep 17 00:00:00 2001 +From: Sambhav Kothari +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 + diff --git a/0002-Connect-events-for-CoverArtThumbnail-class.patch b/0002-Connect-events-for-CoverArtThumbnail-class.patch new file mode 100644 index 0000000..17d601b --- /dev/null +++ b/0002-Connect-events-for-CoverArtThumbnail-class.patch @@ -0,0 +1,29 @@ +From 908c6d73ed340dfba5da5de888e868aa9b211179 Mon Sep 17 00:00:00 2001 +From: Sambhav Kothari +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 + diff --git a/0003-Update-coverartbox-class-to-include-new-and-original.patch b/0003-Update-coverartbox-class-to-include-new-and-original.patch new file mode 100644 index 0000000..e27309d --- /dev/null +++ b/0003-Update-coverartbox-class-to-include-new-and-original.patch @@ -0,0 +1,146 @@ +From 569510e9761b80db9e9aac60dffdd207f59a1647 Mon Sep 17 00:00:00 2001 +From: Sambhav Kothari +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 + diff --git a/0004-Update-labels-in-_show-method.patch b/0004-Update-labels-in-_show-method.patch new file mode 100644 index 0000000..f606db0 --- /dev/null +++ b/0004-Update-labels-in-_show-method.patch @@ -0,0 +1,64 @@ +From a2df06a4d9cbaf6cc5220fad42751bbb9f269c54 Mon Sep 17 00:00:00 2001 +From: Sambhav Kothari +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 + diff --git a/0005-Update-mainwindow-to-display-original-coverart.patch b/0005-Update-mainwindow-to-display-original-coverart.patch new file mode 100644 index 0000000..e44ae1d --- /dev/null +++ b/0005-Update-mainwindow-to-display-original-coverart.patch @@ -0,0 +1,51 @@ +From 5eadc2556046fef1a5d25d4735493db90551c3f2 Mon Sep 17 00:00:00 2001 +From: Sambhav Kothari +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 + diff --git a/0006-Implement-__eq__-method-for-CoverArtThumbnail-and-up.patch b/0006-Implement-__eq__-method-for-CoverArtThumbnail-and-up.patch new file mode 100644 index 0000000..b8c4c92 --- /dev/null +++ b/0006-Implement-__eq__-method-for-CoverArtThumbnail-and-up.patch @@ -0,0 +1,41 @@ +From 623dde46e633ea26338293823ab1b8ebcc78e740 Mon Sep 17 00:00:00 2001 +From: Sambhav Kothari +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 + diff --git a/0007-Add-i18n-support-to-coverart-labels.patch b/0007-Add-i18n-support-to-coverart-labels.patch new file mode 100644 index 0000000..8560f9a --- /dev/null +++ b/0007-Add-i18n-support-to-coverart-labels.patch @@ -0,0 +1,27 @@ +From 1241e13c11e2ad2b441f4f6c5852986145f1ddc7 Mon Sep 17 00:00:00 2001 +From: Sambhav Kothari +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 + diff --git a/0008-Add-view-coverart-changes-button.patch b/0008-Add-view-coverart-changes-button.patch new file mode 100644 index 0000000..8d46393 --- /dev/null +++ b/0008-Add-view-coverart-changes-button.patch @@ -0,0 +1,76 @@ +From 6d0f24b91a472519c85fb2b93fb60b0809ca4c1c Mon Sep 17 00:00:00 2001 +From: Sambhav Kothari +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 + diff --git a/0009-Add-spacer-item-to-push-coverartbox-items-to-top.patch b/0009-Add-spacer-item-to-push-coverartbox-items-to-top.patch new file mode 100644 index 0000000..4e3db46 --- /dev/null +++ b/0009-Add-spacer-item-to-push-coverartbox-items-to-top.patch @@ -0,0 +1,32 @@ +From de61907483452dc6c85c1b7f596ccbbae8fe8fea Mon Sep 17 00:00:00 2001 +From: Sambhav Kothari +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 + diff --git a/fix-cover-art-downloads.diff b/fix-cover-art-downloads.diff new file mode 100644 index 0000000..e86414a --- /dev/null +++ b/fix-cover-art-downloads.diff @@ -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( diff --git a/picard-1.3.2.tar.gz b/picard-1.3.2.tar.gz deleted file mode 100644 index 167631f..0000000 --- a/picard-1.3.2.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e728234560b82eb33d3143a53d3bbb92833455fd130f8d2083193cffceea4120 -size 2047760 diff --git a/picard-1.4.tar.gz b/picard-1.4.tar.gz new file mode 100644 index 0000000..1351d16 --- /dev/null +++ b/picard-1.4.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:069266ce0b0e25cc4eacfd9cc1c78e1b19d4341a3ca2ce50b0e731796070273e +size 2075987 diff --git a/picard.changes b/picard.changes index bba1b19..2f41410 100644 --- a/picard.changes +++ b/picard.changes @@ -1,3 +1,191 @@ +------------------------------------------------------------------- +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 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) + +------------------------------------------------------------------- +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 diff --git a/picard.spec b/picard.spec index c6e4a7b..db52bbe 100644 --- a/picard.spec +++ b/picard.spec @@ -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,35 @@ 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 +Source8: https://github.com/brianfreud/Picard-plugins/blob/master/SearchAmazon3.py +Source9: https://github.com/brianfreud/Picard-plugins/blob/master/SearchAMG.py +Source10: https://github.com/brianfreud/Picard-plugins/blob/master/SearchCastAlbums3.py +Source11: https://github.com/brianfreud/Picard-plugins/blob/master/SearchDiscogs3.py +Source12: https://github.com/brianfreud/Picard-plugins/blob/master/SearchFilmMusziek3.py +Source13: https://github.com/brianfreud/Picard-plugins/blob/master/SearchGMR.py +Source14: https://github.com/brianfreud/Picard-plugins/blob/master/SearchGoogle3.py +Source15: https://github.com/brianfreud/Picard-plugins/blob/master/SearchLortelArchives3.py +Source16: https://github.com/brianfreud/Picard-plugins/blob/master/SearchSoundtrackCollector3.py +Source17: https://github.com/brianfreud/Picard-plugins/blob/master/SearchSoundtrackINFO3.py BuildRequires: desktop-file-utils BuildRequires: gcc-c++ BuildRequires: libofa-devel @@ -58,7 +68,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 @@ -102,6 +122,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) From b5deacf2743dae768d5375d5d98629c47628c4d256202d87319dd7125e71ef7f Mon Sep 17 00:00:00 2001 From: Olaf Hering Date: Fri, 17 Feb 2017 10:17:01 +0000 Subject: [PATCH 2/3] - Drop bonusdisc.py, URL disappeared OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/picard?expand=0&rev=48 --- bonusdisc.py | 30 ------------------------------ picard.changes | 5 +++++ picard.spec | 2 -- 3 files changed, 5 insertions(+), 32 deletions(-) delete mode 100644 bonusdisc.py diff --git a/bonusdisc.py b/bonusdisc.py deleted file mode 100644 index 4968c82..0000000 --- a/bonusdisc.py +++ /dev/null @@ -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.
-
-Moves bonus disc and bonus disc titles from album titles to separate tags. For example:
-"Sleeping With Ghosts (bonus disc: Covers)" -
    -
  • album = "Sleeping With Ghosts"
  • -
  • bonusdisc = "bonus"
  • -
  • bonusdisctitle = "Covers"
  • -
''' -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) diff --git a/picard.changes b/picard.changes index 2f41410..1b128cb 100644 --- a/picard.changes +++ b/picard.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +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 diff --git a/picard.spec b/picard.spec index db52bbe..c0b93a2 100644 --- a/picard.spec +++ b/picard.spec @@ -35,7 +35,6 @@ 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: https://github.com/brianfreud/Picard-plugins/blob/master/SearchAmazon3.py Source9: https://github.com/brianfreud/Picard-plugins/blob/master/SearchAMG.py Source10: https://github.com/brianfreud/Picard-plugins/blob/master/SearchCastAlbums3.py @@ -89,7 +88,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} From 51e778a294ad843bb89725adb7e7489901220d5b006651843543b058de108e1d Mon Sep 17 00:00:00 2001 From: Olaf Hering Date: Fri, 17 Feb 2017 10:23:29 +0000 Subject: [PATCH 3/3] Remove URL to https://raw.githubusercontent.com/brianfreud/Picard-plugins/master/ because osc service lr download_files would download the DOS version. OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/picard?expand=0&rev=49 --- picard.spec | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/picard.spec b/picard.spec index c0b93a2..723c6ff 100644 --- a/picard.spec +++ b/picard.spec @@ -35,16 +35,19 @@ 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 -Source8: https://github.com/brianfreud/Picard-plugins/blob/master/SearchAmazon3.py -Source9: https://github.com/brianfreud/Picard-plugins/blob/master/SearchAMG.py -Source10: https://github.com/brianfreud/Picard-plugins/blob/master/SearchCastAlbums3.py -Source11: https://github.com/brianfreud/Picard-plugins/blob/master/SearchDiscogs3.py -Source12: https://github.com/brianfreud/Picard-plugins/blob/master/SearchFilmMusziek3.py -Source13: https://github.com/brianfreud/Picard-plugins/blob/master/SearchGMR.py -Source14: https://github.com/brianfreud/Picard-plugins/blob/master/SearchGoogle3.py -Source15: https://github.com/brianfreud/Picard-plugins/blob/master/SearchLortelArchives3.py -Source16: https://github.com/brianfreud/Picard-plugins/blob/master/SearchSoundtrackCollector3.py -Source17: https://github.com/brianfreud/Picard-plugins/blob/master/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