Winamp status pe website (ce ascult acum in winamp)

E sambata seara, ma cam plictisesc si am zis sa mai postez un script. Un script care afiseaza pe website-ul personal ce melodie asculti in winamp-ul la momentul respectiv, daca este inchis, ultima melodie ascultata.

De inceput ai nevoie de un plugin (Info Sender) pentru winamp, un script PHP si o baza de date (eu am folosit MySQL). Plugin-ul il poti descarca de aici.

amp.css

body {
	background: #FFFFFF;
	color: #0064A6;
	margin: 1px;
	padding: 1px;
	font: 11px verdana,tahoma,arial,sans-serif;
}

#arhiva {
	background: #FFFFFF;
	width: 760;
	margin: 2px;
	padding: 2px;
	font: 11px verdana,tahoma,arial,sans-serif;
	border:1px solid #BFDFF9;
}

amp_arhiva.php

<html>
<head>
	<title>Winamp status
</head>
<meta http-equiv=refresh content="120; url=amp_arhiva.php">
<link rel="stylesheet" href="amp.css" type="text/css" />
<?php
// conectarea la bd (mysql) 
$db = mysql_connect("localhost","mysql_user","mysql_pass") or die("Could not connect."); 
if (!$db) 
{ 
	die("no db"); 
}

if (!mysql_select_db("mysql_db",$db)) 
{ 
	die("No database selected."); 
}

// cate afisari avem pe pagina
$nr_melodii = $_GET['nr']; 
if (!$_GET['nr']) 
{ 
	$nr_melodii = "20"; 
}

// extragere nume melodii din db
$interogare = "SELECT * 
			   FROM song 
			   ORDER BY id DESC 
			   LIMIT 0, $nr_melodii"; 
$rezultat = mysql_query($interogare) OR die ("Nu se poate executa interogarea!"); 

// variabilele culorilor ce se vor alterna 
$color1 = '#FCDBBC'; 
$color2 = '#BFDFF9'; 

// se pleaca de la valoarea zero a randului (deci primul rand va avea culoarea 1) 
$nr_rand = 0; 
?>
<table id="arhiva" align="center">
<tr>
	<td colspan="4" align="center"><b>Ultimele 20 de melodii ascultate cu Winamp-ul:</b>
</tr>
<tr>
	<td colspan="4" align="left">[ Afiseaza ultimele: <a href="amp_arhiva.php?nr=50">50 | <a href="amp_arhiva.php?nr=100">100 | <a href="amp_arhiva.php?nr=500">500 | <a href="amp_arhiva.php?nr=1000">1000 | <a href="amp_arhiva.php?nr=2000">2000 melodii (default <a href="amp_arhiva.php">20) ]</td>
</tr> 
<tr>
	<td align="center"><b> Nr </b></td> 
	<td align="center"><b> Data si ora </b></td> 
	<td align="center"><b> Melodia </b></td> 
	<td align="center"><b> Ip </b></td> 
</tr>
<?php
while ($rand = mysql_fetch_array($rezultat, MYSQL_BOTH)) 
{ 
	// daca numarul randului este par foloseste culoarea 1 dak este impar foloseste culoarea 2 
	$culoare_rand = ($nr_rand % 2) ? $color1 : $color2; 
	?>
	<tr> 
		<td bgcolor="<?php echo $culoare_rand; ?>" align="center"><?php echo $rand['id']; ?></td> 
		<td bgcolor="<?php echo $culoare_rand; ?>" align="center"><?php echo $rand['arhiva_data']; ?></td> 
		<td bgcolor="<?php echo $culoare_rand; ?>" align="center"><?php echo $rand['arhiva_melodie']; ?></td> 
		<td bgcolor="<?php echo $culoare_rand; ?>" align="center"><?php echo $rand['ip']; ?></td> 
	</tr>
	<?php
	//incrementeaza nr randului 
	$nr_rand++; 
}
?> 
</table>
<?php mysql_close($db); ?>

amp_status.php

<?php 
// conectarea la db
$db = mysql_connect("localhost","mysql_user","mysql_pass") or die("Could not connect."); 
if(!$db) 
{
	die("no db"); 
}

if (!mysql_select_db("mysql_db",$db)) 
{
	die("No database selected."); 
}

// extragerea numelui melodiei din db
$rezultat = mysql_query("SELECT * 
						 FROM song 
						 WHERE id='1'") or die(mysql_error()); 
$row = mysql_fetch_array($rezultat); 
$timp = date("gi"); 

// setam dif de timp
$time_1 = $row['timp'] + "10"; 

// verificam daca acum se asculta muzica sau e oprit winamp-ul
if ($time_1 > $timp)
{ 
	echo 'Acum ascult: <b>' . $row['melodie'] . '</b>'; 
} 
else
{ 
	echo 'Winamp-ul este acum inchis,<br />Ultima melodie ascultata: <b>' . $row['melodie'] . '</b>'; 
}

amp_write.php

<?php
// citirea melodiei si setarea orei actualizarii bazei de date 
$titlumel = $_GET['song']; 
$timp = date("gi"); 

// colectare informatii utilizator (dupa preferinta se poate seta o adresa..)
$iphost = $_SERVER['REMOTE_ADDR'];
if ($iphost == "81.181.xxx.xxx")
{
	$ip = "Home";
}
elseif ($iphost == "195.234.xxx.xxx")
{
	$ip = "Munca";
}
else
{
	$ip = $_SERVER['REMOTE_ADDR'];
} 

// conectarea la db (mysql) 
$db = mysql_connect("localhost","mysql_user","mysql_pass") or die("Could not connect."); 
if (!$db)
{
	die("no db"); 
} 

if (!mysql_select_db("mysql_db",$db))
{
	die("No database selected."); 
} 

// scrierea melodiei in db 
mysql_query("UPDATE song 
			 SET melodie = '$titlumel', timp = '$timp' 
			 WHERE id = '1'") or die(mysql_error());

// arhiva melodii ascultate
$data = date("Y:m:j H:i:s");
mysql_query("INSERT INTO song (arhiva_melodie, arhiva_data, ip) 
			 VALUES('$titlumel', '$data','$ip')") or die (mysql_error()); 

mysql.txt

CREATE TABLE song (
id int(25) NOT NULL auto_increment,
arhiva_data datetime NOT NULL default '0000-00-00 00:00:00',
arhiva_melodie varchar(50) NOT NULL, 
nr varchar(25) NOT NULL default '1', 
melodie varchar(50) NOT NULL default '',
timp varchar(25) NOT NULL default '00:00',
ip varchar(25) NOT NULL,
PRIMARY KEY (id) 
) TYPE = MYISAM

Dupa descarcarea plugin-ului in calculator, dezarhiveaza si o sa vezi ca este un fisier gen_sender.dll, acest .dll il copii in folderul unde e instalat winamp-ul, in plugins (ex: C:\Program Files\Winamp\Plugins).

Acum pornim winampul si la Plug-ins -> General Purpose o sa vezi printre celelalte plugin-uri si unul cu numele: Luke’s Info Sender (gen_sender.dll), dai dublu click pe el si setezi adresa unde plugin-ul va trimite melodia pe care o asculti, la fel ca in poza de mai jos. Ok, am terminat cu setarea plugin-ului.

Despre fiecare fisier, ce face:

amp.css – codul css pentru amp_arhiva.php

amp_arhiva.php – pagina care afiseaza arhiva de melodii ascultate

amp_status.php – pagina care afiseaza in timp real starea winamp-ului

amp_write.php – pagina care scrie in db inregistrarile cu numele solistului si a melodiei

mysql.txt – codul sql pentru crearea tabelului song in care vom lucra

Info: Scriptul in actiune arata cam asa:

Acum ascult: Don Omar – Pobre Diabla

sau

Winamp-ul este acum inchis,
Ultima melodie ascultata: Don Omar – Pobre Diabla

Ca sa apara si la tine pe pagina cum e mai sus incluzi amp_status.php in pagina (functia include() din PHP). Scriptul poate fi modificat si inbunatatit, asta este si ideea de baza. Pentru nelamuriri sau sfaturi astept commentariu.

6 thoughts on “Winamp status pe website (ce ascult acum in winamp)”

  1. Szucs Alfred nu prea. PHP este un limbaj de programare care poate lucra cu baze de date iar contorizarea necesita stocarea informatiei undeva.. un fisier text sau o baza de date.

  2. Eu am o problema cu un plug-in care afiseaza la statusul de la Yahoo ce melodie ascult cu Winamp-ul.
    Am folosit 2 Y!M status changer si W2WY si ambele dadaeau aceasi eroare: nu afisau ce doream eu chiar daca erau “Embed”;afisau “Be Right Back”, “Busy” si “On the Phone”.
    De ce?Ce pot face?

Leave a Reply

Your email address will not be published. Required fields are marked *