Subversion Repositories cheapmusic

Rev

Rev 12 | Rev 14 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
10 - 1
<?php
2
 
3
// BUGBUG {"message": "You are making requests too quickly."}
4
 
5
function findDiscogsMaster($str) {
6
    $vendors = Vendors::getInstance();
7
    $config = $vendors->getVendor(Vendors::DISCOGS);
13 - 8
 
10 - 9
    $_SESSION["discogs"] = "";
10
 
11
    $url = "https://api.discogs.com/database/search?";
12
    $url .= "token=";
13
    $url .= $config['token'];
14
    if (empty($_SESSION["barcode"]['Type'])) {
15
        $url .= "&type=master";
16
        $url .= "&q=";
17
        $url .= urlencode($str);
18
    } else {
19
        $url .= "&barcode=";
20
        $url .= $_SESSION["barcode"]['Value'];
21
    }
22
 
13 - 23
	$searchResp = getUrl($url, $config['userAgent']);
10 - 24
	$searchResp = utf8_encode($searchResp);
25
	$searchResp = json_decode($searchResp);
26
 
13 - 27
    $_SESSION["discogs"] = "";
10 - 28
 
29
    if (!empty($searchResp->{'message'})) {
30
        if ($searchResp->{'message'} == "You are making requests too quickly.") {
31
// bugbug
32
            return;
33
        }
34
    }
35
 
36
    if ($searchResp->{'pagination'}->{'items'} < 1) {
37
        return;
38
    }
39
 
13 - 40
    $_SESSION["discogs"] .= "<div class=\"container\">";
41
    $_SESSION["discogs"] .= "<h4 class=\"text-center\">Matching Albums</h4>";
42
    $_SESSION["discogs"] .= "<div class=\"d-flex flex-wrap justify-content-center\">";
43
 
10 - 44
    $masterCount = 0;
45
    $processedMasters = [];
46
    foreach ($searchResp->{'results'} as $searchey => $searchValue) {
47
        if ($searchValue->{'type'} != "master" && empty($_SESSION["barcode"]['Type'])) {
48
            continue;
49
        }
50
 
51
        if (++$masterCount > 5) {
52
            break;
53
        }
54
 
55
        if (in_array($searchValue->{'master_id'}, $processedMasters)) {
56
            continue;
57
        }
58
        $processedMasters[] = $searchValue->{'master_id'};
59
 
13 - 60
	    $masterResp = getUrl($searchValue->{'master_url'}, $config['userAgent']);
10 - 61
	    $masterResp = utf8_encode($masterResp);
62
    	$masterResp = json_decode($masterResp);
63
 
64
        if (!empty($searchResp->{'message'})) {
65
            if ($searchResp->{'message'} == "You are making requests too quickly.") {
66
// bugbug
67
                return;
68
            }
69
        }
70
 
13 - 71
        $_SESSION["discogs"] .= "<div class=\"p-2 border\">";
10 - 72
        $_SESSION["discogs"] .= processMaster($masterResp, $searchValue->{'thumb'}, $masterCount);
73
        $_SESSION["discogs"] .= "</div>";
74
 
75
    }
76
 
77
    $_SESSION["discogs"] .= "</div>";
13 - 78
    $_SESSION["discogs"] .= "</div>";
10 - 79
 
80
    return;
81
}
82
 
83
function processMaster($master, $thumbnail, $cnt) {
84
    $str = "<img class=\"img-fluid\" src=\"" . $thumbnail . "\" alt=\"Discogs Master Thumbnail\">";
12 - 85
    $str .= "<table class=\"table-borderless table-condensed small\">";
10 - 86
    $str .= "<tr><td>Title:</td><td>" . $master->{'title'} . "</td></tr>";
87
 
88
    $artists = [];
89
    foreach ($master->{'artists'} as $key => $value) {
90
        $artists[] = trim(preg_replace('/\([0-9]+\)$/', "", $value->{'name'}));
91
    }
92
    $str .= "<tr><td>Artist:</td><td>" . join(", ", $artists) . "</td></tr>";
93
 
94
    $str .= "<tr><td>Year:</td><td>" . $master->{'year'} . "</td></tr>";
95
 
96
    $genres = [];
97
    foreach ($master->{'genres'} as $key => $value) {
98
        $genres[] =  $value;
99
    }
100
    $str .= "<tr><td>Genre:</td><td>" . join(", ", $genres) . "</td></tr>";
101
 
102
    if (isset($master->{'styles'})) {
103
        $styles = [];
104
        foreach ($master->{'styles'} as $key => $value) {
105
            $styles[] = $value;
106
        }
11 - 107
        $str .= "<tr><td>Style:</td><td>" . join(", ", $styles) . "</td></tr>";
10 - 108
    }
109
    $str .= "<tr><td colspan=\"2\"><span class=\"font-weight-lighter small\">(Data provided by <a href=\"" . $master->{'uri'} . "\" target=\"_blank\">Discogs)</a></span></td></tr>";
110
    $str .= "</table>";
111
 
12 - 112
    $str .= "<button id=\"track" . $cnt . "\" type=\"button\" class=\"btn btn-primary btn-sm\" data-toggle=\"collapse\" data-target=\"#trackCollapse" . $cnt . "\">Tracks</button>";
10 - 113
    $str .= "<div id=\"trackCollapse" . $cnt . "\" class=\"collapse\">";
12 - 114
    $str .= "<ol class=\"small\">";
10 - 115
    foreach ($master->{'tracklist'} as $key => $value) {
116
        $str .= "<li>" . $value->{'title'};
117
 
118
        $trackArtists = [];
119
        if (isset($value->{'artists'})) {
120
            foreach ($value->{'artists'} as $taKey => $taValue) {
121
                $trackArtists[] = trim(preg_replace('/\([0-9]+\)$/', "", $taValue->{'name'}));
122
            }
123
            if (count($trackArtists)) {
124
                $str .= " - " . join(", ", $trackArtists);
125
            }
126
        }
127
 
128
        if (!empty($value->{'duration'})) {
129
            $str .= " [" . $value->{'duration'} . "]";
130
        }
131
 
132
        $str .= "</li>";
133
    }
134
    $str .= "</ol></div>";
13 - 135
 
10 - 136
    return $str;
137
}