]> git.mxchange.org Git - friendica-addons.git/blobdiff - jappixmini/jappix/php/music-search.php
jappixmini: include jappix source
[friendica-addons.git] / jappixmini / jappix / php / music-search.php
diff --git a/jappixmini/jappix/php/music-search.php b/jappixmini/jappix/php/music-search.php
new file mode 100644 (file)
index 0000000..b284972
--- /dev/null
@@ -0,0 +1,103 @@
+<?php
+
+/*
+
+Jappix - An open social platform
+This is the Jappix music search script
+
+-------------------------------------------------
+
+License: AGPL
+Author: Vanaryon
+Last revision: 15/01/12
+
+*/
+
+// PHP base
+define('JAPPIX_BASE', '..');
+
+// Get the needed files
+require_once('./functions.php');
+require_once('./read-main.php');
+require_once('./read-hosts.php');
+
+// Optimize the page rendering
+hideErrors();
+compressThis();
+
+// Not allowed for a special node
+if(isStatic() || isUpload())
+       exit;
+
+// If valid data was sent
+if((isset($_GET['searchquery']) && !empty($_GET['searchquery'])) && (isset($_GET['location']) && !empty($_GET['location']))) {
+       // Set a XML header
+       header('Content-Type: text/xml; charset=utf-8');
+       
+       // Get the values
+       $searchquery = $_GET['searchquery'];
+       $location = $_GET['location'];
+       
+       // Jamendo search?
+       if($location == 'jamendo')
+               exit(read_url('http://api.jamendo.com/get2/name+id+duration+url/track/xml/?searchquery='.urlencode($searchquery).'&order=searchweight_desc'));
+       
+       // Local music search
+       $xml = '<data>';
+       $searchquery = strtolower($searchquery);
+       
+       // Escape the regex special characters
+       $searchquery = escapeRegex($searchquery);
+       
+       // Search in the directory
+       $repertory = '../store/music/';
+       $scan = scandir($repertory);
+       
+       foreach($scan as $current) {
+               // This file match our query!
+               if(is_file($repertory.$current) && $current && preg_match('/(^|\s|\[)('.$searchquery.')(.+)?(\.(og(g|a)|mp3|wav))$/i', strtolower($current))) {
+                       // Get the basic informations
+                       $title = preg_replace('/^(.+)(\.)(og(g|a)|mp3|wav)$/i', '$1', $current);
+                       $url = $location.'store/music/'.$current;
+                       $ext = getFileExt($current);
+                       $id = md5($url);
+                       
+                       // Get the MIME type
+                       if($ext == 'mp3')
+                               $type = 'audio/mpeg';
+                       else if($ext == 'wav')
+                               $type = 'audio/x-wav';
+                       else
+                               $type = 'audio/ogg';
+                       
+                       // Get the advanced informations
+                       $locked_title = $title;
+                       $artist = '';
+                       $source = '';
+                       
+                       $title_regex = '/^(([^-]+) - )?([^\[]+)( \[(.+))?$/i';
+                       $artist_regex = '/^(.+) - (.+)$/i';
+                       $source_regex = '/^(.+) \[(.+)\]$/i';
+                       
+                       if(preg_match($title_regex, $locked_title))
+                               $title = preg_replace($title_regex, '$3', $locked_title);
+                       
+                       if(preg_match($artist_regex, $locked_title))
+                               $artist = preg_replace($artist_regex, '$1', $locked_title);
+                       
+                       if(preg_match($source_regex, $locked_title))
+                               $source = preg_replace($source_regex, '$2', $locked_title);
+                       
+                       // Generate the XML
+                       $xml .= '<data><track><name>'.htmlspecialchars($title).'</name><artist>'.htmlspecialchars($artist).'</artist><source>'.htmlspecialchars($source).'</source><id>'.htmlspecialchars($id).'</id><url>'.htmlspecialchars($url).'</url><type>'.$type.'</type></track></data>';
+               }
+       }
+       
+       // End
+       $xml .= '</data>';
+       
+       // Return the path to the file
+       exit($xml);
+}
+
+?>