Hello community, here is the log from the commit of package picard for openSUSE:Factory checked in at 2020-10-29 14:52:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/picard (Old) and /work/SRC/openSUSE:Factory/.picard.new.3463 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "picard" Thu Oct 29 14:52:12 2020 rev:46 rq:844809 version:2.5.1 Changes: -------- --- /work/SRC/openSUSE:Factory/picard/picard.changes 2020-10-27 19:01:31.758856061 +0100 +++ /work/SRC/openSUSE:Factory/.picard.new.3463/picard.changes 2020-10-29 14:52:14.985240175 +0100 @@ -1,0 +2,20 @@ +Thu Oct 29 07:47:43 UTC 2020 - Michael Vetter <[email protected]> + +- Update to 2.5.1: + Bugfixes: + * PICARD-1987 - Special variables %_multiartist%, %_pregap%, + %_datatrack% and %_totalalbumtracks% missing after files + got matched to a track + * PICARD-1988 - Aborts if directory scan finds a directory which + cannot be read + * PICARD-1989 - Auto-sizing does not work right on first column + * PICARD-1990 - Case-only changes to file names are not applied + on Windows if running with Python >= 3.8 + Improvements: + * PICARD-1985 - Support chorus master recording relationships + as "performer:chorus master" instead of second conductor + * PICARD-1995 - Add command line parameter --no-player to + disable media player + * PICARD-1997 - Reduce performance impact of fingerprinting column + +------------------------------------------------------------------- Old: ---- picard-2.5.tar.gz New: ---- picard-2.5.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ picard.spec ++++++ --- /var/tmp/diff_new_pack.L6v3mo/_old 2020-10-29 14:52:15.845241027 +0100 +++ /var/tmp/diff_new_pack.L6v3mo/_new 2020-10-29 14:52:15.849241031 +0100 @@ -17,7 +17,7 @@ Name: picard -Version: 2.5 +Version: 2.5.1 Release: 0 Summary: The Next Generation MusicBrainz Tagger License: GPL-2.0-or-later ++++++ picard-2.5.tar.gz -> picard-2.5.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/.github/workflows/package.yml new/picard-release-2.5.1/.github/workflows/package.yml --- old/picard-release-2.5/.github/workflows/package.yml 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/.github/workflows/package.yml 2020-10-28 20:32:00.000000000 +0100 @@ -61,16 +61,28 @@ - name: Run tests run: | python3 setup.py test + - name: Prepare code signing certificate + run: | + if [ -n "$CODESIGN_MACOS_PFX_URL" ] && [ -n "$AWS_ACCESS_KEY_ID" ]; then + pip3 install awscli + aws s3 cp "$CODESIGN_MACOS_PFX_URL" ./scripts/package/appledev.p12 + else + echo "::warning::No code signing certificate available, skipping code signing." + fi + env: + AWS_DEFAULT_REGION: eu-central-1 + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + CODESIGN_MACOS_PFX_URL: ${{ secrets.CODESIGN_MACOS_PFX_URL }} - name: Build macOS app run: | ./scripts/package/macos-package-app.sh + rm ./scripts/package/appledev.p12 mv dist/*.dmg artifacts/ env: - APPLE_ID_USER: ${{ secrets. APPLE_ID_USER }} - APPLE_ID_PASSWORD: ${{ secrets. APPLE_ID_PASSWORD }} - encrypted_be5fb2212036_key: ${{ secrets.CODESIGN_MACOS_ENCRYPTED_KEY }} - encrypted_be5fb2212036_iv: ${{ secrets.CODESIGN_MACOS_ENCRYPTED_IV }} - appledev_p12_password: ${{ secrets.CODESIGN_MACOS_P12_PASSWORD }} + APPLE_ID_USER: ${{ secrets.APPLE_ID_USER }} + APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} + CODESIGN_MACOS_P12_PASSWORD: ${{ secrets.CODESIGN_MACOS_P12_PASSWORD }} - name: Archive production artifacts uses: actions/upload-artifact@v1 with: @@ -169,6 +181,7 @@ $CertPassword = ConvertTo-SecureString -String $Env:CODESIGN_PFX_PASSWORD -Force -AsPlainText $Certificate = Get-PfxCertificate -FilePath .\codesign.pfx -Password $CertPassword & .\scripts\package\win-package-portable.ps1 -BuildNumber $Env:BUILD_NUMBER -Certificate $Certificate + Remove-Item .\codesign.pfx } Else { & .\scripts\package\win-package-portable.ps1 -BuildNumber $Env:BUILD_NUMBER } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/.github/workflows/pypi-release.yml new/picard-release-2.5.1/.github/workflows/pypi-release.yml --- old/picard-release-2.5/.github/workflows/pypi-release.yml 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/.github/workflows/pypi-release.yml 2020-10-28 20:32:00.000000000 +0100 @@ -24,10 +24,37 @@ - name: Build Python source distribution run: | python setup.py clean sdist + - name: Prepare GPG signing key + run: | + if [ -n "$CODESIGN_PGP_URL" ] && [ -n "$AWS_ACCESS_KEY_ID" ]; then + pip3 install awscli + aws s3 cp "$CODESIGN_PGP_URL" signkey.asc.enc + openssl enc -d -aes-256-cbc -pbkdf2 -iter 100000 -in signkey.asc.enc -out signkey.asc -k "$CODESIGN_PGP_PASSWORD" + gpg --import signkey.asc + rm signkey.asc* + echo "CODESIGN=1" >> $GITHUB_ENV + else + echo "::warning::No signing key available, skipping code signing." + fi + env: + AWS_DEFAULT_REGION: eu-central-1 + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + CODESIGN_PGP_URL: ${{ secrets.CODESIGN_PGP_URL }} + CODESIGN_PGP_PASSWORD: ${{ secrets.CODESIGN_PGP_PASSWORD }} - name: Publish Python distribution to PyPI run: | pip install --upgrade twine - twine upload --non-interactive dist/* + if [ "$CODESIGN" = '1' ]; then + twine upload --non-interactive --sign --identity "$SIGN_IDENTITY" dist/* + else + twine upload --non-interactive dist/* + fi env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_TOKEN }} + SIGN_IDENTITY: [email protected] + - name: Cleanup + if: env.CODESIGN + run: | + rm -rf "$HOME/.gnupg diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/NEWS.md new/picard-release-2.5.1/NEWS.md --- old/picard-release-2.5/NEWS.md 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/NEWS.md 2020-10-28 20:32:00.000000000 +0100 @@ -1,3 +1,17 @@ +# Version 2.5.1 - 2020-10-28 + +## Bugfixes +- [PICARD-1987](https://tickets.metabrainz.org/browse/PICARD-1987) - Special variables `%_multiartist%`, `%_pregap%`, `%_datatrack%` and `%_totalalbumtracks%` missing after files got matched to a track +- [PICARD-1988](https://tickets.metabrainz.org/browse/PICARD-1988) - Aborts if directory scan finds a directory which cannot be read +- [PICARD-1989](https://tickets.metabrainz.org/browse/PICARD-1989) - Auto-sizing does not work right on first column +- [PICARD-1990](https://tickets.metabrainz.org/browse/PICARD-1990) - Case-only changes to file names are not applied on Windows if running with Python >= 3.8 + +## Improvements +- [PICARD-1985](https://tickets.metabrainz.org/browse/PICARD-1985) - Support chorus master recording relationships as "performer:chorus master" instead of second conductor +- [PICARD-1995](https://tickets.metabrainz.org/browse/PICARD-1995) - Add command line parameter `--no-player` to disable media player +- [PICARD-1997](https://tickets.metabrainz.org/browse/PICARD-1997) - Reduce performance impact of fingerprinting column + + # Version 2.5 - 2020-10-22 ## Bugfixes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/picard/__init__.py new/picard-release-2.5.1/picard/__init__.py --- old/picard-release-2.5/picard/__init__.py 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/picard/__init__.py 2020-10-28 20:32:00.000000000 +0100 @@ -41,7 +41,7 @@ PICARD_DISPLAY_NAME = "MusicBrainz Picard" PICARD_APP_ID = "org.musicbrainz.Picard" PICARD_DESKTOP_NAME = PICARD_APP_ID + ".desktop" -PICARD_VERSION = Version(2, 5, 0, 'final', 0) +PICARD_VERSION = Version(2, 5, 1, 'final', 0) # optional build version diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/picard/album.py new/picard-release-2.5.1/picard/album.py --- old/picard-release-2.5/picard/album.py 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/picard/album.py 2020-10-28 20:32:00.000000000 +0100 @@ -319,7 +319,6 @@ mm = Metadata() mm.copy(self._new_metadata) medium_to_metadata(medium_node, mm) - discpregap = False format = medium_node.get('format') if format: all_media.append(format) @@ -327,29 +326,43 @@ for dj in djmix_ars.get(mm["discnumber"], []): mm.add("djmixer", dj) + if va: + mm["compilation"] = "1" + else: + del mm["compilation"] + if 'discs' in medium_node: discids = [disc.get('id') for disc in medium_node['discs']] mm['~musicbrainz_discids'] = discids mm['musicbrainz_discid'] = list(self._discids.intersection(discids)) if "pregap" in medium_node: - discpregap = True absolutetracknumber += 1 - track = self._finalize_loading_track(medium_node['pregap'], mm, artists, va, absolutetracknumber, discpregap) - track.metadata['~pregap'] = "1" + mm['~discpregap'] = '1' + extra_metadata = { + '~pregap': '1', + '~absolutetracknumber': absolutetracknumber, + } + self._finalize_loading_track(medium_node['pregap'], mm, artists, extra_metadata) track_count = medium_node['track-count'] if track_count: tracklist_node = medium_node['tracks'] for track_node in tracklist_node: absolutetracknumber += 1 - track = self._finalize_loading_track(track_node, mm, artists, va, absolutetracknumber, discpregap) + extra_metadata = { + '~absolutetracknumber': absolutetracknumber, + } + self._finalize_loading_track(track_node, mm, artists, extra_metadata) if "data-tracks" in medium_node: for track_node in medium_node['data-tracks']: absolutetracknumber += 1 - track = self._finalize_loading_track(track_node, mm, artists, va, absolutetracknumber, discpregap) - track.metadata['~datatrack'] = "1" + extra_metadata = { + '~datatrack': '1', + '~absolutetracknumber': absolutetracknumber, + } + self._finalize_loading_track(track_node, mm, artists, extra_metadata) totalalbumtracks = absolutetracknumber self._new_metadata['~totalalbumtracks'] = totalalbumtracks @@ -358,8 +371,10 @@ for track in self._new_tracks: track.metadata["~totalalbumtracks"] = totalalbumtracks + track.orig_metadata["~totalalbumtracks"] = totalalbumtracks if len(artists) > 1: track.metadata["~multiartist"] = "1" + track.orig_metadata["~multiartist"] = "1" del self._release_node del self._release_artist_nodes self._tracks_loaded = True @@ -413,7 +428,7 @@ if self.item.isSelected(): self.tagger.window.refresh_metadatabox() - def _finalize_loading_track(self, track_node, metadata, artists, va, absolutetracknumber, discpregap): + def _finalize_loading_track(self, track_node, metadata, artists, extra_metadata=None): # As noted in `_parse_release` above, the release artist nodes # may contain supplementary data that isn't present in track # artist nodes. Similarly, the track artists may contain @@ -430,17 +445,12 @@ tm = track.metadata tm.copy(metadata) track_to_metadata(track_node, track) - tm["~absolutetracknumber"] = absolutetracknumber track._customize_metadata() self._new_metadata.length += tm.length artists.add(tm["artist"]) - if va: - tm["compilation"] = "1" - else: - del tm["compilation"] - if discpregap: - tm["~discpregap"] = "1" + if extra_metadata: + tm.update(extra_metadata) # Run track metadata plugins try: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/picard/file.py new/picard-release-2.5.1/picard/file.py --- old/picard-release-2.5/picard/file.py 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/picard/file.py 2020-10-28 20:32:00.000000000 +0100 @@ -461,17 +461,18 @@ new_dirname = os.path.normpath(os.path.join(os.path.dirname(filename), new_dirname)) else: new_dirname = os.path.dirname(filename) + try: + new_dirname = os.path.realpath(new_dirname) + except FileNotFoundError: + # os.path.realpath can fail if cwd does not exist and path is relative + pass new_filename = os.path.basename(filename) if settings["rename_files"] or settings["move_files"]: new_filename = self._format_filename(new_dirname, new_filename, metadata, settings) new_path = os.path.join(new_dirname, new_filename) - try: - return os.path.realpath(new_path) - except FileNotFoundError: - # os.path.realpath can fail if cwd doesn't exist - return new_path + return new_path def _rename(self, old_filename, metadata): new_filename, ext = os.path.splitext( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/picard/mbjson.py new/picard-release-2.5.1/picard/mbjson.py --- old/picard-release-2.5/picard/mbjson.py 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/picard/mbjson.py 2020-10-28 20:32:00.000000000 +0100 @@ -36,7 +36,7 @@ _artist_rel_types = { "arranger": "arranger", "audio": "engineer", - "chorus master": "conductor", + "chorus master": "performer:chorus master", "composer": "composer", "concertmaster": "performer:concertmaster", "conductor": "conductor", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/picard/tagger.py new/picard-release-2.5.1/picard/tagger.py --- old/picard-release-2.5/picard/tagger.py 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/picard/tagger.py 2020-10-28 20:32:00.000000000 +0100 @@ -277,7 +277,7 @@ self.mbid_redirects = {} self.unclustered_files = UnclusteredFiles() self.nats = None - self.window = MainWindow() + self.window = MainWindow(disable_player=picard_args.no_player) self.exit_cleanup = [] self.stopping = False @@ -563,8 +563,8 @@ yield entry.path else: yield current_path - except FileNotFoundError: - pass + except OSError as err: + log.warning(err) def add_paths(self, paths, target=None): files = self._scan_paths_recursive(paths, @@ -920,6 +920,8 @@ help="location of the configuration file") parser.add_argument("-d", "--debug", action='store_true', help="enable debug-level logging") + parser.add_argument("-M", "--no-player", action='store_true', + help="disable built-in media player") parser.add_argument("-N", "--no-restore", action='store_true', help="do not restore positions and/or sizes") parser.add_argument("-P", "--no-plugins", action='store_true', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/picard/ui/itemviews.py new/picard-release-2.5.1/picard/ui/itemviews.py --- old/picard-release-2.5/picard/ui/itemviews.py 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/picard/ui/itemviews.py 2020-10-28 20:32:00.000000000 +0100 @@ -323,31 +323,12 @@ if not icon: return size = COLUMN_ICON_SIZE - padding_h = (rect.width() - size) / 2 + padding_h = COLUMN_ICON_BORDER padding_v = (rect.height() - size) / 2 target_rect = QtCore.QRect(rect.x() + padding_h, rect.y() + padding_v, size, size) painter.drawPixmap(target_rect, icon.pixmap(size, size)) -class FingerprintColumnWidget(QtWidgets.QWidget): - def __init__(self, file, parent=None): - super().__init__(parent=parent) - self._file = file - - def paintEvent(self, event=None): - painter = QtGui.QPainter(self) - paint_fingerprint_icon(painter, self.rect(), self.decide_icon()) - - def decide_icon(self): - if getattr(self._file, 'acoustid_fingerprint', None): - if self.tagger.acoustidmanager.is_submitted(self._file): - return FileItem.icon_fingerprint_gray - else: - return FileItem.icon_fingerprint - else: - return None - - class ConfigurableColumnsHeader(TristateSortHeaderView): def __init__(self, parent=None): @@ -378,7 +359,7 @@ self._visible_columns.add(column) if column == MainPanel.FINGERPRINT_COLUMN: self.setSectionResizeMode(column, QtWidgets.QHeaderView.Fixed) - self.parent().resizeColumnToContents(column) + self.resizeSection(column, COLUMN_ICON_SIZE) else: self.setSectionResizeMode(column, QtWidgets.QHeaderView.Interactive) elif column in self._visible_columns: @@ -897,7 +878,7 @@ MainPanel.DISCNUMBER_COLUMN, ]: self.setTextAlignment(column, QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) - self.setSizeHint(MainPanel.TITLE_COLUMN, ICON_SIZE) + self.setSizeHint(MainPanel.FINGERPRINT_COLUMN, ICON_SIZE) def setText(self, column, text): self._sortkeys[column] = None @@ -1036,7 +1017,6 @@ def update(self, update_album=True, update_files=True): track = self.obj - tree_widget = self.treeWidget() if track.num_linked_files == 1: file = track.linked_files[0] file.item = self @@ -1046,16 +1026,13 @@ self.setToolTip(MainPanel.TITLE_COLUMN, _(FileItem.decide_file_icon_info(file))) self.takeChildren() self.setExpanded(False) - self.setToolTip(MainPanel.FINGERPRINT_COLUMN, FileItem.decide_fingerprint_icon_info(file)) - if tree_widget: - if not tree_widget.itemWidget(self, MainPanel.FINGERPRINT_COLUMN): - tree_widget.setItemWidget(self, MainPanel.FINGERPRINT_COLUMN, - FingerprintColumnWidget(file=file)) + fingerprint_icon, fingerprint_tooltip = FileItem.decide_fingerprint_icon_info(file) + self.setToolTip(MainPanel.FINGERPRINT_COLUMN, fingerprint_tooltip) + self.setIcon(MainPanel.FINGERPRINT_COLUMN, fingerprint_icon) else: self.setToolTip(MainPanel.TITLE_COLUMN, "") self.setToolTip(MainPanel.FINGERPRINT_COLUMN, "") - if tree_widget: - tree_widget.setItemWidget(self, MainPanel.FINGERPRINT_COLUMN, None) + self.setIcon(MainPanel.FINGERPRINT_COLUMN, QtGui.QIcon()) if track.ignored_for_completeness(): color = TreeItem.text_color_secondary else: @@ -1108,18 +1085,15 @@ def update(self, update_track=True): file = self.obj self.setIcon(MainPanel.TITLE_COLUMN, FileItem.decide_file_icon(file)) - self.setToolTip(MainPanel.FINGERPRINT_COLUMN, self.decide_fingerprint_icon_info(file)) + fingerprint_icon, fingerprint_tooltip = FileItem.decide_fingerprint_icon_info(file) + self.setToolTip(MainPanel.FINGERPRINT_COLUMN, fingerprint_tooltip) + self.setIcon(MainPanel.FINGERPRINT_COLUMN, fingerprint_icon) color = FileItem.file_colors[file.state] bgcolor = get_match_color(file.similarity, TreeItem.base_color) for i, column in enumerate(MainPanel.columns): self.setText(i, file.column(column[1])) self.setForeground(i, color) self.setBackground(i, bgcolor) - tree_widget = self.treeWidget() - if tree_widget: - if not tree_widget.itemWidget(self, MainPanel.FINGERPRINT_COLUMN): - tree_widget.setItemWidget(self, MainPanel.FINGERPRINT_COLUMN, - FingerprintColumnWidget(file=file)) if self.isSelected(): TreeItem.window.update_selection(new_selection=False) parent = self.parent() @@ -1157,10 +1131,14 @@ @staticmethod def decide_fingerprint_icon_info(file): - if file.acoustid_fingerprint: + if getattr(file, 'acoustid_fingerprint', None): if QtCore.QObject.tagger.acoustidmanager.is_submitted(file): - return _('Fingerprint has already been submitted') + icon = FileItem.icon_fingerprint_gray + tooltip = _('Fingerprint has already been submitted') else: - return _('Unsubmitted fingerprint') + icon = FileItem.icon_fingerprint + tooltip = _('Unsubmitted fingerprint') else: - return _('No fingerprint was calculated for this file, use "Scan" or "Generate AcoustID Fingerprints" to calculate the fingerprint.') + icon = QtGui.QIcon() + tooltip = _('No fingerprint was calculated for this file, use "Scan" or "Generate AcoustID Fingerprints" to calculate the fingerprint.') + return (icon, tooltip) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/picard/ui/mainwindow.py new/picard-release-2.5.1/picard/ui/mainwindow.py --- old/picard-release-2.5/picard/ui/mainwindow.py 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/picard/ui/mainwindow.py 2020-10-28 20:32:00.000000000 +0100 @@ -102,7 +102,6 @@ PasswordDialog, ProxyDialog, ) -from picard.ui.playertoolbar import Player from picard.ui.searchdialog.album import AlbumSearchDialog from picard.ui.searchdialog.track import TrackSearchDialog from picard.ui.statusindicator import DesktopStatusIndicator @@ -138,17 +137,19 @@ config.IntOption("persist", "mediaplayer_volume", 50), ] - def __init__(self, parent=None): + def __init__(self, parent=None, disable_player=False): super().__init__(parent) self.selected_objects = [] self.ignore_selection_changes = False self.toolbar = None self.player = None self.status_indicators = [] - player = Player(self) - if player.available: - self.player = player - self.player.error.connect(self._on_player_error) + if not disable_player: + from picard.ui.playertoolbar import Player + player = Player(self) + if player.available: + self.player = player + self.player.error.connect(self._on_player_error) self.setupUi() def setupUi(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/po/attributes/he.po new/picard-release-2.5.1/po/attributes/he.po --- old/picard-release-2.5/po/attributes/he.po 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/po/attributes/he.po 2020-10-28 20:32:00.000000000 +0100 @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: MusicBrainz\n" -"PO-Revision-Date: 2020-10-19 14:01+0000\n" -"Last-Translator: yvanz\n" +"PO-Revision-Date: 2020-10-25 12:41+0000\n" +"Last-Translator: Avi Markovitz <[email protected]>\n" "Language-Team: Hebrew (http://www.transifex.com/musicbrainz/musicbrainz/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1719,7 +1719,7 @@ #: DB:release_group_secondary_type/name:8 msgctxt "release_group_secondary_type" msgid "DJ-mix" -msgstr "די.ג'י מיקס" +msgstr "תמהיל-די.ג'י" #: DB:medium_format/name:44 msgctxt "medium_format" @@ -1734,7 +1734,7 @@ #: DB:medium_format/name:18 msgctxt "medium_format" msgid "DVD-Audio" -msgstr "אידיו-DVD" +msgstr "DVD-שמע" #: DB:medium_format/name:19 msgctxt "medium_format" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/po/attributes/it.po new/picard-release-2.5.1/po/attributes/it.po --- old/picard-release-2.5/po/attributes/it.po 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/po/attributes/it.po 2020-10-28 20:32:00.000000000 +0100 @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: MusicBrainz\n" -"PO-Revision-Date: 2020-10-19 14:01+0000\n" -"Last-Translator: yvanz\n" +"PO-Revision-Date: 2020-10-22 21:49+0000\n" +"Last-Translator: Luca Salini <[email protected]>\n" "Language-Team: Italian (http://www.transifex.com/musicbrainz/musicbrainz/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -3060,7 +3060,7 @@ #: DB:medium_format/name:87 msgctxt "medium_format" msgid "Hybrid SACD (SACD layer, 2 channels)" -msgstr "" +msgstr "SACD ibrido (strato SACD, 2 canali)" #: DB:medium_format/name:86 msgctxt "medium_format" @@ -5727,7 +5727,7 @@ #: DB:medium_format/name:84 msgctxt "medium_format" msgid "SACD (2 channels)" -msgstr "" +msgstr "SACD (2 canali)" #: DB:medium_format/name:85 msgctxt "medium_format" @@ -5792,7 +5792,7 @@ #: DB:medium_format/name:89 msgctxt "medium_format" msgid "SHM-SACD (2 channels)" -msgstr "" +msgstr "SHM-SACD (2 canali)" #: DB:medium_format/name:88 msgctxt "medium_format" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/po/he.po new/picard-release-2.5.1/po/he.po --- old/picard-release-2.5/po/he.po 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/po/he.po 2020-10-28 20:32:00.000000000 +0100 @@ -15,7 +15,7 @@ "Project-Id-Version: MusicBrainz\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2020-10-18 16:07+0200\n" -"PO-Revision-Date: 2020-10-19 07:41+0000\n" +"PO-Revision-Date: 2020-10-27 16:29+0000\n" "Last-Translator: Avi Markovitz <[email protected]>\n" "Language-Team: Hebrew (http://www.transifex.com/musicbrainz/musicbrainz/language/he/)\n" "MIME-Version: 1.0\n" @@ -304,11 +304,11 @@ #: picard/acoustid/manager.py:101 msgid "" "AcoustID submission finished, but not all fingerprints have been submitted" -msgstr "הַגָּשָׁת AcoustID הסתיימה, אך לא כל טביעות האצבע נקלטו" +msgstr "שגור AcoustID הסתיים, אך לא כל טביעות האצבע נקלטו" #: picard/acoustid/manager.py:103 msgid "AcoustID submission finished successfully" -msgstr "הַגָּשָׁת AcoustID צלחה" +msgstr "שגור AcoustID צלח" #: picard/acoustid/manager.py:115 msgid "Submitting AcoustIDs ..." @@ -2981,7 +2981,7 @@ " is operated by the MetaBrainz Foundation with the help of thousands of " "volunteers. If you like this application please consider donating to the " "MetaBrainz Foundation to keep the service running." -msgstr "מודים לכם על השימוש ב פיקארד. פיקארד מתבסס על מסד הנתונים של מיוזיקבריינז, המופעל על ידי קרן מטהבריינז בעזרתם של אלפי מתנדבים. אם אתם אוהבים את היישום הזה, שקולו בבקשה לתרום ל מטהבריינז על מנת להבטיח המשכיות השירות." +msgstr "מודים לכם על השימוש בפיקארד. פיקארד מתבסס על מסד הנתונים של מיוזיקבריינז, המופעל על ידי קרן מטהבריינז בעזרתם של אלפי מתנדבים. אם אתם אוהבים את היישום הזה, שקולו בבקשה לתרום למטהבריינז על מנת להבטיח את המשכיות השירות." #: picard/ui/aboutdialog.py:109 msgid "Donate now!" @@ -3560,7 +3560,7 @@ #: picard/ui/mainwindow.py:406 msgid "AcoustID submission not configured" -msgstr "לא הוגדרו הגשות AcoustID " +msgstr "שגור AcoustID לא תוצר" #: picard/ui/mainwindow.py:407 msgid "" @@ -3871,7 +3871,7 @@ #: picard/ui/mainwindow.py:636 msgid "&Check for Update…" -msgstr "&בדיקת עדכון..." +msgstr "&בדיקת זמינות עדכונים..." #: picard/ui/mainwindow.py:696 msgid "&File" @@ -3965,7 +3965,7 @@ msgid "" "Picard needs authorization to access your personal data on the MusicBrainz " "server. Would you like to log in now?" -msgstr "ל פיקארד נדרשת הרשאה לגשת לנתונים האישיים שלך בשרת מוזיקבריינז. האם ברצונך להיכנס כעת?" +msgstr "לפיקארד נדרשת הרשאת גישה לנתונים האישיים שלכם בשרת מוזיקבריינז. האם להתחבר כעת?" #: picard/ui/metadatabox.py:102 #, python-format @@ -4359,7 +4359,7 @@ #: picard/ui/ui_options_general.py:137 msgid "Log out" -msgstr "התנתק מהמערכת" +msgstr "התנתקות מהמערכת" #: picard/ui/options/general.py:49 picard/ui/ui_options_general.py:138 msgid "General" @@ -4375,11 +4375,11 @@ #: picard/ui/ui_options_general.py:141 msgid "Update Checking" -msgstr "בדיקת עדכון" +msgstr "בדיקת זמינות עדכונים" #: picard/ui/ui_options_general.py:142 msgid "Check for updates during start-up" -msgstr "בדיקת עדכון בעת האתחול" +msgstr "בדיקת עדכונים בעת האתחול" #: picard/ui/ui_options_general.py:143 msgid "Days between checks:" @@ -4647,7 +4647,7 @@ "user who did the rating. That way different ratings for different users can " "be stored in the files. Please specify the e-mail you want to use to save " "your ratings." -msgstr "פיקארד שומר את הדרוג בצרוף כתובת דוא\"ל המשמש לזיהוי המשתמש שביצע את הדרוג. בדרך זו, נשמרים בקבצים, דרוגים שונים עבור משתמשים שונים. נא ספק כתובת דוא\"ל לשמירת הדרוגים שלך." +msgstr "פיקארד שומר את הדרוג בצרוף כתובת דוא\"ל המשמש, לזיהוי המשתמש שביצע את הדרוג. בדרך זו, נשמרים דרוגים שונים עבור משתמשים שונים בקבצים. נא לספק כתובת דוא\"ל לשמירת הדרוגים שלכם." #: picard/ui/ui_options_ratings.py:47 msgid "E-mail:" @@ -4655,7 +4655,7 @@ #: picard/ui/ui_options_ratings.py:48 msgid "Submit ratings to MusicBrainz" -msgstr "שגור דרוג ל מוזיקבריינז" +msgstr "שגור דרוג למוזיקבריינז" #: picard/ui/ui_options_releases.py:110 msgid "Preferred release types" @@ -5082,7 +5082,7 @@ #: picard/ui/options/general.py:110 #, python-format msgid "Logged in as <b>%s</b>." -msgstr "מחובר כ <b>%s</b>." +msgstr "התחברות בשם <b>%s</b>." #: picard/ui/options/genres.py:41 msgid "" @@ -5585,7 +5585,7 @@ "There is no update currently available for your subscribed update level: {update_level}\n" "\n" "Your version: {picard_old_version}\n" -msgstr "לא נמצאו עדכונים זמינים לרמת מנוי העדכונים שלך: {update_level}\n\nהגרסה שלך: {picard_old_version}\n" +msgstr "לא נמצאו עדכונים זמינים לרמת מנוי העדכונים שכם: {update_level}\n\nהגרסה שלכם: {picard_old_version}\n" #: picard/util/tags.py:34 msgid "AcoustID Fingerprint" @@ -5817,7 +5817,7 @@ #: picard/util/tags.py:103 msgid "Remixer" -msgstr "רמיקסר" +msgstr "עריכה מחדש" #: picard/util/tags.py:104 msgid "ReplayGain Album Gain" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/po/it.po new/picard-release-2.5.1/po/it.po --- old/picard-release-2.5/po/it.po 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/po/it.po 2020-10-28 20:32:00.000000000 +0100 @@ -14,8 +14,8 @@ "Project-Id-Version: MusicBrainz\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2020-10-18 16:07+0200\n" -"PO-Revision-Date: 2020-10-20 15:03+0000\n" -"Last-Translator: Philipp Wolfer <[email protected]>\n" +"PO-Revision-Date: 2020-10-22 21:48+0000\n" +"Last-Translator: Luca Salini <[email protected]>\n" "Language-Team: Italian (http://www.transifex.com/musicbrainz/musicbrainz/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -3808,11 +3808,11 @@ #: picard/ui/mainwindow.py:601 picard/ui/options/interface.py:126 msgid "Parse File Names..." -msgstr "" +msgstr "Analizza nomi file..." #: picard/ui/mainwindow.py:602 msgid "Set tags based on the file names" -msgstr "" +msgstr "Imposta tag in base al nome dei file" #: picard/ui/mainwindow.py:603 msgid "Ctrl+Shift+T" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/requirements.txt new/picard-release-2.5.1/requirements.txt --- old/picard-release-2.5/requirements.txt 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/requirements.txt 2020-10-28 20:32:00.000000000 +0100 @@ -2,4 +2,6 @@ discid markdown mutagen>=1.37 +pyobjc-core; sys_platform == 'darwin' +pyobjc-framework-Cocoa; sys_platform == 'darwin' PyQt5>=5.7.1 Binary files old/picard-release-2.5/scripts/package/appledev.p12.enc and new/picard-release-2.5.1/scripts/package/appledev.p12.enc differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/picard-release-2.5/scripts/package/macos-package-app.sh new/picard-release-2.5.1/scripts/package/macos-package-app.sh --- old/picard-release-2.5/scripts/package/macos-package-app.sh 2020-10-22 16:00:04.000000000 +0200 +++ new/picard-release-2.5.1/scripts/package/macos-package-app.sh 2020-10-28 20:32:00.000000000 +0100 @@ -21,21 +21,17 @@ CODESIGN=0 NOTARIZE=0 KEYCHAIN_PATH=picard.keychain -KEYCHAIN_PASSWORD=picard -CERTIFICATE_NAME="Developer ID Application: MetaBrainz Foundation Inc." +KEYCHAIN_PASSWORD=$(openssl rand -base64 32) +CERTIFICATE_NAME="MetaBrainz Foundation Inc." CERTIFICATE_FILE=scripts/package/appledev.p12 -if [ -n "$encrypted_be5fb2212036_key" ] && [ -n "$encrypted_be5fb2212036_iv" ]; then - openssl aes-256-cbc -K "$encrypted_be5fb2212036_key" -iv "$encrypted_be5fb2212036_iv" -in scripts/package/appledev.p12.enc -out $CERTIFICATE_FILE -d -fi - -if [ -f scripts/package/appledev.p12 ] && [ -n "$appledev_p12_password" ]; then +if [ -f $CERTIFICATE_FILE ] && [ -n "$CODESIGN_MACOS_P12_PASSWORD" ]; then security create-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH security unlock-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_PATH security set-keychain-settings $KEYCHAIN_PATH # Ensure keychain stays unlocked security list-keychains -d user -s $KEYCHAIN_PATH security default-keychain -s $KEYCHAIN_PATH - security import $CERTIFICATE_FILE -k $KEYCHAIN_PATH -P "$appledev_p12_password" -T /usr/bin/codesign + security import $CERTIFICATE_FILE -k $KEYCHAIN_PATH -P "$CODESIGN_MACOS_P12_PASSWORD" -T /usr/bin/codesign # The line below is necessary when building on Sierra. # See https://stackoverflow.com/q/39868578 security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD $KEYCHAIN_PATH
