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