1 <?php
declare(strict_types
=1);
3 require_once('bootstrap.php');
7 $split = explode(' ', $l, 2);
8 return ['hash' => $split[0], 'path' => explode('/', $split[1])[5]];
10 lines(trim(file_get_contents(glob(PATH_TO_GROOVENET
. '/songs.*.txt')[0])))
13 $d = array_combine(array_column($c, 'hash'), array_column($c, 'path'));
15 $camFaves = lines(trim(file_get_contents(PATH_TO_GROOVENET
. '/cam.favourites.txt')));
16 $jayceFaves = lines(trim(file_get_contents(PATH_TO_GROOVENET
. '/jayce.favourites.txt')));
17 $allFaves = array_merge($camFaves, $jayceFaves);
18 $hashMap = unserialize(file_get_contents(PATH_TO_HASHMAP
));
20 $camScores = array_reduce(
21 lines(trim(file_get_contents(PATH_TO_GROOVENET
. '/cam.scores.txt'))),
22 function($c, $v) use ($d) {
23 $split = explode(':', $v);
25 return array_merge($c, isset($split[2]) ?
[implode(":", [$split[0], $split[1], $split[2]]) => $split[3]] : []);
30 $jayceScores = array_reduce(
31 lines(trim(file_get_contents(PATH_TO_GROOVENET
. '/jayce.scores.txt'))),
32 function($c, $v) use ($d) {
33 $split = explode(':', $v);
35 return array_merge($c, isset($split[2]) ?
[implode(":", [$split[0], $split[1], $split[2]]) => $split[3]] : []);
40 $everything = array_reduce(
42 function($c, $fave) use ($camScores, $jayceScores) {
43 $camCandidates = array_filter(
45 function($key) use ($fave) {
46 return strpos($key, $fave) !== false
;
51 $jayceCandidates = array_filter(
53 function($key) use ($fave) {
54 return strpos($key, $fave) !== false
;
59 $conflicts = array_intersect(array_keys($camCandidates), array_keys($jayceCandidates));
60 $nonConflicts = array_merge(
61 array_diff(array_keys($camCandidates), $conflicts),
62 array_diff(array_keys($jayceCandidates), $conflicts)
65 $soFar = array_map(function($nonConflict) use ($jayceCandidates, $camCandidates){
66 $e = explode(':', $nonConflict);
67 return isset($jayceCandidates[$nonConflict])
68 ?
['hash' => $e[0], 'diff' => $e[1], 'who' => 'JCE', 'score' => $jayceCandidates[$nonConflict]]
69 : ['hash' => $e[0], 'diff' => $e[1], 'who' => 'CAM', 'score' => $camCandidates[$nonConflict]];
72 if ($conflicts = array_intersect(array_keys($camCandidates), array_keys($jayceCandidates))) {
73 $resolvedConflicts = array_map(function($conflict) use ($camCandidates, $jayceCandidates) {
74 $e = explode(':', $conflict);
75 return $camCandidates[$conflict] > $jayceCandidates[$conflict]
76 ?
['hash' => $e[0], 'diff' => $e[1], 'who' => 'JCE', 'score' => $jayceCandidates[$conflict]]
77 : ['hash' => $e[0], 'diff' => $e[1], 'who' => 'CAM', 'score' => $camCandidates[$conflict]];
78 //['who' => 'cam', 'key' => $conflict] : ['who' => 'jayce', 'key' => $conflict];
82 $ret = array_merge($soFar, $resolvedConflicts ??
[]);
90 return array_merge($c, $ret);
92 return array_merge($c, [['hash' => $fave, 'diff' => 'NONE', 'who' => 'NOONE', 'score' => 'NONE']]);
98 $camsFolder = array_filter(array_map(
99 function($row) use ($camFaves, $hashMap) {
100 if (in_array($row['hash'], $camFaves)) {
102 explode('/', $hashMap[$row['hash']])[1],
112 $jaycesFolder = array_filter(array_map(
113 function($row) use ($jayceFaves, $hashMap) {
114 if (in_array($row['hash'], $jayceFaves)) {
116 explode('/', $hashMap[$row['hash']])[1],
126 usort($camsFolder, function($a, $b) { return $a[0] <=> $b[0];});
127 usort($jaycesFolder, function($a, $b) { return $a[0] <=> $b[0];});
129 return ['cam' => $camsFolder, 'jayce' => $jaycesFolder];