def display_results(url, dup_link=None, json_output=False): """ Display result page :param url: URL of the search result :param dup_link: URL to the duplicate question visited from :param json_output: JSON output flag :return: """ search.random_headers() res_page = requests.get(url, headers=search.header) search.captcha_check(res_page.url) question_title, question_desc, question_stats, answers, comments, dup_url = \ search.get_question_stats_and_answer_and_comments(url) if json_output: sys.stdout.write( urllib.parse.unquote( json.dumps({ 'title': question_title, 'desc': question_desc, 'stats': question_stats, 'answers': answers, 'comments': comments, 'dup_url': dup_url, }))) else: tui.display_header = tui.Header() tui.question_post = tui.QuestionPage( (url, question_title, question_desc, question_stats, answers, comments, dup_url, dup_link)) tui.MAIN_LOOP = tui.EditedMainLoop(tui.question_post, palette) tui.MAIN_LOOP.run()
def display_results(url): """ Display result page :param url: URL of the search result :return: """ search.random_headers() res_page = requests.get(url, headers=search.header) search.captcha_check(res_page.url) tui.display_header = tui.Header() question_title, question_desc, question_stats, answers = search.get_question_stats_and_answer(url) tui.question_post = tui.QuestionPage((answers, question_title, question_desc, question_stats, url)) tui.MAIN_LOOP = tui.EditedMainLoop(tui.question_post, palette) tui.MAIN_LOOP.run()
def socli_browse_interactive(query_tag): """ Interactive mode :return: """ if sys.platform == 'win32': return socli_browse_interactive_windows(query_tag) class SelectQuestionPage(urwid.WidgetWrap): def display_text(self, index, question): question_text, question_desc, _ = question text = [ ("warning", u"{}. {}\n".format(index, question_text)), question_desc + "\n", ] return text def __init__(self, questions): self.questions = questions self.cachedQuestions = [None for _ in range(10)] widgets = [self.display_text(i, q) for i, q in enumerate(questions)] self.questions_box = tui.ScrollableTextBox(widgets) self.header = tui.UnicodeText(('less-important', 'Select a question below:\n')) self.footerText = '0-' + str(len(self.questions) - 1) + ': select a question, any other key: exit.' self.errorText = tui.UnicodeText.to_unicode('Question numbers range from 0-' + str(len(self.questions) - 1) + ". Please select a valid question number.") self.footer = tui.UnicodeText(self.footerText) self.footerText = tui.UnicodeText.to_unicode(self.footerText) frame = urwid.Frame(header=self.header, body=urwid.Filler(self.questions_box, height=('relative', 100), valign='top'), footer=self.footer) urwid.WidgetWrap.__init__(self, frame) # Override parent method def selectable(self): return True def keypress(self, size, key): if key in '0123456789': try: question_url = self.questions[int(key)][2] self.footer.set_text(self.footerText) self.select_question(question_url, int(key)) except IndexError: self.footer.set_text(self.errorText) elif key in {'down', 'up'}: self.questions_box.keypress(size, key) else: raise urwid.ExitMainLoop() def select_question(self, url, index): if self.cachedQuestions[index] is not None: tui.question_post = self.cachedQuestions[index] tui.MAIN_LOOP.widget = tui.question_post else: if not search.google_search: url = search.so_url + url question_title, question_desc, question_stats, answers = search.get_question_stats_and_answer(url) question_post = tui.QuestionPage((answers, question_title, question_desc, question_stats, url)) self.cachedQuestions[index] = question_post tui.MAIN_LOOP.widget = question_post tui.display_header = tui.Header() try: if search.google_search: questions = search.get_questions_for_query_google(query) else: # print('hurr') questions = search.get_questions_for_query(query_tag) # print(questions) question_page = SelectQuestionPage(questions) tui.MAIN_LOOP = tui.EditedMainLoop(question_page, printer.palette) tui.MAIN_LOOP.run() except UnicodeEncodeError: printer.print_warning("\n\nEncoding error: Use \"chcp 65001\" command before using socli...") sys.exit(0) except requests.exceptions.ConnectionError: printer.print_fail("Please check your internet connectivity...") except Exception as e: printer.showerror(e) # print("Hurra") print("exiting...") sys.exit(0)