-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpicBot.php
More file actions
57 lines (52 loc) · 2.7 KB
/
picBot.php
File metadata and controls
57 lines (52 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
function get_http_response_code($url) {
$headers = get_headers($url);
return substr($headers[0], 9, 3);
}
// Defining the basic cURL function
function curl($url) {
// Assigning cURL options to an array
$options = Array(
CURLOPT_RETURNTRANSFER => TRUE, // Setting cURL's option to return the webpage data
CURLOPT_FOLLOWLOCATION => TRUE, // Setting cURL to follow 'location' HTTP headers
CURLOPT_AUTOREFERER => TRUE, // Automatically set the referer where following 'location' HTTP headers
CURLOPT_CONNECTTIMEOUT => 120, // Setting the amount of time (in seconds) before the request times out
CURLOPT_TIMEOUT => 120, // Setting the maximum amount of time for cURL to execute queries
CURLOPT_MAXREDIRS => 10, // Setting the maximum number of redirections to follow
CURLOPT_USERAGENT => "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1a2pre) Gecko/2008073000 Shredder/3.0a2pre ThunderBrowse/3.2.1.8", // Setting the useragent
CURLOPT_URL => $url, // Setting cURL's URL option with the $url variable passed into the function
);
$ch = curl_init(); // Initialising cURL
curl_setopt_array($ch, $options); // Setting cURL's options using the previously assigned array data in $options
$data = curl_exec($ch); // Executing the cURL request and assigning the returned data to the $data variable
curl_close($ch); // Closing cURL
return $data; // Returning the data from the function
}
// Defining the basic scraping function
function scrape_between($data, $start, $end){
$data = stristr($data, $start); // Stripping all data from before $start
$data = substr($data, strlen($start)); // Stripping $start
$stop = stripos($data, $end); // Getting the position of the $end of the data to scrape
$data = substr($data, 0, $stop); // Stripping all data from after and including the $end of the data to scrape
return $data; // Returning the scraped data from the function
}
function getPic( $name ){
$before = microtime(true);
$uName = urlencode($name);
$html_sc = curl('http://www.last.fm/music/'.$uName);
$html = scrape_between($html_sc, "<section class=\"g8 artist-images\">", "</section>");
$dom = new DOMDocument();
@$dom->loadHTML( $html );
$xpath = new DOMXPath($dom);
$tableCol = $xpath->query('//img[@*]');
$url;
foreach ($tableCol as $col){
if ($col->hasAttribute('itemprop')){
if($col->getAttribute('itemprop') == "image"){
return $col->getAttribute('src');
}
}
}
return 'pics/concert.jpg';
}
?>