(no commit message)
[paste/616.git] / fill-cddb-template-from-rip.php
1 #!/usr/bin/env php\r
2 <?php\r
3 $template = file_get_contents('php://stdin');\r
4 $dir      = $argv[1];\r
5 \r
6 $files = glob($dir . '/*.ogg');\r
7 $category = null;\r
8 $genreCategoryMap = [\r
9     'Pop' => 'rock',\r
10     'Rock' => 'rock',\r
11 ];\r
12 foreach ($files as $file) {\r
13     $info = shell_exec(\r
14         'vorbiscomment'\r
15         . ' ' . escapeshellarg($file)\r
16     );\r
17     $lines = explode("\n", $info);\r
18 \r
19     $data = [];\r
20     foreach ($lines as $line) {\r
21         $line = trim($line);\r
22         if ($line === '') {\r
23             continue;\r
24         }\r
25         $parts = explode('=', $line, 2);\r
26         if (count($parts) == 2) {\r
27             $data[$parts[0]] = $parts[1];\r
28         }\r
29     }\r
30 \r
31     if (!isset($data['album'])\r
32         || !isset($data['artist'])\r
33         || !isset($data['title'])\r
34         || !isset($data['genre'])\r
35         || !isset($data['date'])\r
36         || !isset($data['tracknumber'])\r
37     ) {\r
38         echo "Meta data missing in $file:\n";\r
39         var_dump($data);\r
40         exit();\r
41     }\r
42 \r
43     $template = preg_replace(\r
44         "#DTITLE=.+\n#",\r
45         'DTITLE='\r
46         . $data['artist'] . ' / ' . $data['album']\r
47         . "\n",\r
48         $template\r
49     );\r
50 \r
51     $template = preg_replace(\r
52         "#DYEAR=\n#",\r
53         'DYEAR=' . $data['date'] . "\n",\r
54         $template\r
55     );\r
56 \r
57     $template = preg_replace(\r
58         "#DGENRE=\n#",\r
59         'DGENRE=' . $data['genre'] . "\n",\r
60         $template\r
61     );\r
62 \r
63     if (isset($genreCategoryMap[$data['genre']])) {\r
64         $template = preg_replace(\r
65             "|#CATEGORY=.+\n|",\r
66             'CATEGORY=' . $genreCategoryMap[$data['genre']] . "\n",\r
67             $template\r
68         );        \r
69     }\r
70 \r
71     $track = intval($data['tracknumber']) - 1;\r
72     $template = preg_replace(\r
73         "#TTITLE" . $track . "=.+\n#",\r
74         'TTITLE' . $track . '=' . $data['title'] . "\n",\r
75         $template\r
76     );\r
77 \r
78     //var_dump($info, $data);\r
79     //die();\r
80 }\r
81 \r
82 echo $template;\r
83 ?>\r