copyparty/bin/mtag
ed 65c4e03574 fix keyfinder build;
stopped working in alpine 3.22 due to switching to llvm,
which strictly requres CXXFLAGS rather than CFLAGS

the PKG_CONFIG_PATH change is unnecessary but might as well
2025-06-22 12:27:11 +00:00
..
res vbi: add onscreen qrcode 2021-12-28 20:57:11 +01:00
audio-bpm.py more accurate bpm detector 2023-03-31 21:20:37 +00:00
audio-key-slicing.py audio-key: truncate at 5min + mojibake support 2021-06-22 22:21:39 +02:00
audio-key.py fix mojibake support in misc mtp plugins 2021-11-20 17:33:24 +01:00
cksum.py use zlib-ng when available 2025-03-23 20:15:21 +00:00
exe.py add multitag example 2021-05-29 03:43:30 +02:00
file-ext.py general-purpose file parsing 2021-05-16 07:04:18 +02:00
guestbook-read.py mtp: add guestbook reader 2022-09-05 20:23:59 +02:00
guestbook.py this actually serves a purpose but please dont ask 2022-09-03 20:19:16 +02:00
image-noexif.py support long filepaths on win7 + misc windows fixes 2023-02-10 18:37:37 +00:00
install-deps.sh fix keyfinder build; 2025-06-22 12:27:11 +00:00
media-hash.py fix mojibake support in misc mtp plugins 2021-11-20 17:33:24 +01:00
mousepad.py provide tagparsers with uploader info 2022-08-15 20:23:17 +02:00
rclone-upload.py idx multimedia format/container type 2022-08-15 17:56:13 +02:00
README.md recommend kamelåså instead of very-bad-idea; closes #75 2025-01-01 20:26:09 +00:00
sleep.py better task recovery on restart 2021-03-21 05:57:24 +01:00
very-bad-idea.py recommend kamelåså instead of very-bad-idea; closes #75 2025-01-01 20:26:09 +00:00
vidchk.py optimizations / cleanup 2022-09-15 01:18:19 +02:00
wget.py wget: only allow http/https/ftp/ftps (#50): 2023-08-20 09:47:50 +00:00
yt-ipr.py support multiple volume flags in one group 2021-09-18 23:45:43 +02:00

standalone programs which take an audio file as argument

you may want to forget about all this fancy complicated stuff and just use event hooks instead (which doesn't need -e2ts or ffmpeg)


NOTE: these all require -e2ts to be functional, meaning you need to do at least one of these: apt install ffmpeg or pip3 install mutagen

some of these rely on libraries which are not MIT-compatible

  • audio-bpm.py detects the BPM of music using the BeatRoot Vamp Plugin; imports GPL2
  • audio-key.py detects the melodic key of music using the Mixxx fork of keyfinder; imports GPL3

these invoke standalone programs which are GPL or similar, so is legally fine for most purposes:

  • media-hash.py generates checksums for audio and video streams; uses FFmpeg (LGPL or GPL)
  • image-noexif.py removes exif tags from images; uses exiftool (GPLv1 or artistic-license)

these do not have any problematic dependencies at all:

  • cksum.py computes various checksums
  • exe.py grabs metadata from .exe and .dll files (example for retrieving multiple tags with one parser)
  • wget.py lets you download files by POSTing URLs to copyparty

dangerous plugins

plugins in this section should only be used with appropriate precautions:

  • very-bad-idea.py combined with meadup.js converts copyparty into a janky yet extremely flexible chromecast clone
    • also adds a virtual keyboard by @steinuil to the basic-upload tab for comfy couch crowd control
    • anything uploaded through the android app (files or links) are executed on the server, meaning anyone can infect your PC with malware... so protect this with a password and keep it on a LAN!
    • kamelåså is a much better (and MUCH safer) alternative to this plugin

dependencies

run install-deps.sh to build/install most dependencies required by these programs (supports windows/linux/macos)

alternatively (or preferably) use packages from your distro instead, then you'll need at least these:

  • from distro: numpy vamp-plugin-sdk beatroot-vamp mixxx-keyfinder ffmpeg
  • from pip: keyfinder vamp

usage from copyparty

copyparty -e2dsa -e2ts followed by any combination of these:

  • -mtp key=f,audio-key.py

  • -mtp .bpm=f,audio-bpm.py

  • -mtp ahash,vhash=f,media-hash.py

  • f, makes the detected value replace any existing values

  • the . in .bpm indicates numeric value

  • assumes the python files are in the folder you're launching copyparty from, replace the filename with a relative/absolute path if that's not the case

  • mtp modules will not run if a file has existing tags in the db, so clear out the tags with -e2tsr the first time you launch with new mtp options

usage with volflags

instead of affecting all volumes, you can set the options for just one volume like so:

copyparty -v /mnt/nas/music:/music:r:c,e2dsa:c,e2ts immediately followed by any combination of these:

  • :c,mtp=key=f,audio-key.py
  • :c,mtp=.bpm=f,audio-bpm.py
  • :c,mtp=ahash,vhash=f,media-hash.py