<?php
//charset=utf-8 makes it so unicode output doesn't get gobbled up by browser
header("Content-type: text/html; charset=utf-8");
echo '<p>Youri\'s id3v2 script</p>';
//connect to mysql and select amarokdb
$link=mysql_connect("localhost", "username", "password") or die(mysql_error());
echo "Connected to MySQL<br />";
mysql_select_db("amarokdb") or die(mysql_error());
echo "Connected to Database<br />";
//this makes the mysql db play well with utf8
mysql_set_charset('utf8',$link);
//globally retrieve all variables in the url string
$variable = $_GET['what'];
$bitratevariable = $_GET['bitrate'];
$coversaction = $_GET['coversaction'];
$idofartist= $_GET['idofartist'];
$artistName= $_GET['artistName'];
//navigation
echo "<a href=?what=bg1cd>Look for albums that have a CD num set</a> <br />";
echo "<a href=?what=blt128>Look for tracks with bitrate lower than 128kbps</a> <br />";
echo "<a href=?what=covers&coversaction=lookup>Look up covers</a> <br />";
echo "<a href=?what=nulltracknum>Look for tracks with no tracknumber set</a>";
echo '<br/><br/>';
echo "Look up bitrates<br />";
echo "[<a href=?what=bitrate&bitrate=128>128</a>] ";
echo "[<a href=?what=bitrate&bitrate=160>160</a>] ";
echo "[<a href=?what=bitrate&bitrate=192>192</a>] ";
echo "[<a href=?what=bitrate&bitrate=256>256</a>] ";
echo "[<a href=?what=bitrate&bitrate=320>320</a>] ";
echo '<br/><br/>';
//return the artist's name when an artist iD is passed
function getArtist($artistnum)
{
$artist = mysql_query("SELECT * FROM `artists` where `id` = $artistnum");
while ($row = mysql_fetch_array($artist))
{
return $row{'name'};
}
}
//returns the album's name when an album id is passed
function getAlbum($albumnum)
{
$album = mysql_query("SELECT * FROM `albums` where `id` = $albumnum");
while ($row = mysql_fetch_array($album))
{
return $row{'name'};
}
}
//this lists all the artists in the database except for various artists
function listArtists()
{
//select UNIQUE artist ID's from a join table of artists and album (join by referencing artists id column with albums artist column
/*
artists albums
ID NAME NAME ARTIST
88 ARTIST ALBUM 88
*/
$result = mysql_query("select distinct artist from artists join albums on albums.artist=artists.id ORDER BY `artists`.`name`");
//walk through the result and pull artist id and artistname
while ($row = mysql_fetch_array($result))
{
//urlencode for spaces in artists and utf8 artists
$artistID = $row{'artist'};
$artistNameSQL=getArtist($artistID);
echo "<a href=?what=covers&coversaction=getArtistAlbums&idofartist=$artistID&artistName=",
urlencode($artistNameSQL),
">$artistNameSQL</a><br />";
}
}
//listallalbums belonging to artist ID when given an artist ID
//artistname is passed only for html output
function listAlbumsById($idofartist,$artistName)
{
$albums = mysql_query("SELECT * FROM `albums` where `artist` = $idofartist" );
echo "<strong>$artistName</strong><br />";
while ($row = mysql_fetch_array($albums))
{
$album = $row{'name'};
//amarok stores album covers by getting and md5sum hash of lowercased artist and album
//mb_strtolower works on unicode white strtolower doesn't
echo "<div style=\"display: inline-block\">";
echo "$album<br />";
echo "/home/youri/.kde4/share/apps/amarok/albumcovers/large/",md5(mb_strtolower("$artistName$album",'UTF-8')),"<br/>";
echo "<img width=500px src=./albumcovers/",md5(mb_strtolower("$artistName$album",'UTF-8')),"><br/>";
echo "</div>";
}
}
if ($variable=="bg1cd")
{
$result = mysql_query("SELECT * FROM `tracks` WHERE `discnumber` IS NOT NULL");
while ($row = mysql_fetch_array($result))
{
$artist = getArtist($row{'artist'});
$album = getAlbum($row{'album'});
echo "$artist - $album <br />";
}
}
elseif ($variable=="blt128")
{
$result = mysql_query("SELECT * FROM `tracks` WHERE `bitrate` < 128 ORDER BY `tracks`.`artist` ASC");
$num_rows = mysql_num_rows($result);
echo "$num_rows Tracks<br /><br />";
while ($row = mysql_fetch_array($result))
{
$artist = getArtist($row{'artist'});
$album = getAlbum($row{'album'});
$tracknumber = $row{'tracknumber'};
$title = $row{'title'};
$bitrate = $row{'bitrate'};
echo "$artist - $album - $tracknumber - $title [$bitrate]<br />";
}
}
elseif ($variable=="bitrate")
{
$result = mysql_query("SELECT * FROM `tracks` WHERE `bitrate` = $bitratevariable");
$num_rows = mysql_num_rows($result);
$totaltrax = mysql_query("SELECT * FROM `tracks`");
$num_rows_total = mysql_num_rows($totaltrax);
echo "$num_rows Tracks are $bitratevariable kbps ";
echo "out of a $num_rows_total total tracks<br />";
$percentage=($num_rows/$num_rows_total *100);
echo "Which equals: ";
echo number_format($percentage, 1)."%<br/>";
}
//if covers is called with lookup, list artists
//if covers is called with get artistalbums, then get artist's albums
elseif ($variable=="covers")
{
if ($coversaction == "lookup" )
{
listArtists();
}
elseif ($coversaction == "getArtistAlbums" )
{
listAlbumsById($idofartist,$artistName);
}
}
elseif ($variable=="nulltracknum")
{
$result = mysql_query("SELECT * FROM `tracks` where `tracknumber` is null");
while ($row = mysql_fetch_array($result))
{
$artist = getArtist($row{'artist'});
$album = getAlbum($row{'album'});
$title = $row{'title'};
}
}
?>
Monday, December 27, 2010
Amarok PHP and mYSQL
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment