コード例 #1
0
ファイル: views.py プロジェクト: mpac/deeptweet
def search(item):
	spellings = ItemSpelling.objects.filter(item = item.id, item__active = True)

	modifiers = eval(item.modifier.data)
	radius = eval(item.radius.data)

	log.debug('MODIFIERS: ' + ', '.join(modifiers))

	for modifier in modifiers:
		log.debug('MODIFIER: ' + modifier)
		# continue

		for spelling in spellings:			
			if len(modifier):
				search_text = spelling.text + ' ' + modifier
				geocode = ()
			else:
				search_text = spelling.text

				if radius:
					geocode = radius
				else:
					geocode = ()

			log.debug('SEARCH TEXT: ' + search_text)
			log.debug('RADIUS DATA LENGTH: %d' % (len(geocode)))

			search_log = SearchLog.objects.filter(
				item = item.id, spelling = spelling.text, modifier = modifier,
				radius = item.radius
			).order_by(
				'-last_twitter_id'
			)

			if search_log:
				twitter_since_id = search_log[0].last_twitter_id
			else:
				twitter_since_id = None

			log.debug('SINCE TWEET ID: ' + str(twitter_since_id))

			search = None
			search_error = False

			try:
				search = api.GetSearch(
					search_text, per_page = 100,
					geocode = geocode, since_id = twitter_since_id
				)
			except:
				search_error = True

			if search_error:
				try:
					search = api.GetSearch(
						search_text, per_page = 100,
						geocode = geocode
					)
				except:
					pass

			if search and len(search) > 0:
				# Save record of search.

				first_search_id = search[len(search) - 1].id
				last_search_id = search[0].id

				log.debug('FIRST TWEET ID: %d' % (first_search_id))
				log.debug('LAST TWEET ID: %d' % (last_search_id))

				search_log = SearchLog()

				search_log.item = item
				search_log.spelling = spelling.text
				search_log.modifier = modifier
				search_log.radius = item.radius

				search_log.amount = len(search)
				search_log.maximum = 100

				search_log.first_twitter_id = str(first_search_id)
				search_log.last_twitter_id = str(last_search_id)

				search_log.save()

			for s in search:
				# print s
				# continue

				handler.save_new_tweet(s, modifier, radius, item, spelling)