Subversion Repositories cheapmusic

Rev

Rev 10 | Rev 12 | 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);
8
 
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
 
23
    $originalUserAgent = ini_get('user_agent');
24
    ini_set('user_agent', $config['userAgent']);
25
	$searchResp = file_get_contents($url);
26
	$searchResp = utf8_encode($searchResp);
27
	$searchResp = json_decode($searchResp);
28
 
29
    $_SESSION["discogs"] .= "<div class=\"d-flex bg-secondary\">";
30
 
31
    if (!empty($searchResp->{'message'})) {
32
        if ($searchResp->{'message'} == "You are making requests too quickly.") {
33
// bugbug
34
            ini_set('user_agent', $originalUserAgent);
35
            return;
36
        }
37
    }
38
 
39
    if ($searchResp->{'pagination'}->{'items'} < 1) {
40
        ini_set('user_agent', $originalUserAgent);
41
        return;
42
    }
43
 
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
 
60
        $masterResp = file_get_contents($searchValue->{'master_url'});
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
                ini_set('user_agent', $originalUserAgent);
68
                return;
69
            }
70
        }
71
 
11 - 72
        $_SESSION["discogs"] .= "<div class=\"p-2 flex-fill bg-light\">";
10 - 73
        $_SESSION["discogs"] .= processMaster($masterResp, $searchValue->{'thumb'}, $masterCount);
74
        $_SESSION["discogs"] .= "</div>";
75
 
76
    }
77
 
78
    $_SESSION["discogs"] .= "</div>";
79
 
80
 
81
    ini_set('user_agent', $originalUserAgent);
82
    return;
83
}
84
 
85
function processMaster($master, $thumbnail, $cnt) {
86
    $str = "<img class=\"img-fluid\" src=\"" . $thumbnail . "\" alt=\"Discogs Master Thumbnail\">";
11 - 87
    $str .= "<table class=\"table-borderless table-sm small\">";
10 - 88
    $str .= "<tr><td>Title:</td><td>" . $master->{'title'} . "</td></tr>";
89
 
90
    $artists = [];
91
    foreach ($master->{'artists'} as $key => $value) {
92
        $artists[] = trim(preg_replace('/\([0-9]+\)$/', "", $value->{'name'}));
93
    }
94
    $str .= "<tr><td>Artist:</td><td>" . join(", ", $artists) . "</td></tr>";
95
 
96
    $str .= "<tr><td>Year:</td><td>" . $master->{'year'} . "</td></tr>";
97
 
98
    $genres = [];
99
    foreach ($master->{'genres'} as $key => $value) {
100
        $genres[] =  $value;
101
    }
102
    $str .= "<tr><td>Genre:</td><td>" . join(", ", $genres) . "</td></tr>";
103
 
104
    if (isset($master->{'styles'})) {
105
        $styles = [];
106
        foreach ($master->{'styles'} as $key => $value) {
107
            $styles[] = $value;
108
        }
11 - 109
        $str .= "<tr><td>Style:</td><td>" . join(", ", $styles) . "</td></tr>";
10 - 110
    }
111
    $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>";
112
    $str .= "</table>";
113
 
114
    $str .= "<button id=\"track" . $cnt . "\" type=\"button\" class=\"btn btn-primary small\" data-toggle=\"collapse\" data-target=\"#trackCollapse" . $cnt . "\">Tracks</button>";
115
    $str .= "<div id=\"trackCollapse" . $cnt . "\" class=\"collapse\">";
116
    $str .= "<ol>";
117
    foreach ($master->{'tracklist'} as $key => $value) {
118
        $str .= "<li>" . $value->{'title'};
119
 
120
        $trackArtists = [];
121
        if (isset($value->{'artists'})) {
122
            foreach ($value->{'artists'} as $taKey => $taValue) {
123
                $trackArtists[] = trim(preg_replace('/\([0-9]+\)$/', "", $taValue->{'name'}));
124
            }
125
            if (count($trackArtists)) {
126
                $str .= " - " . join(", ", $trackArtists);
127
            }
128
        }
129
 
130
        if (!empty($value->{'duration'})) {
131
            $str .= " [" . $value->{'duration'} . "]";
132
        }
133
 
134
        $str .= "</li>";
135
    }
136
    $str .= "</ol></div>";
137
 
138
    return $str;
139
}