úÎ#Ÿ ¿ Safe-Infered-Server response. @The source of the track. Required, must be one of the following  codes: DPlease note, for the time being, sources other than P and L are not  supported. Source unknown. 6Last.fm (any mode). In this case, the 5-digit Last.fm : recommendation key must be appended to this source ID to 4 prove the validity of the submission (for example,   o[0]=L1b48a). +Personalised recommendation except Last.fm  (e.g. Pandora, Launchcast) Non-personalised broadcast  (e.g. Shoutcast, BBC Radio 1) Chosen by the user A rating of a track. >Note: Currently, a web-service must also be called to set love/ban B status. We anticipate that this will be phased out soon, and the 3 submission service will handle the whole process. Skip (only if source=L). 5Ban (only if source=L). This implies a skip, and the : client should skip to the next track when a ban happens. 5Love (on any mode if the user has manually loved the  track). This implies a listen. A track submission.  Artist name.  Track title. Track timestamp. Source of track. Rating (if any). Track length (if any). Album (if any). "Track position in album (if any). MusicBrainz track id (if any). A now playing track.  Artist name.  Track title. Album name (if any). $Track length in seconds (if known). Track position (if known). !MusicBrainz track id (if known). A scrobbling session. $Does the session require handshake? Version of the protocol. Client (music player's) id. !Client version. " Username. #Timestamp of connection. $Session token. %Event handlers. &Initial connection hand-shake. 'Session expiry. (Now-playing notification. )Played tracks submission. *Server configuration. +Port to listen on. ,5Host name used for server (probably just localhost). -:Number of seconds of inactivity before a session expires. 7./012 3 45 !"#$%6&'()*7+,-7./012 3 45 !"#$%6&'()*7+,-210/. 3 45 !"#$%6&'()*7+,- Safe-InferedStart a scrobbling server. 8      !"#$%&'()*+,-./012345 (-6scrobble-0.1.0.1Scrobble.ServerScrobble.TypesstartScrobbleServerResponseSourceUnknownLastFm PersonalizedNonPersonlizedBroadcast UserChosenRatingSkipBanLove Submission subArtistsubTrack subTimestamp subSource subRating subLengthsubAlbum subPositionsubMusicBrainz NowPlayingnpArtistnpTracknpAlbumnpLength npPosition npMusicBrainzSession sesHandshake sesVersion sesClientId sesClientVersesUser sesTimestampsesTokenHandlershandleHandshake handleExpirehandleNowPlayinghandleSubmissionsConfigcfgPortcfgHost cfgExpire BADSESSIONFAILEDBADAUTHBANNEDOK