last.fm integration

Cady
Titel: last.fm integration
Version: 1.1
Beschreibung: Ihr kennt sicherlich alle die Online-Plattform "last.fm", wo man sich ein Profil anlegen kann, um dort immer seine aktuell gespielte Musik anzeigen lassen kann...
Für diese Seite habe ich eine kleine Integration für das wbblite (wbb2 in planung!) gecoded.

--> Support NUR im Thread
--> Copyright bei mir smile
--> Keine Garantie bei falschem Einbau.. Backup machen!

das sind die Features:
-> Angabe des "last.fm"-Benutzernamen im Profil
-> Anzeige eines Buttons zum "last.fm"-Profil im Thread
-> Anzeige des "last.fm"-Benutzernamen im Profil
-> Anzeige eines Buttons zum "last.fm"-Profil im Profil
-> Steuerung via ACP

Aktuelle Version: 1.1.1!
getestet mit: wbblite 1.0.2 pl2

Einen Button habe ich nicht eingefügt... Warum? Naja, jedes Forum hat sein eigenes Style... Deshalb lasst euch selbst einen Button erstellen bei dem Ersteller des Styles... (Kleiner Tipp: Benutzt einen Button wie mit der Aufschrift "Suche" oder "PM" / "PN" etc.)

(Fehler in der Anleitung gefixt!)
----


weiter zum Download
hardcore-punk
ganz nützlich dr Addon... großes Grinsen
Cady
Zitat:
Original von hardcore-punk
ganz nützlich dr Addon... großes Grinsen


danke fürs lob Augenzwinkern

ich hab schon folgende erweiterungen geplant....

-> steuerung via acp (user editieren)
-> anzeige im profil (unten als button)
DerZensor
Halli Hallo - Funktioniert (fast) einwandfrei

Mein einziger Kritikpunkt:

Falls kein last.fm-Profil angegeben wurde, dann steht im Profil anstatt "keine Angabe" wie bei den anderen Screennames sondern einfach gar nichts...

Könnte man das noch beheben?
Cady
hmm... also bei mir funktioniert alles einwandfrei... häng mir mal deine profile.php und das profile.txt hier rein ^^
DerZensor
profile.php
php:
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:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
<?php
$filename="profile.php";

require("./global.php");
if($wbbuserdata['canviewprofile']==0access_error();
require_once("./acp/lib/class_parse.php");

$userid=intval($_GET['userid']);
if(!$userid) eval("error(\"".$tpl->get("error_falselink")."\");");

$user_info $db->query_first("SELECT
 u.*,
 uf.*,
 r.rankimages, r.ranktitle,
 a.avatarextension, a.width, a.height
 FROM bb".$n."_users u
 LEFT JOIN bb".$n."_userfields uf USING (userid)
 LEFT JOIN bb".$n."_avatars a ON (a.avatarid=u.avatarid)
 LEFT JOIN bb".$n."_ranks r ON (r.rankid=u.rankid)
 WHERE u.userid='$userid'");

if(!$user_info['userid']) eval("error(\"".$tpl->get("error_falselink")."\");");

$regdate formatdate($dateformat,$user_info['regdate']);
  $regdays_anz round((time() - $user_info['regdate']) / 86400,0);
  if($regdays_anz 1) {
    $regdays_anz "1";
    $daydays "Tag";
  }
  if($regdays_anz == 1) {
    $daydays "Tag";
  } else {
    $daydays "Tage";
  }
$la_d formatdate($dateformat,$user_info['lastactivity'],1);
$la_t formatdate($timeformat,$user_info['lastactivity']);

if ($regdays 1$bytesperday "$countbytes";
else $bytesperday sprintf("%.2f",($countbytes $regdays));

list($countbytes)=$db->query_first("SELECT sum(length(message)) as lang FROM bb".$n."_posts WHERE userid='$userid'");


if ($countbytes$laengepost $countbytes;
else $laengepost '0';

if ($countbytes["durch"]) $bytespost $countbytes["durch"];
else $bytespost '0';

if ($countbytes)
{
$countdays = ((time()-$user_info[regdate])/86400);
if ($countdays <1$countdays 1;
$bytesday round($countbytes/$countdays,2);
}
else $bytesday '0';

if ($user_info[userposts] >0) 
{
$bytesbeitrag round($countbytes/$user_info[userposts],2);
}
else $bytesbeitrag '0'$posts['userid'] = $user_info['userid'];
$posts['username'] = $user_info['username'];

$totalposts $db->query_first("SELECT COUNT(*) AS posts FROM bb".$n."_posts");
$prozposts round($user_info[userposts] / $totalposts[posts] * 100,2);
$totalthreads $db->query_first("SELECT COUNT(*) AS threads FROM bb".$n."_threads");
$user $db->query_first("SELECT COUNT(*) AS threads FROM bb".$n."_threads WHERE starterid = '$user_info[userid]'");
$prozthreads round($user[threads] / $totalthreads[threads] * 100,2);
if(($user_info['invisible']==|| $wbbuserdata['canuseacp']==1) && $user_info['lastactivity']>=time()-$useronlinetimeout*60) eval ("\$user_online = \"".$tpl->get("thread_user_online")."\";");
else eval ("\$user_online = \"".$tpl->get("thread_user_offline")."\";");

$regdays = (time() - $user_info[regdate]) / 86400;
if ($regdays 1$postperday "$user_info[userposts]";
else $postperday sprintf("%.2f",($user_info['userposts'] / $regdays));
if ($regdays 1$threadperday "$user[threads]";
else $threadperday sprintf("%.2f",($user['threads'] / $regdays));

if($user_info['usertext']) $user_text=parse::textwrap($user_info['usertext'],40);
if($user_info['gender']) {
 if($user_info['gender']==1) eval ("\$gender = \"".$tpl->get("profile_male")."\";");
 else eval ("\$gender  = \"".$tpl->get("profile_female")."\";");
}
else eval ("\$gender = \"".$tpl->get("profile_nodeclaration")."\";");

if($user_info['title']) $user_info['ranktitle']=$user_info['title'];
$rankimages=formatRI($user_info['rankimages']);

if($user_info['avatarid'] && $showavatar==&& $wbbuserdata['showavatars']==1) {
 $avatarname="images/avatars/avatar-$user_info[avatarid].$user_info[avatarextension]";
 $avatarwidth=$user_info['width'];
 $avatarheight=$user_info['height'];
 eval ("\$useravatar = \"".$tpl->get("avatar_image")."\";");
}

if($user_info['showemail']==1$useremail makehreftag("mailto:$user_info[email]",$user_info['email']);
else eval ("\$useremail = \"".$tpl->get("profile_nodeclaration")."\";");

if($user_info['homepage']) $userhomepage makehreftag($user_info['homepage'],$user_info['homepage'],"_blank");
else eval ("\$userhomepage = \"".$tpl->get("profile_nodeclaration")."\";");

if(!$user_info['icq']) eval ("\$user_info[icq] = \"".$tpl->get("profile_nodeclaration")."\";");
if(!$user_info['aim']) eval ("\$user_info[aim] = \"".$tpl->get("profile_nodeclaration")."\";");
if(!$user_info['yim']) eval ("\$user_info[yim] = \"".$tpl->get("profile_nodeclaration")."\";");
if(!$user_info['msn']) eval ("\$user_info[msn] = \"".$tpl->get("profile_nodeclaration")."\";");
 //--lastfm-hack by Cady
$lastfm_info $db->query_first("SELECT u.* FROM bb".$n."_users u WHERE u.userid='$userid'");
if($lastfm_info['lastfm']!="") eval ("\$btn_lastfm = \"".$tpl->get("profile_lastfm")."\";");
 //--lastfm-hack by Cady

if($user_info['birthday'] && $user_info['birthday']!="0000-00-00") {
 $birthday_array explode("-",$user_info['birthday']);
 if($birthday_array[0]=="0000"$birthday =  $birthday_array[2].".".$birthday_array[1].".";
 else $birthday =  $birthday_array[2].".".$birthday_array[1].".".$birthday_array[0];
}
else eval ("\$birthday = \"".$tpl->get("profile_nodeclaration")."\";");

$result $db->query("SELECT profilefieldid, title FROM bb".$n."_profilefields".ifelse($wbbuserdata['canuseacp']==0," WHERE hidden=0")." ORDER BY fieldorder ASC");
while($row=$db->fetch_array($result)) {
 $fieldid="field".$row['profilefieldid'];
 if(!$user_info[$fieldid]) eval ("\$user_info[$fieldid] = \"".$tpl->get("profile_nodeclaration")."\";");
 else $user_info[$fieldid]=parse::textwrap($user_info[$fieldid],50);
 eval ("\$profilefields .= \"".$tpl->get("profile_userfield")."\";");
}
if($profilefields) eval ("\$hr = \"".$tpl->get("profile_hr")."\";");

if($user_info['showemail']==&& $user_info['usercanemail']==1) eval ("\$btn_email = \"".$tpl->get("thread_formmail")."\";");
if($user_info['userposts']!=0) eval ("\$btn_search = \"".$tpl->get("thread_search")."\";");
if($user_info['receivepm']==&& $wbbuserdata['canusepms']==1) eval ("\$btn_pm = \"".$tpl->get("thread_pm")."\";");
if($user_info['lastfm']) eval ("\$btn_lastfm = \"".$tpl->get("profile_lastfm")."\";");

 #letztes posting vom user
 $boardids="";
 $permissioncache=array();
 $result $db->query("SELECT * FROM bb".$n."_permissions WHERE groupid = '$wbbuserdata[groupid]'");
 while ($row $db->fetch_array($result)) $permissioncache[$row['boardid']] = $row;
 $result $db->unbuffered_query("SELECT boardid, password, invisible FROM bb".$n."_boards");
 while($row=$db->fetch_array($result)) {
  if($row['password']!="" || $row['invisible']==2) continue;
  if(!isset($permissioncache[$row['boardid']]['boardpermission']) || $permissioncache[$row['boardid']]['boardpermission']!=0$boardids.=",".$row['boardid'];
 }
 if($boardids!="") {
  $lastpost=$db->query_first("SELECT p.postid, p.posttime, t.topic, t.boardid, b.title FROM bb".$n."_posts p, bb".$n."_threads t
  LEFT JOIN bb".$n."_boards b ON (t.boardid=b.boardid)
  WHERE p.threadid=t.threadid AND t.boardid IN (0$boardids) AND p.userid = '$userid' AND p.visible=1
  ORDER BY p.posttime DESC",1);
  if($lastpost['postid']) {
   $lastpostdate=formatdate($dateformat,$lastpost['posttime'],1);
   $lastposttime=formatdate($timeformat,$lastpost['posttime']);
   $lastpost['topic']=htmlspecialchars($lastpost['topic']);
   $lastpost['title']=$lastpost['title'];  
   eval ("\$lastpost = \"".$tpl->get("profile_lastpost")."\";");  
  } else eval ("\$lastpost = \"".$tpl->get("profile_nodeclaration")."\";");  
 } else eval ("\$lastpost = \"".$tpl->get("profile_nodeclaration")."\";");  
 #letztes posting vom user

    $result $db->query("SELECT ratingcount, ratingpoints FROM bb".$n."_users WHERE userid = '$userid'");
    $row $db->fetch_array($result);
    $rating userrating($row['ratingcount'], $row['ratingpoints'], $userid);

eval("\$tpl->output(\"".$tpl->get("profile")."\");");
?>


profile.tpl:
code:
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:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
{!DOCTYPE}
<html>
<head>
<title>$master_board_name - Profil von $user_info[username]</title>
$headinclude
  <script language="Javascript">
   function rate(userid) {
    window.open("misc.php?action=userrating&userid="+userid+"&sid=$session[hash]","rate","toolbar=no,scrollbars=no,resizable=no,width=350,height=150");
   }
  </script>
</head>

<body id="bg">
 $header
 <tr bgcolor="{tablecolora}" id="tablea">
  <td><table cellpadding=0 cellspacing=0 border=0 width="100%">
   <tr>
    <td><smallfont><b><a href="index.php?sid=$session[hash]">$master_board_name</a> » Profil von $user_info[username]</b></font></td>
    <td align="right"><smallfont><b>$usercbar</b></font></td>
   </tr>
  </table></td>
 </tr>
</table><br>
<table cellpadding=4 cellspacing=1 border=0 width="{tableinwidth}" bgcolor="{tableinbordercolor}">
 <tr bgcolor="{tabletitlecolor}" id="tabletitle">
  <td colspan=2><table width="100%" border=0 cellpadding=0 cellspacing=0>
   <tr>
    <td width="100%"><normalfont color="{fontcolorsecond}"><b>Profil von $user_info[username]</b></font></td>
    <td width="200" align="center" nowrap><normalfont color="{fontcolorsecond}"><b>Avatar/Infotext</b></font></td>
   <tr>
  </table></td>
 </tr>
 <tr bgcolor="{tablecolora}" id="tablea">
  <td width="100%"><table width="100%">
   <tr>
    <td><normalfont><B>Registriert am:</B></font></td>
    <td><normalfont>$regdate ($regdays_anz $daydays)</font></td>
   </tr>
   <tr>
    <td valign="top"><normalfont><B>Rang:</B></font></td>
    <td><normalfont>$user_info[ranktitle] $rankimages</font></td>
   </tr>
   <tr>
    <td><normalfont><B>Beitr&auml;ge:</B></font></td>
    <td><normalfont>$user_info[userposts] ($postperday pro Tag | $prozposts % aller Beiträge)</font></td>
   </tr>
   <tr>
    <td><normalfont><B>Themen:</B></font></td>
    <td><normalfont>$user[threads] ($threadperday pro Tag | $prozthreads % aller Themen)</font></td>
   </tr>
   <tr>
    <td><normalfont><B>Zeichen:</B></font></td>
    <td><normalfont>$countbytes ($bytesday pro Tag | $bytesbeitrag pro Beitrag)</font></td>
   </tr>
   <tr>
    <td><normalfont><B>Zuletzt online:</B></font></td>
    <td><normalfont>$la_d $la_t</font></td>
   </tr>
   <tr>
    <td colspan=2><hr width="100%" color="{tableinbordercolor}" noShade size=1></td>
   </tr>
   <tr>
    <td><normalfont><B>ICQ Nummer:</B></font></td>
    <td><normalfont>$user_info[icq]</font></td>
   </tr>
   <tr>
    <td><normalfont><B>AIM Screenname:</B></font></td>
    <td><normalfont>$user_info[aim]</font></td>
   </tr>
   <tr>
    <td><normalfont><B>YIM Screenname:</B></font></td>
    <td><normalfont>$user_info[yim]</font></td>
   </tr>
   <tr>
    <td><normalfont><B>MSN Screenname:</B></font></td>
    <td><normalfont>$user_info[msn]</font></td>
   </tr>
   <tr>
    <td><normalfont><B>last.fm Username:</B></font></td>
    <td><normalfont>$user_info[lastfm]</font></td>
   </tr>
   <tr>
    <td><normalfont><B>eMail:</B></font></td>
    <td><normalfont>$useremail</font></td>
   </tr>
   <tr>
    <td><normalfont><B>Homepage:</B></font></td>
    <td><normalfont>$userhomepage</font></td>
   </tr>
   <tr>
    <td colspan=2><hr width="100%" color="{tableinbordercolor}" noShade size=1></td>
   </tr>
   <tr>
    <td><normalfont><b>Geschlecht:</b></font></td>
    <td><normalfont>$gender</font></td>
   </tr>
   <tr>
    <td><normalfont><b>Geburtstag:</b></font></td>
    <td><normalfont>$birthday</font></td>
   </tr>
   $hr
   $profilefields
   <tr>
    <td colspan=2><hr width="100%" color="{tableinbordercolor}" noShade size=1></td>
   </tr>
  <tr valign="top">
   <td><normalfont><B>letzter Beitrag:</B></font></td>
   <td><normalfont>$lastpost</font></td>
  </tr>
  </table></td>
  <td width="200" align="center" nowrap>$useravatar<br><normalfont>$user_text</font><p>$user_online</p><br>$rating</td>
 </tr>
 <tr bgcolor="{tabletitlecolor}" id="tabletitle">
  <td colspan=2><table width="100%" border=0 cellpadding=0 cellspacing=0>
   <tr>
    <td><normalfont color="{fontcolorsecond}"><B>Kontaktaufnahme:</B></font>
    <td align="right">$btn_email $btn_pm $btn_search <a href="usercp.php?action=buddy&add=$user_info[userid]&sid=$session[hash]"><img src="{imagefolder}/homie.gif" border=0 alt="Nehmen Sie $user_info[username] in Ihre Freundesliste auf"></a></td>
   </tr>
  </table></td>
 </tr>
</table>
$footer
</body>
</html>


Danke im Voraus Augenzwinkern

PS - Hier ein Link zu einem Profil OHNE eingetragenen last.fm-Account: http://indieforum.in.funpic.de/profile.php?userid=23
Cady
mein fehler großes Grinsen
hatte was in der anleitung falsch aufgelistet....

änder mal alles wieder in der profile.php zurück Augenzwinkern

die gefixte anleitung hängt hier an (und nachher im download!)
mc_connor
hi!
darf man fragen was last.fm ist!?

gruß, mc_connor
DerZensor
Eine geniale Sache:

Du registrierst dich auf www.last.fm lädst das Plugin für deinen Mediaplayer herunter und ab sofort wird jeder Song, den du mit deinem Musikplayer hörst, in eine Internet-Datenbank übertragen.

http://www.last.fm/user/DerZensor (mein profil)

PS: Vielen Dank Casy, nun funktioniert alles perfekt Augenzwinkern
mc_connor
Zitat:
Original von DerZensor
Eine geniale Sache:

Du registrierst dich auf www.last.fm, lädst das Plugin für deinen Mediaplayer herunter und ab sofort wird jeder Song, den du mit deinem Musikplayer hörst, in eine Internet-Datenbank übertragen.

http://www.last.fm/user/DerZensor (mein profil)

PS: Vielen Dank Casy, nun funktioniert alles perfekt Augenzwinkern


vielen dank für die info... smile
werds mir mal anschauen!

gruß, mc_connor
hardcore-punk
Zitat:
Original von DerZensor
Eine geniale Sache:

Du registrierst dich auf www.last.fm lädst das Plugin für deinen Mediaplayer herunter und ab sofort wird jeder Song, den du mit deinem Musikplayer hörst, in eine Internet-Datenbank übertragen.

http://www.last.fm/user/DerZensor (mein profil)

PS: Vielen Dank Casy, nun funktioniert alles perfekt Augenzwinkern



Eigentlich hieß das früher Audioscrobbler und fürs Winamp gemacht, aber anscheinend erfreuten sich viele Menschen daran.. cool
dave_one
in der acp users.php kann ich kein ",avatarid)" finden^^ sondern das nur mit nem $ davor. was machen ?! Zunge raus


//habs gefunden danke Augenzwinkern hatte was verändert und es deswegen nicht sofort finden können smile


thx für den hack!!!


eine sache ist da nocht:


im profil funzt der link zu last.fm nicht, und zwar in der auflistung nach "homepage", ich füge die profile.php und die tpl mal bei smile
Cady
also ich erkenn keine fehler... Augenzwinkern der sollte so laufen
dave_one
läuft smile und willkommen auch von mir noch mal smile smile
LoveHateTragedy
super hack. funktioniert auch ganz gut nur kann ich nicht in der admin den usernamen ändern.

wie oft muss ich denn WHERE userid='$userid'",1); ersetzen? an allen stellen oder nur an der ersten?

ansonsten wüßte ich nicht woran es liegen könnte. user können einwandfrei den usernamen im profil eintragen.

edit. ich häng mal die users.php an


Edit3: falls es überhaupt jemanden interessiert. die Anleitung im download war falsch.... ein komma ist falsch was einen syntax error auswirft
huebi38104
Hallo, hab den Hack eingebaut, funktioniert super, nur jetzt hab ich folgenden Fehler wenn ich im ACP Daten eines Users ändern will:

code:
1:
2:
3:
4:
5:
6:
7:
8:
SQL-DATABASE ERROR

Database error in WoltLab Burning Board: Invalid SQL: UPDATE bb1_users SET username='IFOR',email='l.beese@gmx.de',groupid='4',rankid='5',title='',usertext='',signature='Mfg IFOR',icq='195092992',aim='',yim='',msn='l.beese@msn.de',homepage='http://www.das-altenheim.eu',birthday='1991-10-10',gender='1',showemail='1',admincanemail='1',usercanemail='1',invisible='0',usecookies='1',styleid='0',daysprune='0',timezoneoffset='1',dateformat='d.m.Y',timeformat='H:i',emailnotify='0',receivepm='1',emailonpm='0',pmpopup='0',umaxposts='0',showsignatures='1',showavatars='1',showimages='1',nosessionhash='1', blocked='0', avatarid = '346' lastfm='', WHERE userid='9'
mysql error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'lastfm='', WHERE userid='9'' at line 1
mysql error number: 1064
Date: 09.12.2007 @ 19:55
Script: /wbblite/acp/users.php
Referer: http://wssad.ws.funpic.de/wbblite/acp/users.php?action=edit&userid=9&sid= 


Jetzt muss ich alle Werte in der Datenbank direkt ändern -_-

Wie kann ich das fixen?

MfG Huebi
Cady
schau dir mal die syntax an, die du verwendest.. und zwar such in der acp/users.php nach

, WHERE userid=

und ersetz es durch

WHERE userid=
huebi38104
Ich hab es ersetzt, aber der Fehler besteht weiterhin:
code:
1:
2:
3:
4:
5:
6:
7:
8:
SQL-DATABASE ERROR

Database error in WoltLab Burning Board: Invalid SQL: UPDATE bb1_users SET username='user',email='user@user.de',groupid='3',rankid='',title='',usertext='',signature='',icq='0',aim='',yim='',msn='',homepage='',birthday='0000-00-00',gender='0',showemail='1',admincanemail='1',usercanemail='1',invisible='0',usecookies='1',styleid='0',daysprune='0',timezoneoffset='1',dateformat='d.m.Y',timeformat='H:i',emailnotify='0',receivepm='1',emailonpm='0',pmpopup='0',umaxposts='0',showsignatures='1',showavatars='1',showimages='1',nosessionhash='1', blocked='0', avatarid = '0' lastfm='', WHERE userid='11'
mysql error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'lastfm='', WHERE userid='11'' at line 1
mysql error number: 1064
Date: 09.12.2007 @ 20:32
Script: /wbblite/acp/users.php
Referer: http://wssad.ws.funpic.de/wbblite/acp/users.php?action=edit&userid=11&sid= 
Cady
dann hast du mehrere male es falsch eingebaut.. fröhlich häng die datei mal an, dann fix ich dir das schnell
huebi38104
Ich schau mal großes Grinsen