)
parser.set_defaults(command=commands.fetch_joinfediverse)
+ ### Fetch blocks from misskey.page ###
+ parser = subparser_command.add_parser(
+ "fetch_joinmisskey",
+ help="Fetches instances.json from misskey.page",
+ )
+ parser.set_defaults(command=commands.fetch_joinmisskey)
+
### Fetch blocks from fediverse.observer ###
parser = subparser_command.add_parser(
"fetch_observer",
logger.debug("Success! - EXIT!")
return 0
+def fetch_joinmisskey(args: argparse.Namespace) -> int:
+ logger.debug("args[]='%s' - CALLED!", type(args))
+
+ logger.debug("Invoking locking.acquire() ...")
+ locking.acquire()
+
+ source_domain = "instanceapp.misskey.page"
+ if sources.is_recent(source_domain):
+ logger.info("API from source_domain='%s' has recently being accessed - EXIT!", source_domain)
+ return 0
+ else:
+ logger.debug("source_domain='%s' has not been recently used, marking ...", source_domain)
+ sources.update(source_domain)
+
+ raw = utils.fetch_url(
+ f"https://{source_domain}/instances.json",
+ network.web_headers,
+ (config.get("connection_timeout"), config.get("read_timeout"))
+ ).text
+ logger.debug("raw()=%d,raw[]='%s'", len(raw), type(raw))
+
+ parsed = json.loads(raw)
+ logger.debug("parsed[%s]()=%d", type(parsed), len(parsed))
+
+ if "instancesInfos" not in parsed:
+ logger.warning("parsed()=%d does not contain element 'instancesInfos'")
+ return 1
+
+ logger.info("Checking %d instane(s) ...", len(parsed["instancesInfos"]))
+ for row in parsed["instancesInfos"]:
+ logger.debug("row[%s]='%s'", type(row), row)
+ if "url" not in row:
+ logger.warning("row()=%d does not have element 'url' - SKIPPED!", len(row))
+ continue
+ elif not utils.is_domain_wanted(row["url"]):
+ logger.debug("row[url]='%s' is not wanted - SKIPPED!", row["url"])
+ continue
+ elif instances.is_registered(row["url"]):
+ logger.debug("row[url]='%s' is already registered - SKIPPED!", row["url"])
+ continue
+
+ logger.info("Fetching row[url]='%s' ...", row["url"])
+ federation.fetch_instances(row["url"], "misskey.io", None, inspect.currentframe().f_code.co_name)
+
+ logger.debug("Success! - EXIT!")
+ return 0
+
def fetch_joinfediverse(args: argparse.Namespace) -> int:
logger.debug("args[]='%s' - CALLED!", type(args))