summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwiz <wiz@pkgsrc.org>2022-12-16 17:49:09 +0000
committerwiz <wiz@pkgsrc.org>2022-12-16 17:49:09 +0000
commit0a56919130c4f6999415abfb6fddf29b542c4f9f (patch)
tree9c0e5cf6732f5dd5186c0c2b9e91f23b67be269d
parent3c2ff127df8c4209a5848c33026f86a3d5728b4b (diff)
downloadpkgsrc-0a56919130c4f6999415abfb6fddf29b542c4f9f.tar.gz
audio/puddletag: import puddletag-2.0.1
puddletag is an audio tag editor (primarily created) for GNU/Linux similar to the Windows program, Mp3tag. Unlike most taggers for GNU/Linux, it uses a spreadsheet-like layout so that all the tags you want to edit by hand are visible and easily editable. The usual tag editor features are supported like extracting tag information from filenames, renaming files based on their tags by using patterns and basic tag editing. Then there're Functions, which can do things like replace text, trim it, do case conversions, etc. Actions can automate repetitive tasks. Doing web lookups using Amazon (including cover art), Discogs (does cover art too!), FreeDB and MusicBrainz is also supported.
-rw-r--r--audio/puddletag/DESCR13
-rw-r--r--audio/puddletag/Makefile32
-rw-r--r--audio/puddletag/PLIST207
-rw-r--r--audio/puddletag/distinfo6
-rw-r--r--audio/puddletag/patches/patch-puddlestuff_audio__filter.py16
5 files changed, 274 insertions, 0 deletions
diff --git a/audio/puddletag/DESCR b/audio/puddletag/DESCR
new file mode 100644
index 00000000000..db141dd1d61
--- /dev/null
+++ b/audio/puddletag/DESCR
@@ -0,0 +1,13 @@
+puddletag is an audio tag editor (primarily created) for GNU/Linux
+similar to the Windows program, Mp3tag. Unlike most taggers for
+GNU/Linux, it uses a spreadsheet-like layout so that all the tags
+you want to edit by hand are visible and easily editable.
+
+The usual tag editor features are supported like extracting tag
+information from filenames, renaming files based on their tags by
+using patterns and basic tag editing.
+
+Then there're Functions, which can do things like replace text,
+trim it, do case conversions, etc. Actions can automate repetitive
+tasks. Doing web lookups using Amazon (including cover art), Discogs
+(does cover art too!), FreeDB and MusicBrainz is also supported.
diff --git a/audio/puddletag/Makefile b/audio/puddletag/Makefile
new file mode 100644
index 00000000000..1fe8dc45c27
--- /dev/null
+++ b/audio/puddletag/Makefile
@@ -0,0 +1,32 @@
+# $NetBSD: Makefile,v 1.1 2022/12/16 17:49:09 wiz Exp $
+
+DISTNAME= puddletag-2.0.1
+CATEGORIES= audio python
+MASTER_SITES= ${MASTER_SITE_GITHUB:=puddletag/}
+GITHUB_RELEASE= ${PKGVERSION_NOREV}
+GITHUB_PROJECT= puddletag
+
+MAINTAINER= pkgsrc-users@NetBSD.org
+HOMEPAGE= http://puddletag.sourceforge.net/
+COMMENT= Simple, powerful audio tag editor
+LICENSE= gnu-gpl-v2
+
+DEPENDS+= chromaprint>=0.4:../../audio/chromaprint
+DEPENDS+= quodlibet-[0-9]*:../../audio/quodlibet
+DEPENDS+= ${PYPKGPREFIX}-configobj-[0-9]*:../../devel/py-configobj
+DEPENDS+= ${PYPKGPREFIX}-pyparsing>=1.5.1:../../devel/py-pyparsing
+DEPENDS+= ${PYPKGPREFIX}-mutagen>=1.45:../../audio/py-mutagen
+DEPENDS+= ${PYPKGPREFIX}-qt5-[0-9]*:../../x11/py-qt5
+
+USE_LANGUAGES= # none
+
+PYTHON_SELF_CONFLICT= yes
+PYTHON_VERSIONS_INCOMPATIBLE= 27 37
+
+INSTALLATION_DIRS= ${PKGMANDIR}/man1
+
+post-install:
+ ${MV} ${DESTDIR}${PREFIX}/share/man/man1/* ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1
+
+.include "../../lang/python/egg.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/audio/puddletag/PLIST b/audio/puddletag/PLIST
new file mode 100644
index 00000000000..a465cb49585
--- /dev/null
+++ b/audio/puddletag/PLIST
@@ -0,0 +1,207 @@
+@comment $NetBSD: PLIST,v 1.1 2022/12/16 17:49:09 wiz Exp $
+bin/puddletag
+${PYSITELIB}/puddlestuff/__init__.py
+${PYSITELIB}/puddlestuff/__init__.pyc
+${PYSITELIB}/puddlestuff/__init__.pyo
+${PYSITELIB}/puddlestuff/about.py
+${PYSITELIB}/puddlestuff/about.pyc
+${PYSITELIB}/puddlestuff/about.pyo
+${PYSITELIB}/puddlestuff/action_shortcuts.py
+${PYSITELIB}/puddlestuff/action_shortcuts.pyc
+${PYSITELIB}/puddlestuff/action_shortcuts.pyo
+${PYSITELIB}/puddlestuff/actiondlg.py
+${PYSITELIB}/puddlestuff/actiondlg.pyc
+${PYSITELIB}/puddlestuff/actiondlg.pyo
+${PYSITELIB}/puddlestuff/audio_filter.py
+${PYSITELIB}/puddlestuff/audio_filter.pyc
+${PYSITELIB}/puddlestuff/audio_filter.pyo
+${PYSITELIB}/puddlestuff/audioinfo/__init__.py
+${PYSITELIB}/puddlestuff/audioinfo/__init__.pyc
+${PYSITELIB}/puddlestuff/audioinfo/__init__.pyo
+${PYSITELIB}/puddlestuff/audioinfo/_compatid3.py
+${PYSITELIB}/puddlestuff/audioinfo/_compatid3.pyc
+${PYSITELIB}/puddlestuff/audioinfo/_compatid3.pyo
+${PYSITELIB}/puddlestuff/audioinfo/apev2.py
+${PYSITELIB}/puddlestuff/audioinfo/apev2.pyc
+${PYSITELIB}/puddlestuff/audioinfo/apev2.pyo
+${PYSITELIB}/puddlestuff/audioinfo/constants.py
+${PYSITELIB}/puddlestuff/audioinfo/constants.pyc
+${PYSITELIB}/puddlestuff/audioinfo/constants.pyo
+${PYSITELIB}/puddlestuff/audioinfo/id3.py
+${PYSITELIB}/puddlestuff/audioinfo/id3.pyc
+${PYSITELIB}/puddlestuff/audioinfo/id3.pyo
+${PYSITELIB}/puddlestuff/audioinfo/mp4.py
+${PYSITELIB}/puddlestuff/audioinfo/mp4.pyc
+${PYSITELIB}/puddlestuff/audioinfo/mp4.pyo
+${PYSITELIB}/puddlestuff/audioinfo/tag_versions.py
+${PYSITELIB}/puddlestuff/audioinfo/tag_versions.pyc
+${PYSITELIB}/puddlestuff/audioinfo/tag_versions.pyo
+${PYSITELIB}/puddlestuff/audioinfo/util.py
+${PYSITELIB}/puddlestuff/audioinfo/util.pyc
+${PYSITELIB}/puddlestuff/audioinfo/util.pyo
+${PYSITELIB}/puddlestuff/audioinfo/vorbis.py
+${PYSITELIB}/puddlestuff/audioinfo/vorbis.pyc
+${PYSITELIB}/puddlestuff/audioinfo/vorbis.pyo
+${PYSITELIB}/puddlestuff/confirmations.py
+${PYSITELIB}/puddlestuff/confirmations.pyc
+${PYSITELIB}/puddlestuff/confirmations.pyo
+${PYSITELIB}/puddlestuff/constants.py
+${PYSITELIB}/puddlestuff/constants.pyc
+${PYSITELIB}/puddlestuff/constants.pyo
+${PYSITELIB}/puddlestuff/findfunc.py
+${PYSITELIB}/puddlestuff/findfunc.pyc
+${PYSITELIB}/puddlestuff/findfunc.pyo
+${PYSITELIB}/puddlestuff/funcprint.py
+${PYSITELIB}/puddlestuff/funcprint.pyc
+${PYSITELIB}/puddlestuff/funcprint.pyo
+${PYSITELIB}/puddlestuff/functions.py
+${PYSITELIB}/puddlestuff/functions.pyc
+${PYSITELIB}/puddlestuff/functions.pyo
+${PYSITELIB}/puddlestuff/functions_dialogs.py
+${PYSITELIB}/puddlestuff/functions_dialogs.pyc
+${PYSITELIB}/puddlestuff/functions_dialogs.pyo
+${PYSITELIB}/puddlestuff/genres.py
+${PYSITELIB}/puddlestuff/genres.pyc
+${PYSITELIB}/puddlestuff/genres.pyo
+${PYSITELIB}/puddlestuff/helperwin.py
+${PYSITELIB}/puddlestuff/helperwin.pyc
+${PYSITELIB}/puddlestuff/helperwin.pyo
+${PYSITELIB}/puddlestuff/libraries/__init__.py
+${PYSITELIB}/puddlestuff/libraries/__init__.pyc
+${PYSITELIB}/puddlestuff/libraries/__init__.pyo
+${PYSITELIB}/puddlestuff/libraries/quodlibetlib.py
+${PYSITELIB}/puddlestuff/libraries/quodlibetlib.pyc
+${PYSITELIB}/puddlestuff/libraries/quodlibetlib.pyo
+${PYSITELIB}/puddlestuff/loadshortcuts.py
+${PYSITELIB}/puddlestuff/loadshortcuts.pyc
+${PYSITELIB}/puddlestuff/loadshortcuts.pyo
+${PYSITELIB}/puddlestuff/logger.py
+${PYSITELIB}/puddlestuff/logger.pyc
+${PYSITELIB}/puddlestuff/logger.pyo
+${PYSITELIB}/puddlestuff/m3u.py
+${PYSITELIB}/puddlestuff/m3u.pyc
+${PYSITELIB}/puddlestuff/m3u.pyo
+${PYSITELIB}/puddlestuff/mainwin/__init__.py
+${PYSITELIB}/puddlestuff/mainwin/__init__.pyc
+${PYSITELIB}/puddlestuff/mainwin/__init__.pyo
+${PYSITELIB}/puddlestuff/mainwin/action_dialogs.py
+${PYSITELIB}/puddlestuff/mainwin/action_dialogs.pyc
+${PYSITELIB}/puddlestuff/mainwin/action_dialogs.pyo
+${PYSITELIB}/puddlestuff/mainwin/artwork.py
+${PYSITELIB}/puddlestuff/mainwin/artwork.pyc
+${PYSITELIB}/puddlestuff/mainwin/artwork.pyo
+${PYSITELIB}/puddlestuff/mainwin/dirview.py
+${PYSITELIB}/puddlestuff/mainwin/dirview.pyc
+${PYSITELIB}/puddlestuff/mainwin/dirview.pyo
+${PYSITELIB}/puddlestuff/mainwin/filterwin.py
+${PYSITELIB}/puddlestuff/mainwin/filterwin.pyc
+${PYSITELIB}/puddlestuff/mainwin/filterwin.pyo
+${PYSITELIB}/puddlestuff/mainwin/funcs.py
+${PYSITELIB}/puddlestuff/mainwin/funcs.pyc
+${PYSITELIB}/puddlestuff/mainwin/funcs.pyo
+${PYSITELIB}/puddlestuff/mainwin/logdialog.py
+${PYSITELIB}/puddlestuff/mainwin/logdialog.pyc
+${PYSITELIB}/puddlestuff/mainwin/logdialog.pyo
+${PYSITELIB}/puddlestuff/mainwin/patterncombo.py
+${PYSITELIB}/puddlestuff/mainwin/patterncombo.pyc
+${PYSITELIB}/puddlestuff/mainwin/patterncombo.pyo
+${PYSITELIB}/puddlestuff/mainwin/previews.py
+${PYSITELIB}/puddlestuff/mainwin/previews.pyc
+${PYSITELIB}/puddlestuff/mainwin/previews.pyo
+${PYSITELIB}/puddlestuff/mainwin/storedtags.py
+${PYSITELIB}/puddlestuff/mainwin/storedtags.pyc
+${PYSITELIB}/puddlestuff/mainwin/storedtags.pyo
+${PYSITELIB}/puddlestuff/mainwin/tagpanel.py
+${PYSITELIB}/puddlestuff/mainwin/tagpanel.pyc
+${PYSITELIB}/puddlestuff/mainwin/tagpanel.pyo
+${PYSITELIB}/puddlestuff/mainwin/tagtools.py
+${PYSITELIB}/puddlestuff/mainwin/tagtools.pyc
+${PYSITELIB}/puddlestuff/mainwin/tagtools.pyo
+${PYSITELIB}/puddlestuff/masstag/__init__.py
+${PYSITELIB}/puddlestuff/masstag/__init__.pyc
+${PYSITELIB}/puddlestuff/masstag/__init__.pyo
+${PYSITELIB}/puddlestuff/masstag/config.py
+${PYSITELIB}/puddlestuff/masstag/config.pyc
+${PYSITELIB}/puddlestuff/masstag/config.pyo
+${PYSITELIB}/puddlestuff/masstag/dialogs.py
+${PYSITELIB}/puddlestuff/masstag/dialogs.pyc
+${PYSITELIB}/puddlestuff/masstag/dialogs.pyo
+${PYSITELIB}/puddlestuff/musiclib.py
+${PYSITELIB}/puddlestuff/musiclib.pyc
+${PYSITELIB}/puddlestuff/musiclib.pyo
+${PYSITELIB}/puddlestuff/pluginloader.py
+${PYSITELIB}/puddlestuff/pluginloader.pyc
+${PYSITELIB}/puddlestuff/pluginloader.pyo
+${PYSITELIB}/puddlestuff/plugins/__init__.py
+${PYSITELIB}/puddlestuff/plugins/__init__.pyc
+${PYSITELIB}/puddlestuff/plugins/__init__.pyo
+${PYSITELIB}/puddlestuff/puddleobjects.py
+${PYSITELIB}/puddlestuff/puddleobjects.pyc
+${PYSITELIB}/puddlestuff/puddleobjects.pyo
+${PYSITELIB}/puddlestuff/puddlesettings.py
+${PYSITELIB}/puddlestuff/puddlesettings.pyc
+${PYSITELIB}/puddlestuff/puddlesettings.pyo
+${PYSITELIB}/puddlestuff/puddletag.py
+${PYSITELIB}/puddlestuff/puddletag.pyc
+${PYSITELIB}/puddlestuff/puddletag.pyo
+${PYSITELIB}/puddlestuff/releasewidget.py
+${PYSITELIB}/puddlestuff/releasewidget.pyc
+${PYSITELIB}/puddlestuff/releasewidget.pyo
+${PYSITELIB}/puddlestuff/resource.py
+${PYSITELIB}/puddlestuff/resource.pyc
+${PYSITELIB}/puddlestuff/resource.pyo
+${PYSITELIB}/puddlestuff/shortcutsettings.py
+${PYSITELIB}/puddlestuff/shortcutsettings.pyc
+${PYSITELIB}/puddlestuff/shortcutsettings.pyo
+${PYSITELIB}/puddlestuff/tagmodel.py
+${PYSITELIB}/puddlestuff/tagmodel.pyc
+${PYSITELIB}/puddlestuff/tagmodel.pyo
+${PYSITELIB}/puddlestuff/tagsources/CDDB.py
+${PYSITELIB}/puddlestuff/tagsources/CDDB.pyc
+${PYSITELIB}/puddlestuff/tagsources/CDDB.pyo
+${PYSITELIB}/puddlestuff/tagsources/__init__.py
+${PYSITELIB}/puddlestuff/tagsources/__init__.pyc
+${PYSITELIB}/puddlestuff/tagsources/__init__.pyo
+${PYSITELIB}/puddlestuff/tagsources/_acoustid.py
+${PYSITELIB}/puddlestuff/tagsources/_acoustid.pyc
+${PYSITELIB}/puddlestuff/tagsources/_acoustid.pyo
+${PYSITELIB}/puddlestuff/tagsources/acoust_id.py
+${PYSITELIB}/puddlestuff/tagsources/acoust_id.pyc
+${PYSITELIB}/puddlestuff/tagsources/acoust_id.pyo
+${PYSITELIB}/puddlestuff/tagsources/amazon.py
+${PYSITELIB}/puddlestuff/tagsources/amazon.pyc
+${PYSITELIB}/puddlestuff/tagsources/amazon.pyo
+${PYSITELIB}/puddlestuff/tagsources/discogs.py
+${PYSITELIB}/puddlestuff/tagsources/discogs.pyc
+${PYSITELIB}/puddlestuff/tagsources/discogs.pyo
+${PYSITELIB}/puddlestuff/tagsources/freedb.py
+${PYSITELIB}/puddlestuff/tagsources/freedb.pyc
+${PYSITELIB}/puddlestuff/tagsources/freedb.pyo
+${PYSITELIB}/puddlestuff/tagsources/mp3tag/__init__.py
+${PYSITELIB}/puddlestuff/tagsources/mp3tag/__init__.pyc
+${PYSITELIB}/puddlestuff/tagsources/mp3tag/__init__.pyo
+${PYSITELIB}/puddlestuff/tagsources/mp3tag/funcs.py
+${PYSITELIB}/puddlestuff/tagsources/mp3tag/funcs.pyc
+${PYSITELIB}/puddlestuff/tagsources/mp3tag/funcs.pyo
+${PYSITELIB}/puddlestuff/tagsources/musicbrainz.py
+${PYSITELIB}/puddlestuff/tagsources/musicbrainz.pyc
+${PYSITELIB}/puddlestuff/tagsources/musicbrainz.pyo
+${PYSITELIB}/puddlestuff/tagsources/parse_html.py
+${PYSITELIB}/puddlestuff/tagsources/parse_html.pyc
+${PYSITELIB}/puddlestuff/tagsources/parse_html.pyo
+${PYSITELIB}/puddlestuff/translations.py
+${PYSITELIB}/puddlestuff/translations.pyc
+${PYSITELIB}/puddlestuff/translations.pyo
+${PYSITELIB}/puddlestuff/util.py
+${PYSITELIB}/puddlestuff/util.pyc
+${PYSITELIB}/puddlestuff/util.pyo
+${PYSITELIB}/puddlestuff/webdb.py
+${PYSITELIB}/puddlestuff/webdb.pyc
+${PYSITELIB}/puddlestuff/webdb.pyo
+${PYSITELIB}/${EGG_INFODIR}/PKG-INFO
+${PYSITELIB}/${EGG_INFODIR}/SOURCES.txt
+${PYSITELIB}/${EGG_INFODIR}/dependency_links.txt
+${PYSITELIB}/${EGG_INFODIR}/top_level.txt
+man/man1/puddletag.1
+share/applications/puddletag.desktop
+share/pixmaps/puddletag.png
diff --git a/audio/puddletag/distinfo b/audio/puddletag/distinfo
new file mode 100644
index 00000000000..583148f9025
--- /dev/null
+++ b/audio/puddletag/distinfo
@@ -0,0 +1,6 @@
+$NetBSD: distinfo,v 1.1 2022/12/16 17:49:09 wiz Exp $
+
+BLAKE2s (puddletag-2.0.1.tar.gz) = 1175e9a0f9868e2c37d1227cb70bdbf0810b778db4693980447f5fa852aa8b4c
+SHA512 (puddletag-2.0.1.tar.gz) = d84ba360a6cd8c3ddb6628e30276df58d059d9e8cbb2d1255320ca273436c69f05584059c2e768a15871d3f56dc08d7ac96fef9a9c7c077811bb9fdfde444610
+Size (puddletag-2.0.1.tar.gz) = 1227152 bytes
+SHA1 (patch-puddlestuff_audio__filter.py) = ddd6508a902a5105471819d5feb9ce04e300db2c
diff --git a/audio/puddletag/patches/patch-puddlestuff_audio__filter.py b/audio/puddletag/patches/patch-puddlestuff_audio__filter.py
new file mode 100644
index 00000000000..c7aee57732b
--- /dev/null
+++ b/audio/puddletag/patches/patch-puddlestuff_audio__filter.py
@@ -0,0 +1,16 @@
+$NetBSD: patch-puddlestuff_audio__filter.py,v 1.1 2022/12/16 17:49:09 wiz Exp $
+
+Stop using deprecated function.
+https://github.com/puddletag/puddletag/issues/643
+
+--- puddlestuff/audio_filter.py.orig 2020-08-29 13:19:47.992420700 +0000
++++ puddlestuff/audio_filter.py
+@@ -180,7 +180,7 @@ bool_exprs = [
+ field_expr = Combine('%' + Word(alphanums + '_') + '%')
+ tokens = QuotedString('"', unquoteResults=False) \
+ | field_expr | Word(alphanums + '_')
+-bool_expr = operatorPrecedence(tokens, bool_exprs)
++bool_expr = infixNotation(tokens, bool_exprs)
+ bool_expr.enablePackrat()
+
+