Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- Fetch threads on Linguistics SE in which an OP answered their own question.
- Author: lemontree @StackExchange
- Python 3.8
- """
- # SE API doc: https://api.stackexchange.com/docs
- import requests
- results = []
- # specify which fields to include in the JSON response by creating a filter once
- # https://api.stackexchange.com/docs/create-filter
- filter = "!7wv08ifTL0xgF0gijVo7fRLBHujNWPSxGl"
- # qfilter = requests.get("https://api.stackexchange.com/2.2/filters/create?unsafe=false&filter=" + filter)
- # define query parameters
- parameters = {
- "order": "desc",
- "sort": "activity",
- "fromdate": 1420070400, # only questions from 01-01-2015 and later
- "pagesize": 50,
- "site": "linguistics",
- "filter": filter
- }
- # questions have to be fetched page-wise
- last_page = 157 # last page under highest questions per page number (50)
- for page_nr in range(1, last_page+1):
- parameters["page"] = page_nr
- # request questions on current page
- questions = requests.get("https://api.stackexchange.com/2.2/questions", params=parameters).json()["items"]
- for q in questions:
- title = q["title"]
- asker_id = q["owner"]["user_id"] if "owner" in q and "user_id" in q["owner"] else None
- asker_nm = q["owner"]["display_name"] if "owner" in q and "display_name" in q["owner"] else None
- answers = q["answers"] if "answers" in q else []
- for a in answers:
- link = a["link"]
- answerer_id = a["owner"]["user_id"] if "owner" in a and "user_id" in a["owner"] else None
- answerer_nm = a["owner"]["display_name"] if "owner" in a and "display_name" in a["owner"] else None
- votes = a["score"]
- # positive score and answerer == asker: add to results
- if votes > 0 and \
- (answerer_id is not None and answerer_id == asker_id or
- answerer_nm is not None and answerer_nm == asker_nm):
- results.append((title, link, votes))
- # print the top 10 results in Markdown format sorted by score on answer
- for res in sorted(results, key=lambda tpl: tpl[2], reverse=True)[:10]:
- title = res[0]
- link = res[1]
- print(" - " + "[" + title + "]" + "(" + link + ")")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement