id = "maigret" name = "Maigret" homepage = "https://github.com/soxoj/maigret" description = "Collect a dossier on a person by username from thousands of sites." # The project's own logo, from its repository. icon = "https://raw.githubusercontent.com/soxoj/maigret/main/static/maigret.png" executables = ["maigret"] [dotfiles] # maigret/settings.py, SETTINGS_FILES_PATHS: the bundled # resources/settings.json, then '/etc/maigret/settings.json', then # path.expanduser('~/.maigret/settings.json'), then a settings.json in the # working directory. Only the third is per-user. The documented behaviour # matches: https://maigret.readthedocs.io/en/latest/settings.html. paths = ["~/.maigret/settings.json"] # maigret/db_updater.py: MAIGRET_HOME = path.expanduser("~/.maigret") and # CACHED_DB_PATH = path.join(MAIGRET_HOME, "data.json") — the 3,000-site # database Maigret re-downloads whenever a newer one is published. Derived # data, not configuration. exclude = ["~/.maigret/data.json"] # maigret/activation.py: ACTIVATION_CACHE_PATH = path.join(MAIGRET_HOME, # "activation.json"), written through os.open(..., 0o600). It caches the # session tokens Maigret obtains from sites that require activation. secret = ["~/.maigret/activation.json"] # Read once at startup by a process that then runs one search. side_effect = false # maigret/resources/settings.json ships "openai_api_key": "" alongside # openai_model and openai_api_base_url, filled in by users who run the --ai # analysis mode. The rest of the file — timeouts, report formats, site lists — # is ordinary configuration, so only the key itself is lifted out. [[dotfiles.secret_paths]] file = "~/.maigret/settings.json" match = { key_path = ["openai_api_key"] } # cookie_jar_file names a cookies file by absolute path on the machine that # exported it. The proxy URLs next to it are not listed: tor_proxy_url and # i2p_proxy_url default to loopback addresses that are the same everywhere, # and proxy_url is a preference a user generally does want to carry. The jar # path is the user's own doing and worth keeping to rebuild this machine, so it # is stored for this device instead of being thrown away. [[dotfiles.machine_lines]] file = "~/.maigret/settings.json" match = { key_path = ["cookie_jar_file"] } scope = "backup" [commands] format = 1 label = "Search usernames" description = "Search sites for one or more usernames and optionally write reports. Proxy, database, submit and debug options are left out." quality = "ai-draft" base = "fig:maigret" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/maigret.ts" license = "MIT" [[commands.field]] id = "usernames" label = "Usernames" type = "string" position = 0 multiple = true sources = ["fig"] [[commands.field]] id = "all_sites" label = "Use all sites" type = "boolean" option = ["--all-sites", "-a"] sources = ["fig"] [[commands.field]] id = "timeout" label = "Request timeout (seconds)" type = "integer" option = ["--timeout"] sources = ["fig"] [[commands.field]] id = "retries" label = "Retries" type = "integer" option = ["--retries"] sources = ["fig"] [[commands.field]] id = "no_recursion" label = "Disable recursive search" type = "boolean" option = ["--no-recursion"] sources = ["fig"] [[commands.field]] id = "tags" label = "Site tags" type = "string" option = ["--tags"] sources = ["fig"] [[commands.field]] id = "csv" label = "CSV report" type = "boolean" option = ["--csv", "-C"] sources = ["fig"] [[commands.field]] id = "html" label = "HTML report" type = "boolean" option = ["--html", "-H"] sources = ["fig"] [[commands.field]] id = "pdf" label = "PDF report" type = "boolean" option = ["--pdf", "-P"] sources = ["fig"] [[commands.field]] id = "txt" label = "TXT report" type = "boolean" option = ["--txt", "-T"] sources = ["fig"] [[commands.field]] id = "folder_output" label = "Reports folder" type = "path" option = ["--folderoutput", "-fo"] path = { kind = "directory", role = "output" } sources = ["fig"] [[commands.task]] id = "quick" label = "Quick search" fields = ["usernames"] required = ["usernames"] [[commands.task]] id = "full_report" label = "All sites with HTML report" fields = ["usernames", "all_sites", "html"] required = ["usernames"] set = { all_sites = [true], html = [true] } [[commands.group]] id = "basic" label = "Basic" fields = ["usernames", "all_sites", "tags", "html", "pdf", "csv", "txt"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["timeout", "retries", "no_recursion", "folder_output"]