<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/735a6bb92f0a4a5363a6ae59e996a9f08da201c0">https://github.com/macports/macports-ports/commit/735a6bb92f0a4a5363a6ae59e996a9f08da201c0</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 735a6bb92f0 beets: new port
</span>735a6bb92f0 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 735a6bb92f0a4a5363a6ae59e996a9f08da201c0
</span>Author: Kirill A. Korinsky <kirill@korins.ky>
AuthorDate: Sun Sep 19 13:06:48 2021 +0200

<span style='display:block; white-space:pre;color:#404040;'>    beets: new port
</span>---
 audio/beets/Portfile                      | 623 ++++++++++++++++++++++++++++++
 audio/beets/files/README                  |   7 +
 audio/beets/files/follow-confuse.diff     |  43 +++
 audio/beets/files/ibroadcast-confuse.diff |  40 ++
 audio/beets/files/moveall-2to3.diff       |  58 +++
 audio/beets/files/originquery-utf8.diff   |  42 ++
 audio/beets/files/usertag-album.diff      | 162 ++++++++
 7 files changed, 975 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/beets/Portfile b/audio/beets/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..d97b2adf655
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/audio/beets/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,623 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           python 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                beets
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             1.5.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          audio
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+supported_archs     noarch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         music library manager and MusicBrainz tagger
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    Beets is the media library management system for obsessive music geeks. \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    The purpose of beets is to get your music collection right once and for all. \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    It catalogs your collection, automatically improving its metadata as it goes. \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    It then provides a bouquet of tools for manipulating and accessing your music.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            https://beets.io/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {@catap korins.ky:kirill} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  b78e41d04dc9a9199696e5c31d885e3503b54d2a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  887f7bbac0fc14c49469e50d406fd216f914a27acf3818c6503c223f9825342b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    1694845
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.default_version 39
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-setuptools
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {$subport eq $name} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    conflicts       ${name}-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-devel {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    conflicts       $name
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    github.setup    beetbox beets 7548820e5816504eb8ce1c9a7f3849bdc02a1933
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         20210908
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  feedf1f50b74d5308d54c33c346cc400adbe9fda \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  487a10eab844166e5327fe7ee7afabc491bfedb11bfff4ad35748c6c36015445 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    1669458
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-sphinx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-build {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system -W ${worksrcpath} "make -C docs SPHINXBUILD=${python.prefix}/bin/sphinx-build BUILDDIR=../ man"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${name} eq ${subport} || "${name}-devel" eq ${subport}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-Pillow \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-acoustid \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-beautifulsoup4 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-confuse \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-discogs-client \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-flask \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-flask-cors \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-gmusicapi \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-jellyfish \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-langdetect \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-last \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-mediafile \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-mpd2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-munkres \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-musicbrainzngs \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-mutagen \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-rarfile \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-reflink \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-requests \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-requests-oauthlib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-six \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-soco \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-unidecode \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-xdg \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-yaml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_run-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:chromaprint \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:ffmpeg \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:flac \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:mp3val \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:ImageMagick \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:ipfs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -d ${destroot}${prefix}/share/man/man1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 0644 {*}[glob ${worksrcpath}/man/*.1] ${destroot}${prefix}/share/man/man1/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -d ${destroot}${prefix}/share/man/man5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 0644 {*}[glob ${worksrcpath}/man/*.5] ${destroot}${prefix}/share/man/man5/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -d ${destroot}${prefix}/share/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 0644 -W ${worksrcpath} README.rst LICENSE ${destroot}${prefix}/share/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+} elseif {${name} ne "${name}-full"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    python.rootname ${subport}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    bin:beet:beets
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach f {__init__.py __init__.pyc __init__.pyo __pycache__} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set fp "${destroot}${python.pkgd}/beetsplug/$f"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[file exists ${fp}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                file delete -force ${fp}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-alternatives {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         0.10.2.post1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     beets plugin to manage multiple files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    homepage        https://www.github.com/geigerzaehler/beets-alternatives
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  832db7cf388d766671184b53e9d2a9ce2a578e7e \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  2ad1213b9a395233082062860a8ba165c29a4125624f7cd9a3a749ee15600bd6 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    10943
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-amazon {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    github.setup    jmwatte beet-amazon da25d7671f3814a8401b004f592ccf0633197edf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         20210908
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # See: https://github.com/jmwatte/beet-amazon/issues/7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     plugin for beets that lets you search amazon for album-details
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  144a3a4935fa56b30266f6b8233850d2836da406 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  a6dc5061c9354b8e6fa77a42f7568f07e01ef8011a267547f291aa3a0f7098ca \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    3532
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-bottlenose
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -d ${destroot}${prefix}/share/${subport}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 0644 ${worksrcpath}/README.md ${destroot}${prefix}/share/${subport}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -d ${destroot}${python.pkgd}/beetsplug
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 0644 ${worksrcpath}/amazon.py ${destroot}${python.pkgd}/beetsplug
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-artistcountry {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         0.3.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     Beets plugin to retrieve the country of an artist from musicbrainz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    homepage        https://github.com/agrausem/beets-artistcountry
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  289bd9b7d0f0f11fcda8194bff5c737e25bcdbcc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  76f18ed29837be1fdd6f661261f290e691b341ce11375a0ae770353af7e04b89 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    2107
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-autofix {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         0.1.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     A beets plugin to execute repetitive tasks in one go.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    homepage        https://github.com/adamjakab/BeetsPluginAutofix
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  d72ba141c508d3891c591caf60f19f19806a7a2b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  f734c24f5208e170da99732c7a5be77eb1f729810a29fc8a7cfd88cd7d49d1bd \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    11033
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-alive-progress
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-barcode {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    github.setup    8h2a beets-barcode ad18cace04873157a96c34a48e714874825db724
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         20210908
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     A plugin for beets that finds releases (on musicbrainz) based on a barcode that is provided via text or decoded from image files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  a866d52c0b4458f5815eb57010ee12737c3c8a94 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  2ec3897a6fb05e2e528b4f154a3eaadde2ab0e758040f1c4566f4fc2a3c4d228 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    4742
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-zbar
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-beetcamp {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    python.rootname beetcamp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         0.10.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         GPL-2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     Bandcamp autotagger source for beets.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    homepage        https://github.com/snejus/beetcamp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  7dd8c487353cbb64f482031d60dd8f00feadd138 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  ef8b1b0eada60a48a0fe2d0833202dd69fb8b2da34a74e44c001cb9b3682a29f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    26169
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-cached-property \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-country \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-requests
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-bpmanalyser {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         1.3.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     A beets plugin for analysing tempo of songs and storing it in the bpm tag.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    homepage        https://github.com/adamjakab/BeetsPluginBpmAnalyser
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  4d5371f92997132ab51796f8b3c6469febb02c65 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  c5e5ce8e7919655d42b9b3e60288c51fd921d4b055da4e012400e37bc11fecf4 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    6684
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-aubio \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-numpy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-check {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         0.13.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     beets plugin verifying file integrity with checksums
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    homepage        https://www.github.com/geigerzaehler/beets-check
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  51faf5466651b51e336804004b216e3ee3eac1ce \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  ada6bc23b02041a9afa24a4943413950bcd43670d6e5c3f9f8813e5dbbc9bffc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    13455
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-copyartifacts {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    python.rootname beets-copyartifacts3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         0.1.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     beets plugin to copy non-music files to import path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    homepage        https://github.com/adammillerio/beets-copyartifacts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  0a3295d358bf353247fdb1911b3a7656a7beb9e5 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  e9fb32f3ec5dc279c96bd010322e0792e55e84eecf0c3383f74ef2b624539969 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    5452
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-describe {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         0.0.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     A beets plugin that describes attributes in depth
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    homepage        https://github.com/adamjakab/BeetsPluginDescribe
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  fa35987e55e63e1090318dc79bd95b4cec5459ed \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  4f47bd8b4b3852b4d9f4b698f0727ddd75a813e9c528100ee20876df6d6227f0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    8398
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-numpy \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-pandas \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-termplotlib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-termtables
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-follow {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    github.setup    nolsto beets-follow eb504a0b3b457993d599530a66a54b11b740ecb5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         20210908
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     Plugin for the music library manager Beets. Follow artists from your library using muspy.com
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  ebe6866b1055ea5459fa33c77b08f904dece5be8 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  e1dd35c3ea1cf8c3f5893fa3b49f3fd2f1c1c230e05f5fa0bf03b805a9eea39a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    4145
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patch.pre_args  -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles      follow-confuse.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-confuse
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-goingrunning {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         1.2.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     A beets plugin for creating and exporting songs that match your running session.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    homepage        https://github.com/adamjakab/BeetsPluginGoingRunning
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  e761fda8ec710d6df6b930e502432c1ce9751646 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  1facf57accbc77329831ceff15ffcbf024de40fa4826f63ae7987607ebf0c1d5 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    22371
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-alive-progress
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-ibroadcast {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         0.5.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # beets-ibroadcast is licensed under The Unlicense
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         public-domain
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     iBroadcast plugin for Beets
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    homepage        https://github.com/ctrueden/beets-ibroadcast
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  bbd7ede95fa6d20b55c9a86b9dc540a1b9bd3b3a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  838968ee4ccb3d08dbb8c465efbbcf0f2c87b387402e91fa1b506c01b0775db2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    10974
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patch.pre_args  -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles      ibroadcast-confuse.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-ibroadcast
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-importreplace {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    github.setup    edgars-supe beets-importreplace 0.1.1 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     Plugin for beets to perform regex replacements during import
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  36ae8f85b72aa291dcd429967abb772faa05a066 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  8c8466b57a75a0e6be9d9f5daf1d6e322e7ee8abecb4df665c818f48b3b8df67 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    4115
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-mosaic {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    python.rootname beets_mosaic
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         0.9.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     Plugin for the music library manager Beets. The mosaic plugin generates a montage of a mosiac from cover art.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    homepage        https://github.com/susannamaria/beets-mosaic
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  71d68c17894f255fcea01d6da07782e8eab9b324 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  7e6ff14be69502c394dfc7abe57f144747adba700a2a50dd36c06e9a3e18a966 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    6195
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-fonttools \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-parse \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-pillow \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-requests \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-ttfquery
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-moveall {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    github.setup    dsedivec beets-plugins c67038d91bca79d9fd52ab316ad9150c1ba1a236
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         20210908
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     A beet plugin that move all files into beets library
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  c93492b8b1b4df2f864acd9467c063cb6640694c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  e055b07c5f5072cacb5c8858b009918b7542fa968964b4133bfc821ccc6f8a9d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    8110
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patch.pre_args  -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles      moveall-2to3.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -d ${destroot}${prefix}/share/${subport}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 0644 ${worksrcpath}/README.md ${destroot}${prefix}/share/${subport}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -d ${destroot}${python.pkgd}/beetsplug
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 0644 ${worksrcpath}/beetsplug/moveall.py ${destroot}${python.pkgd}/beetsplug
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-noimport {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         0.1.0b5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     Beets plugin to add directories to the incremental import 'do not import' list
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    homepage        https://www.github.com/ttsda/beets-noimport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  2755bf7b969712da0931c5972ddf23f6aff7ec90 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  86a6291e1de90b292829e6f7286b057be2bc556f5a49e9c30ffead2985ae998a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    3167
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-originquery {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    github.setup    x1ppy beets-originquery 269e9e4cfc88128493b25ed814e34df2528dc1ef
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         20210908
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         Unknown
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     Plugin for beets that improves album matching
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  6adbd6e65ef1a701af7daa7b137b6792ef4f8c12 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  d015e1d21caba32ee02de184f71c12357c33e7b12d329976c1d1221bfa6f4033 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    7563
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patch.pre_args  -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles      originquery-utf8.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-confuse \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-jsonpath-rw \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-yaml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-summarize {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    github.setup    steven-murray beet-summarize b4a07c6c4db51d9a332a54e7a83bfc0ac60040ab
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         20210908
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         LGPL-3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     Summarize beet library statistics
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  9631bc2b10a0c6d09bd5c4f743ae6d91ce610155 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  029cd7799cab022861599af58b608bacd2087aab01ff7096b25ba6303d76cd24 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    11013
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-usertag {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    github.setup    igordertigor beets-usertag 8e058361c9dfa335980048c0afb9274e5f077611
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         20210908
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     user defined keyword tags for beets
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  2e44ee667ed71fb8f9b8c96dd7503bd1fff89918 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  5bd683eca9a38ab14b1917e3023e4639c16378b88ea31d2d4a45bec8dbf73c56 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    2449
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patch.pre_args  -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles      usertag-album.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-xtractor {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         0.3.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     A beets plugin that extracts music descriptors from your audio files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    homepage        https://github.com/adamjakab/BeetsPluginXtractor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  dc79a85606a5162c36c1b9d076a6ee272ad46ad9 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  bee843cd04c1ed6e6796b39f0ed1054fa80e9e8ec0a9eb05cc4db133ea5e74f0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    10578
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-yaml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-yearfixer {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version         0.0.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    license         MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     A beets plugin that attempts to fix all missing original_year and year fields
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    homepage        https://github.com/adamjakab/BeetsPluginYearFixer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums       rmd160  dee186219952dafba3fbfc84abf1cb885ec29a15 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  b22601ea6b515ba0426ee692a98ba08d8b656c68041637dac28b31a68a0d968a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    6563
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-requests
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-full {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description     Install beets with all plugins.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_run-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-alternatives \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-amazon \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-artistcountry \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-autofix \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-barcode \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-beetcamp \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-bpmanalyser \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-check \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-copyartifacts \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-describe \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-follow \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-goingrunning \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-ibroadcast \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-importreplace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-mosaic \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-moveall \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-noimport \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-originquery \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-summarize \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-usertag \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-xtractor \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:beets-yearfixer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build           {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    fetch           {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    extract         {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksum        {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set docdir ${prefix}/share/doc/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -d ${destroot}${docdir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 0644 ${filespath}/README ${destroot}${docdir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    livecheck.type  none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/beets/files/README b/audio/beets/files/README
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..dd81927acb6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/audio/beets/files/README
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Please note that the beets-full port is simply a meta-port that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+installs all plugins of the beets music library manager and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MusicBrainz tagger that MacPorts ships.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+When MacPorts ships new versions of the beets-full, this port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+will be updated so that the new plugins are installed on your
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+system when you upgrade outdated ports.
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/beets/files/follow-confuse.diff b/audio/beets/files/follow-confuse.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..2eccb6ad3ae
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/audio/beets/files/follow-confuse.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,43 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From f4c7be12bd1161b20b979c8bd817097a1e25e1bf Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Tom Gurion <nagasaki45@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 15 Sep 2020 13:12:22 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Stop using deprecated beets.util.confit. Fix #10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ beetsplug/follow.py | 4 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ setup.py            | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 3 insertions(+), 3 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/beetsplug/follow.py b/beetsplug/follow.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e9b6b7f..ce4c540 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/beetsplug/follow.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/beetsplug/follow.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -16,7 +16,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from beets import config, dbcore, ui
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from beets.plugins import BeetsPlugin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-from beets.util import confit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++import confuse
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PLUGIN_HOME = 'https://github.com/nolsto/beets-follow/'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -43,7 +43,7 @@ def wrapper(*args, **kwargs):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 password_mgr.add_password(None, MUSPY_API, email, password)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # Password manager doesn't need userid, but API calls will.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 config['follow']['userid'].get()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            except confit.NotFoundError as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            except confuse.NotFoundError as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 msg = '%s. Please see %s' % (e, PLUGIN_HOME + '#muspy-configuration')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 raise ui.UserError(msg)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return func(*args, **kwargs)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/setup.py b/setup.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7ea3070..ca77f20 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/setup.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/setup.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -27,5 +27,5 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     keywords='beets muspy',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     packages=['beetsplug'],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    install_requires=['beets>=1.4.3'],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    install_requires=['beets>=1.4.3', 'confuse'],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/beets/files/ibroadcast-confuse.diff b/audio/beets/files/ibroadcast-confuse.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..d4f27e11df1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/audio/beets/files/ibroadcast-confuse.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,40 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From f4934e525c8852f779736c6857b4c73cac57fd0a Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: "Kirill A. Korinsky" <kirill@korins.ky>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 18 Sep 2021 02:18:43 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Switch to using confuse
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This commit fixed a warning:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+```
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+beets/util/confit.py:21: UserWarning: beets.util.confit is deprecated; use confuse instead
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  warnings.warn("beets.util.confit is deprecated; use confuse instead")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+```
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ beetsplug/ibroadcast/__init__.py | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ setup.py                         | 1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 2 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/beetsplug/ibroadcast/__init__.py b/beetsplug/ibroadcast/__init__.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 2e8d436..52cd4a5 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/beetsplug/ibroadcast/__init__.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/beetsplug/ibroadcast/__init__.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4,7 +4,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import os
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from beets.plugins import BeetsPlugin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-from beets.util.confit import ConfigSource, load_yaml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++from confuse import ConfigSource, load_yaml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from beetsplug.ibroadcast.command import IBroadcastCommand
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/setup.py b/setup.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5bc3b12..b829807 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/setup.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/setup.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -38,6 +38,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     install_requires=[
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         'beets>=1.4.9',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         'ibroadcast>=1.1.1',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        'confuse',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     tests_require=[
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/beets/files/moveall-2to3.diff b/audio/beets/files/moveall-2to3.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..dc30749ce0a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/audio/beets/files/moveall-2to3.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,58 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From a9b081cdc8c431252d5a6ade51646c8499e4ea92 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Ingo Lohmar <ingo.lohmar@posteo.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 8 Dec 2019 14:31:13 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Update moveall for python3 compatibility
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- iteritems -> items
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- print statement -> function call
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- proper handling of local exception var
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- use util.py3_path on internal bytes paths where necessary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+shutil.move must not be called w/ bytes paths, as it calls
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+path.rstrip(sep) on a passed path, where sep is a string.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Apparently, beets calls the event handlers with (discouraged, but
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+internally-used) bytes "paths" instead of unicode strings, presumably a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python2 legacy.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ beetsplug/moveall.py | 20 ++++++++++----------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 10 insertions(+), 10 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/beetsplug/moveall.py b/beetsplug/moveall.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 43847e9..d8dc382 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/beetsplug/moveall.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/beetsplug/moveall.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -35,23 +35,23 @@ def handle_item_moved(source, destination, **_kwargs):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def handle_cli_exit(lib, **_kwargs):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    for src_dir, dst_dir in directories_moved.iteritems():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    for src_dir, dst_dir in directories_moved.items():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if dst_dir is MULTIPLE_DESTS:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            print ("moves out of %s have multiple dests, will not moveall" %
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                   (src_dir,))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            print("moves out of %s have multiple dests, will not moveall" % (src_dir,))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             continue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         remaining_items = lib.items(library.PathQuery('path', src_dir))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if next(iter(remaining_items), None):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            print "some Beets items left in %s, will not moveall" % (src_dir,)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            print("some Beets items left in %s, will not moveall" % (src_dir,))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         elif os.path.exists(src_dir):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            print "moving all leftovers in %s to %s" % (src_dir, dst_dir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            print("moving all leftovers in %s to %s" % (src_dir, dst_dir))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             for dirent in os.listdir(src_dir):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 dirent_path = os.path.join(src_dir, dirent)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    shutil.move(dirent_path, dst_dir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                except shutil.Error, ex:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    shutil.move(util.py3_path(dirent_path), util.py3_path(dst_dir))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                except shutil.Error as ex:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     # Log it but move on.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    # XXX unicode problem here if path has non-ascii
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    log.critical("failed to move {0} to {1}: {2}", dirent_path,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                 dst_dir, ex)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    log.critical("failed to move {0} to {1}: {2}",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                 util.py3_path(dirent_path),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                 util.py3_path(dst_dir),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                 ex)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             util.prune_dirs(src_dir)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/beets/files/originquery-utf8.diff b/audio/beets/files/originquery-utf8.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..a88de7c2e78
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/audio/beets/files/originquery-utf8.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,42 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 3bc06ba65f2bb8dfbe71e1a0d1fe23e00573e295 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: AKJ <andrew@johnson5.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 29 Apr 2021 23:45:08 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Enforce UTF-8 encoding in the data passed to the match
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ functions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Closes #1.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ beetsplug/originquery.py | 6 +++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 3 insertions(+), 3 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/beetsplug/originquery.py b/beetsplug/originquery.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 295f72c..2efb42d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/beetsplug/originquery.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/beetsplug/originquery.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -179,7 +179,7 @@ def before_choose_candidate(self, task, session):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def match_text(self, origin_path):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        with open(origin_path) as f:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        with open(origin_path, encoding="utf-8") as f:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             lines = f.readlines()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for key, pattern in self.tag_patterns.items():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -192,7 +192,7 @@ def match_text(self, origin_path):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def match_json(self, origin_path):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        with open(origin_path) as f:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        with open(origin_path, encoding="utf-8") as f:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             data = json.load(f)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for key, pattern in self.tag_patterns.items():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -204,7 +204,7 @@ def match_json(self, origin_path):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def match_yaml(self, origin_path):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        with open(origin_path) as f:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        with open(origin_path, encoding="utf-8") as f:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             data = yaml.load(f, Loader=yaml.SafeLoader)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for key, pattern in self.tag_patterns.items():
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/beets/files/usertag-album.diff b/audio/beets/files/usertag-album.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..074a7ca8d52
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/audio/beets/files/usertag-album.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,162 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 59898d241a08d62c2058af6b4be315a30cffef19 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Edgars Supe <edgars.supe@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 10 Sep 2021 15:12:08 +0300
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Add ability to add tags to albums
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ README.md            | 23 ++++++++++++++---------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ beetsplug/usertag.py | 43 +++++++++++++++++++++++++++++++++++--------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 49 insertions(+), 17 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/README.md b/README.md
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f0e2ab5..7579a09 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/README.md
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/README.md
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5,34 +5,39 @@ Provides user defined keyword tags for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ add and remove tags and to clear all tags from a file. These are specifically:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ```
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-beet addtag <query> -t <usertag>[ -t <other-usertag>[...]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++beet addtag <query> -t <usertag>[ -t <other-usertag>[...]] [-a]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ```
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-Adds one (or more) usertags to the track with the given id.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Adds one (or more) usertags to the track with the given id. Use the `-a` flag to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++tag albums instead.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ```
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-beet rmtag <query> -t <usertag>[ -t <other-usertag>[...]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++beet rmtag <query> -t <usertag>[ -t <other-usertag>[...]] [-a]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ```
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-Removes a usertag from the track with the given id.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Removes a usertag from the track with the given id. Use the `-a` flag to remove
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++a tag from an album.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ```
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-beet cleartags <query>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++beet cleartags <query> [-a]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ```
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-Strips all usertags from the track with the given id.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Strips all usertags from the track with the given id. Use the `-a` flag to strip
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++all usertags from the specified albums.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ```
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-beet listtags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++beet listtags [-a]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ```
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-Lists all user defined tags and a count of tracks that used those tags.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Lists all user defined tags and a count of tracks that used those tags. Use the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++`-a` flag to return user-defined tags and count for albums.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ```
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ beet list usertags:my-tag
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ```
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-Query user tags as you would query any other field with the standard `list` command.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Query user tags as you would query any other field with the standard `list`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++command. Add the `-a` flag to list user-tagged albums.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Installation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/beetsplug/usertag.py b/beetsplug/usertag.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f272dbc..6fec521 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/beetsplug/usertag.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/beetsplug/usertag.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -32,7 +32,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def add_usertag(lib, opts, args):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     """Add a usertag"""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    items = lib.items(args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    items = _get_items(lib, opts, args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     newtags = opts.tags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     for item in items:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         usertags = item.get('usertags', None)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -57,14 +57,19 @@ def add_usertag(lib, opts, args):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     '--tag', '-t',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     action='append', dest='tags',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     help='Tag to add. '
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    'Combine multiple tags by specifiing this option repeatedly.')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    'Combine multiple tags by specifying this option repeatedly.')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++add_tag_command.parser.add_option(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    '--album', '-a',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    action='store_true', default=False,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    dest='album', help='tag only albums'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ add_tag_command.parser.usage += '\n'\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     'Example: beet addtag artist:beatles -t favourites'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def remove_usertag(lib, opts, args):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     """Remove a usertag"""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    items = lib.items(args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    items = _get_items(lib, opts, args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     deltags = opts.tags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     for item in items:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         usertags = item.get('usertags', None)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -88,24 +93,34 @@ def remove_usertag(lib, opts, args):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     '--tag', '-t',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     action='append', dest='tags',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     help='Tag to remove. '
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    'Combine multiple tags by specifiing this option repeatedly.')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    'Combine multiple tags by specifying this option repeatedly.')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++rm_tag_command.parser.add_option(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    '--album', '-a',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    action='store_true', default=False,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    dest='album', help='remove tag only from albums'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rm_tag_command.parser.usage += '\n'\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     'Example: beet rmtag artist:beatles -t favourites'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def clear_usertags(lib, opts, args):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     """Clear all usertags"""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    items = lib.items(args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    items = _get_items(lib, opts, args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     for item in items:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         item.update({'usertags': None})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         item.store()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ clear_tags_command = Subcommand('cleartags',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                help='remove ALL user defined tags')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                help='remove ALL user-defined tags from tracks')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++clear_tags_command.parser.add_option(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    '--album', '-a',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    action='store_true', default=False,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    dest='album', help='remove user-defined tags from albums'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ clear_tags_command.func = clear_usertags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def list_usertags(lib, opts, args):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    items = lib.items(u'')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    items = _get_items(lib, opts, args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     alltags = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     for item in items:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         usertags = item.get('usertags', None)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -114,11 +129,23 @@ def list_usertags(lib, opts, args):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     for tag in sorted(set(alltags)):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         print(tag, len([True for t in alltags if t == tag]))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ list_tags_command = Subcommand('listtags',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                               help='list all user defined tags',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                               help='list all user-defined tags on tracks',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                aliases=('lst',))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++list_tags_command.parser.add_option(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    '--album', '-a',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    action='store_true', default=False,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    dest='album', help='list all user-defined tags on albums'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ list_tags_command.func = list_usertags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++def _get_items(lib, opts, args):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if opts.album:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return lib.albums(args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return lib.items(args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class UserTagsPlugin(BeetsPlugin):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     """UserTags plugin to support user defined tags"""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     item_types = {'usertags': types.STRING}
</span></pre><pre style='margin:0'>

</pre>