Esempio n. 1
0
	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 )
Esempio n. 2
0
	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 )
Esempio n. 3
0
	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