def post(self): self.response.headers['Content-Type'] = 'text/plain' data = json.loads(self.request.body) eventCriterion = globalconfig.getEventCriterion() twitterAccount = globalconfig.getTwitterAccount() key = data['key'] if key == 'sites': sitePages = snapi.getSitePages() matchedWords = _saveWords(key, data['words'], sitePages) heapi.summarizeEvents(eventCriterion, key, matchedWords, sitePages, twitterAccount) elif key == 'chartses': chartsPages = snapi.getChartsPages() matchedWords = _saveWords(key, data['words'], chartsPages) heapi.summarizeEvents(eventCriterion, key, matchedWords, chartsPages, twitterAccount) else: channel = globalconfig.getChannel(key) if not channel: logging.warn('Channel %s does not exist.' % (channel, )) elif not channel.get('tags'): logging.warn('Channel %s has no tags.' % (channel, )) else: sitePages = snapi.getSitePages() channelPages = snapi.getPagesByTags(sitePages, channel.get('tags')) if channelPages: matchedWords = _saveWords(key, data['words'], channelPages) heapi.summarizeEvents(eventCriterion, key, matchedWords, channelPages, twitterAccount) self.response.out.write('Done.')
def get(self, keyword): pages = [] spages = [] words = [] if keyword: import jieba # May fail to load jieba jieba.initialize(usingSmall=True) words = list(jieba.cut(keyword, cut_all=False)) words = [ word for word in words if len(word) > 1 ] # words = list(jieba.cut_for_search(keyword)) keyword = stringutil.parseUnicode(keyword) pages = snapi.getAllPages() pages = globalutil.search(pages, words) globalutil.populateSourceUrl(pages) twitterAccount = globalconfig.getTwitterAccount() spages = bs.search(words[0], twitterAccount) templateValues = { 'keyword': keyword, 'pages': pages, 'spages': spages, 'words': words, } self.render(templateValues, 'search.html')