aboutsummaryrefslogtreecommitdiff
path: root/bin/tag-tracks
diff options
context:
space:
mode:
authoryuzu-eva <cafebabe@disroot.org>2025-11-11 16:51:28 +0100
committeryuzu-eva <cafebabe@disroot.org>2025-11-11 16:51:28 +0100
commit968819c58b023cadca0ca1402a26f7e13069fd4b (patch)
tree0dedc832de968f100d4d3fd5642549ac655524d6 /bin/tag-tracks
initial commitHEADmaster
Diffstat (limited to 'bin/tag-tracks')
-rwxr-xr-xbin/tag-tracks32
1 files changed, 32 insertions, 0 deletions
diff --git a/bin/tag-tracks b/bin/tag-tracks
new file mode 100755
index 0000000..609c4cd
--- /dev/null
+++ b/bin/tag-tracks
@@ -0,0 +1,32 @@
+#!/usr/bin/env ruby
+
+require 'taglib'
+
+if ARGV.empty?
+ puts "ERROR: no argument given..."
+ puts "usage: tag-tracks TARGET_DIR"
+ exit 69
+end
+
+target_dir = ARGV.first
+
+Dir.chdir("#{target_dir}")
+
+puts "Tagging Tracks in #{Dir.pwd} ..."
+
+mp3_files = Dir.glob("*").sort_by { |x| File.basename(x).downcase }
+
+track_num = 1
+
+mp3_files.each do |song|
+ song_name = File.basename(song, File.extname(song))
+ TagLib::MPEG::File.open(song) do |file|
+ tag = file.id3v2_tag
+ tag.track = track_num
+ tag.title = "#{song_name}"
+ file.save
+ track_num += 1
+ end
+end
+
+puts "Done!"