refactored get_mastodon_blocks

This commit is contained in:
Enju Aihara 2022-04-08 23:12:01 +02:00
parent 433bcd3f00
commit 46cf65678e

View file

@ -8,24 +8,36 @@ headers = {
} }
def get_mastodon_blocks(domain: str) -> dict: def get_mastodon_blocks(domain: str) -> dict:
try: blocks = {
reject = [] "Suspended servers": [],
media_removal = [] "Filtered media": [],
federated_timeline_removal = [] "Limited servers": [],
"Silenced servers": [],
}
try:
doc = BeautifulSoup(
get(f"https://{domain}/about/more", headers=headers, timeout=5).text,
"html.parser",
)
except:
return {}
doc = BeautifulSoup(get(f"https://{domain}/about/more", headers=headers, timeout=5).text, "html.parser")
for header in doc.find_all("h3"): for header in doc.find_all("h3"):
if header.text == "Suspended servers":
for line in header.find_next_siblings("table")[0].find_all("tr")[1:]: for line in header.find_next_siblings("table")[0].find_all("tr")[1:]:
reject.append({"domain": line.find("span").text, "hash": line.find("span")["title"][9:], "reason": line.find_all("td")[1].text.strip()}) if header.text in blocks:
elif header.text == "Filtered media": blocks[header.text].append(
for line in header.find_next_siblings("table")[0].find_all("tr")[1:]: {
media_removal.append({"domain": line.find("span").text, "hash": line.find("span")["title"][9:], "reason": line.find_all("td")[1].text.strip()}) "domain": line.find("span").text,
elif header.text in ["Limited servers", "Silenced servers"]: "hash": line.find("span")["title"][9:],
for line in header.find_next_siblings("table")[0].find_all("tr")[1:]: "reason": line.find_all("td")[1].text.strip(),
federated_timeline_removal.append({"domain": line.find("span").text, "hash": line.find("span")["title"][9:], "reason": line.find_all("td")[1].text.strip()}) }
finally: )
return {"reject": reject, "media_removal": media_removal, "federated_timeline_removal": federated_timeline_removal} return {
"reject": blocks["Suspended servers"],
"media_removal": blocks["Filtered media"],
"federated_timeline_removal": blocks["Limited servers"] + blocks["Silenced servers"],
}
def get_type(domain: str) -> str: def get_type(domain: str) -> str: