--- /dev/null
+#!/usr/bin/env php\r
+<?php\r
+$template = file_get_contents('php://stdin');\r
+$dir = $argv[1];\r
+\r
+$files = glob($dir . '/*.ogg');\r
+$category = null;\r
+$genreCategoryMap = [\r
+ 'Pop' => 'rock',\r
+ 'Rock' => 'rock',\r
+];\r
+foreach ($files as $file) {\r
+ $info = shell_exec(\r
+ 'vorbiscomment'\r
+ . ' ' . escapeshellarg($file)\r
+ );\r
+ $lines = explode("\n", $info);\r
+\r
+ $data = [];\r
+ foreach ($lines as $line) {\r
+ $line = trim($line);\r
+ if ($line === '') {\r
+ continue;\r
+ }\r
+ $parts = explode('=', $line, 2);\r
+ if (count($parts) == 2) {\r
+ $data[$parts[0]] = $parts[1];\r
+ }\r
+ }\r
+\r
+ if (!isset($data['album'])\r
+ || !isset($data['artist'])\r
+ || !isset($data['title'])\r
+ || !isset($data['genre'])\r
+ || !isset($data['date'])\r
+ || !isset($data['tracknumber'])\r
+ ) {\r
+ echo "Meta data missing in $file:\n";\r
+ var_dump($data);\r
+ exit();\r
+ }\r
+\r
+ $template = preg_replace(\r
+ "#DTITLE=.+\n#",\r
+ 'DTITLE='\r
+ . $data['artist'] . ' / ' . $data['album']\r
+ . "\n",\r
+ $template\r
+ );\r
+\r
+ $template = preg_replace(\r
+ "#DYEAR=\n#",\r
+ 'DYEAR=' . $data['date'] . "\n",\r
+ $template\r
+ );\r
+\r
+ $template = preg_replace(\r
+ "#DGENRE=\n#",\r
+ 'DGENRE=' . $data['genre'] . "\n",\r
+ $template\r
+ );\r
+\r
+ if (isset($genreCategoryMap[$data['genre']])) {\r
+ $template = preg_replace(\r
+ "|#CATEGORY=.+\n|",\r
+ 'CATEGORY=' . $genreCategoryMap[$data['genre']] . "\n",\r
+ $template\r
+ ); \r
+ }\r
+\r
+ $track = intval($data['tracknumber']) - 1;\r
+ $template = preg_replace(\r
+ "#TTITLE" . $track . "=.+\n#",\r
+ 'TTITLE' . $track . '=' . $data['title'] . "\n",\r
+ $template\r
+ );\r
+\r
+ //var_dump($info, $data);\r
+ //die();\r
+}\r
+\r
+echo $template;\r
+?>\r