def fetch( self, since=None ): rss = feedparser.parse( self.serviceAccount.url ) print "-- %s [%s]. %d items" % ( self.serviceAccount.url, since if since else "ALL_TIME", len( rss['entries'] ) ) for entry in rss['entries']: timestamp = to_timestamp( entry['updated_parsed'] ) + 3600 # TODO if timestamp > since: print " `-- %s [%s]" % ( entry.title, from_timestamp( timestamp ) ) if entry['summary_detail']['type'] == 'text/html': body = strip_tags( entry['summary_detail']['value'] ) # TODO rest of types else: body = entry['summary_detail']['value'] image_url = None if entry.has_key( 'enclosures' ): for enclosure in entry['enclosures']: if "image/" in enclosure['type']: image_url = enclosure['href'] entry, created = RSSEntry.objects.get_or_create( account = self.serviceAccount, date_added = from_timestamp( timestamp ), title = entry['title'], url = entry['link'], image_url = image_url, body = body ) if created: self.fetched( entry )
def fetch( self, since=None ): client = twitter.Api() posts = client.GetUserTimeline( self.serviceAccount.username ) self.logger.info( "-- %s [%s]. %d items" % ( self.serviceAccount.username, since if since else "ALL_TIME", len( posts ) ) ) for post in posts: user = post.GetUser() id = post.GetId() body = post.GetText() timestamp = post.GetCreatedAtInSeconds() + user.utc_offset if timestamp > since: self.logger.info(" `-- %s [%s]" % ( body, from_timestamp( timestamp ) ) ) user, created = TwitterUser.objects.get_or_create( screen_name = user.screen_name, name = user.name ) post, created = TwitterPost.objects.get_or_create( account = self.serviceAccount, date_added = from_timestamp( timestamp ), body = body, user = user ) if created: self.fetched( post )
def fetch( self, since=None ): network = pylast.get_lastfm_network( api_key = settings.LASTFM_API_KEY, api_secret = settings.LASTFM_API_SECRET ) lasftmUser = network.get_user( self.serviceAccount.username ) friends = lasftmUser.get_friends() friends.append( lasftmUser ) for friend in friends: try: friend_mbid = friend.get_id() friend_name = friend.get_name() try: friend_user = LastfmUser.objects.get( mbid = friend_mbid ) except LastfmUser.DoesNotExist: friend_user = LastfmUser( mbid = friend_mbid, url = "http://last.fm/user/%s" % friend_name, image_url = friend.get_image(), username = friend_name ) friend_user.save() recent_tracks = friend.get_recent_tracks( since=since, limit=15 ) print "-- %s [%s]. %d items" % ( friend, since if since else "ALL_TIME", len( recent_tracks ) ) for recent in recent_tracks: print " `-- %s [%s]" % ( recent.track, from_timestamp( recent.timestamp ) ) track_artist = recent.track.get_artist() artist_mbid = track_artist.get_mbid() if artist_mbid is None: artist_mbid = track_artist.name try: artist = LastfmArtist.objects.get( mbid = artist_mbid ) except LastfmArtist.DoesNotExist: artist = LastfmArtist( mbid = artist_mbid, url = track_artist.get_url(), image_url = track_artist.get_cover_image(), name = track_artist.get_name() ) artist.save() track = recent.track track_mbid = track.get_id() track_album = track.get_album() try: track = LastfmTrack.objects.get( mbid = track_mbid ) except LastfmTrack.DoesNotExist: track = LastfmTrack( mbid = track_mbid, url = track.get_url(), image_url = track_album.get_cover_image() if track_album else track_artist.get_cover_image(), artist = artist, title = track.get_title(), duration = track.get_duration(), streamable = track.is_streamable() ) track.save() post, created = LastfmFriendListen.objects.get_or_create( account = self.serviceAccount, date_added = from_timestamp( recent.timestamp ), friend = friend_user, track = track ) if created: self.fetched( post ) except pylast.WSError: pass