(no commit message) master
authorChristian Weiske <cweiske@cweiske.de>
Mon, 15 Apr 2019 12:34:54 +0000 (14:34 +0200)
committerwww-cweiske <www-cweiske@ahso3>
Mon, 15 Apr 2019 12:34:54 +0000 (14:34 +0200)
README.rst [new file with mode: 0644]
fill-cddb-template-from-rip.php [new file with mode: 0644]

diff --git a/README.rst b/README.rst
new file mode 100644 (file)
index 0000000..e023e44
--- /dev/null
@@ -0,0 +1,5 @@
+Usage::\r
+\r
+  $ cddb-tool template `cd-discid`\\r
+    | ./fill-cddb-template-from-rip.php Musicalbumfolder > cdinfo.cddb\r
+  $ cddb-tool send cdinfo.cddb freedb-submit@freedb.org
\ No newline at end of file
diff --git a/fill-cddb-template-from-rip.php b/fill-cddb-template-from-rip.php
new file mode 100644 (file)
index 0000000..fdea0c7
--- /dev/null
@@ -0,0 +1,83 @@
+#!/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