From 6e02fda609ef1e97f891604e267daa2f9bf32cbb Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Sat, 12 Feb 2011 12:57:29 -0500 Subject: [PATCH] Successfully parse friend and mentions timelines --- src/settingsdialog.cpp | 2 ++ src/sip/twitter/twitter.cpp | 43 +++++++++++++++++++++++++++++++------ src/sip/twitter/twitter.h | 7 +++++- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index 2991be622..8b7ebc466 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -302,6 +302,8 @@ SettingsDialog::authenticateTwitter() ui->twitterStatusLabel->setText("Status: Credentials saved"); ui->twitterAuthenticateButton->setText( "Re-authenticate" ); ui->twitterInstructionsBox->setVisible( true ); + TomahawkSettings::instance()->setTwitterCachedFriendsSinceId( 0 ); + TomahawkSettings::instance()->setTwitterCachedMentionsSinceId( 0 ); TomahawkApp::instance()->sipHandler()->connectPlugins( false, "SIPTWITTER" ); } else diff --git a/src/sip/twitter/twitter.cpp b/src/sip/twitter/twitter.cpp index 4b8fe687d..60311d0d8 100644 --- a/src/sip/twitter/twitter.cpp +++ b/src/sip/twitter/twitter.cpp @@ -16,6 +16,8 @@ TwitterPlugin::TwitterPlugin() : SipPlugin() , m_isValid( false ) , m_checkTimer( this ) + , m_cachedFriendsSinceId( 0 ) + , m_cachedMentionsSinceId( 0 ) { m_checkTimer.setInterval( 60000 ); m_checkTimer.setSingleShot( false ); @@ -90,7 +92,9 @@ TwitterPlugin::connectAuthVerifyReply( const QTweetUser &user ) if ( !m_twitterAuth.isNull() ) { m_friendsTimeline = QWeakPointer( new QTweetFriendsTimeline( m_twitterAuth.data(), this ) ); + m_mentions = QWeakPointer( new QTweetMentions( m_twitterAuth.data(), this ) ); QObject::connect( m_friendsTimeline.data(), SIGNAL( parsedStatuses(const QList< QTweetStatus > &) ), SLOT( friendsTimelineStatuses(const QList &) ) ); + QObject::connect( m_mentions.data(), SIGNAL( parsedStatuses(const QList< QTweetStatus > &) ), SLOT( mentionsStatuses(const QList &) ) ); QMetaObject::invokeMethod( this, "checkTimerFired", Qt::DirectConnection ); } else @@ -106,27 +110,54 @@ TwitterPlugin::checkTimerFired() { if ( isValid() ) { - qint64 cachedfriendssinceid = TomahawkSettings::instance()->twitterCachedFriendsSinceId(); + if ( m_cachedFriendsSinceId == 0 ) + m_cachedFriendsSinceId = TomahawkSettings::instance()->twitterCachedFriendsSinceId(); if ( !m_friendsTimeline.isNull() ) - m_friendsTimeline.data()->fetch( cachedfriendssinceid, 0, 800 ); + m_friendsTimeline.data()->fetch( m_cachedFriendsSinceId, 0, 800 ); + + if ( m_cachedMentionsSinceId == 0 ) + m_cachedMentionsSinceId = TomahawkSettings::instance()->twitterCachedMentionsSinceId(); + if ( !m_mentions.isNull() ) + m_mentions.data()->fetch( m_cachedMentionsSinceId, 0, 800 ); } } void TwitterPlugin::friendsTimelineStatuses( const QList< QTweetStatus >& statuses ) { + qDebug() << "TwitterPlugin checking friends"; QRegExp regex( QString( "^(@[a-zA-Z0-9]+ )?Got Tomahawk\\?(.*)$" ) ); foreach( QTweetStatus status, statuses ) { + if ( status.id() > m_cachedFriendsSinceId ) + m_cachedFriendsSinceId = status.id(); QString statusText = status.text(); - qDebug() << "Performing matching on status text " << statusText; if ( regex.exactMatch( statusText ) ) { - qDebug() << "Found an exact matching Tweet from user " << status.user().screenName(); + qDebug() << "TwitterPlugin found an exact tweet from friend " << status.user().screenName(); } - else - qDebug() << "No match, matched length is " << regex.matchedLength(); } + + TomahawkSettings::instance()->setTwitterCachedFriendsSinceId( m_cachedFriendsSinceId ); +} + +void +TwitterPlugin::mentionsStatuses( const QList< QTweetStatus >& statuses ) +{ + qDebug() << "TwitterPlugin checking mentions"; + QRegExp regex( QString( "^(@[a-zA-Z0-9]+ )?Got Tomahawk\\?(.*)$" ) ); + foreach( QTweetStatus status, statuses ) + { + if ( status.id() > m_cachedMentionsSinceId ) + m_cachedMentionsSinceId = status.id(); + QString statusText = status.text(); + if ( regex.exactMatch( statusText ) ) + { + qDebug() << "TwitterPlugin found an exact matching mention from user " << status.user().screenName(); + } + } + + TomahawkSettings::instance()->setTwitterCachedMentionsSinceId( m_cachedMentionsSinceId ); } void diff --git a/src/sip/twitter/twitter.h b/src/sip/twitter/twitter.h index 96d7a855d..89d56f2cc 100644 --- a/src/sip/twitter/twitter.h +++ b/src/sip/twitter/twitter.h @@ -7,6 +7,7 @@ #include #include #include +#include #include "../sipdllmacro.h" #include "sip/SipPlugin.h" @@ -49,12 +50,16 @@ private slots: void connectAuthVerifyReply( const QTweetUser &user ); void checkTimerFired(); void friendsTimelineStatuses( const QList< QTweetStatus > &statuses ); + void mentionsStatuses( const QList< QTweetStatus > &statuses ); private: QWeakPointer m_twitterAuth; + QWeakPointer m_friendsTimeline; + QWeakPointer m_mentions; bool m_isValid; QTimer m_checkTimer; - QWeakPointer m_friendsTimeline; + qint64 m_cachedFriendsSinceId; + qint64 m_cachedMentionsSinceId; }; #endif