Skip to main content
handle no change
Source Link
milahu
  • 218
  • 1
  • 9

tagutil is a lightweight CLI-tool to read/write audio tags

Backends:
   libvorbis: Ogg/Vorbis files format
      TagLib: various file format but limited set of tags

example use in bash script:

#! /usr/bin/env bash
# tagutil demo: fix title
# license: public domain, no warranty

set -e

# check dependencies
for dep in tagutil jq
do
  command -v $dep || { echo please install $dep; exit 1; }
done

dryrun=false
if [[ "$1" == "-n" ]]
then
  dryrun=true
  shift
fi

for file in "$@"
do

  echo "file: $file"

  # read title
  title=$(tagutil -F json print "$file" | jq -r ".[0].title")
  title1="$title" # copy
  echo "title 1: $title"

  # fix title
  title=$(echo $title) # collapse multiple whitespaces
  title=$(echo "$title" | sed 's/ (original version)$//i') # remove suffix
  title=$(echo "$title" | sed 's/ (album version)$//i') # remove suffix
  title=$(echo "$title" | sed 's/ (official video)$//i') # remove suffix

  if [[ "$title1" == "$title" ]]
  then
    echo no change
    continue
  fi

  echo "title 2: $title"

  drycmd=()
  $dryrun && drycmd=(printf "%q ")

  # make backup
  #[ -e "$file.bak" ] || cp -v "$file" "$file.bak"

  # write title
  ${drycmd[@]} tagutil set:title="$title" "$file"

done

tagutil is a lightweight CLI-tool to read/write audio tags

Backends:
   libvorbis: Ogg/Vorbis files format
      TagLib: various file format but limited set of tags

example use in bash script:

#! /usr/bin/env bash
# tagutil demo: fix title
# license: public domain, no warranty

set -e

# check dependencies
for dep in tagutil jq
do
  command -v $dep || { echo please install $dep; exit 1; }
done

dryrun=false
if [[ "$1" == "-n" ]]
then
  dryrun=true
  shift
fi

for file in "$@"
do

  echo "file: $file"

  # read title
  title=$(tagutil -F json print "$file" | jq -r ".[0].title")
  echo "title 1: $title"

  # fix title
  title=$(echo $title) # collapse multiple whitespaces
  title=$(echo "$title" | sed 's/ (original version)$//i') # remove suffix
  title=$(echo "$title" | sed 's/ (album version)$//i') # remove suffix
  title=$(echo "$title" | sed 's/ (official video)$//i') # remove suffix
  echo "title 2: $title"

  drycmd=()
  $dryrun && drycmd=(printf "%q ")

  # make backup
  #[ -e "$file.bak" ] || cp -v "$file" "$file.bak"

  # write title
  ${drycmd[@]} tagutil set:title="$title" "$file"

done

tagutil is a lightweight CLI-tool to read/write audio tags

Backends:
   libvorbis: Ogg/Vorbis files format
      TagLib: various file format but limited set of tags

example use in bash script:

#! /usr/bin/env bash
# tagutil demo: fix title
# license: public domain, no warranty

set -e

# check dependencies
for dep in tagutil jq
do
  command -v $dep || { echo please install $dep; exit 1; }
done

dryrun=false
if [[ "$1" == "-n" ]]
then
  dryrun=true
  shift
fi

for file in "$@"
do

  echo "file: $file"

  # read title
  title=$(tagutil -F json print "$file" | jq -r ".[0].title")
  title1="$title" # copy
  echo "title 1: $title"

  # fix title
  title=$(echo $title) # collapse multiple whitespaces
  title=$(echo "$title" | sed 's/ (original version)$//i') # remove suffix
  title=$(echo "$title" | sed 's/ (album version)$//i') # remove suffix
  title=$(echo "$title" | sed 's/ (official video)$//i') # remove suffix

  if [[ "$title1" == "$title" ]]
  then
    echo no change
    continue
  fi

  echo "title 2: $title"

  drycmd=()
  $dryrun && drycmd=(printf "%q ")

  # make backup
  #[ -e "$file.bak" ] || cp -v "$file" "$file.bak"

  # write title
  ${drycmd[@]} tagutil set:title="$title" "$file"

done
Source Link
milahu
  • 218
  • 1
  • 9

tagutil is a lightweight CLI-tool to read/write audio tags

Backends:
   libvorbis: Ogg/Vorbis files format
      TagLib: various file format but limited set of tags

example use in bash script:

#! /usr/bin/env bash
# tagutil demo: fix title
# license: public domain, no warranty

set -e

# check dependencies
for dep in tagutil jq
do
  command -v $dep || { echo please install $dep; exit 1; }
done

dryrun=false
if [[ "$1" == "-n" ]]
then
  dryrun=true
  shift
fi

for file in "$@"
do

  echo "file: $file"

  # read title
  title=$(tagutil -F json print "$file" | jq -r ".[0].title")
  echo "title 1: $title"

  # fix title
  title=$(echo $title) # collapse multiple whitespaces
  title=$(echo "$title" | sed 's/ (original version)$//i') # remove suffix
  title=$(echo "$title" | sed 's/ (album version)$//i') # remove suffix
  title=$(echo "$title" | sed 's/ (official video)$//i') # remove suffix
  echo "title 2: $title"

  drycmd=()
  $dryrun && drycmd=(printf "%q ")

  # make backup
  #[ -e "$file.bak" ] || cp -v "$file" "$file.bak"

  # write title
  ${drycmd[@]} tagutil set:title="$title" "$file"

done