void Scrobbler::trackStarted( const Tomahawk::result_ptr& track ) { Q_ASSERT( QThread::currentThread() == thread() ); if ( m_reachedScrobblePoint ) { m_reachedScrobblePoint = false; scrobble(); } Tomahawk::InfoSystem::InfoStringHash trackInfo; trackInfo["title"] = track->track(); trackInfo["artist"] = track->artist()->name(); trackInfo["album"] = track->album()->name(); trackInfo["duration"] = QString::number( track->duration() ); trackInfo["albumpos"] = QString::number( track->albumpos() ); QVariantMap playInfo; playInfo["trackinfo"] = QVariant::fromValue< Tomahawk::InfoSystem::InfoStringHash >( trackInfo ); playInfo["private"] = TomahawkSettings::instance()->privateListeningMode(); Tomahawk::InfoSystem::InfoPushData pushData ( s_scInfoIdentifier, Tomahawk::InfoSystem::InfoSubmitNowPlaying, playInfo, Tomahawk::InfoSystem::PushNoFlag ); Tomahawk::InfoSystem::InfoSystem::instance()->pushInfo( pushData ); // liblastfm forces 0-length tracks to scrobble after 4 minutes, stupid. if ( track->duration() == 0 ) m_scrobblePoint = ScrobblePoint( 30 ); else m_scrobblePoint = ScrobblePoint( track->duration() / 2 ); }