{"id":13594406,"url":"https://github.com/mastotron/mastotron","last_synced_at":"2025-12-24T23:01:45.532Z","repository":{"id":65294024,"uuid":"581617358","full_name":"mastotron/mastotron","owner":"mastotron","description":"A different interface to mastodon, and other experiments in social media","archived":false,"fork":false,"pushed_at":"2023-02-20T23:03:32.000Z","size":20149,"stargazers_count":128,"open_issues_count":10,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-04-13T12:57:41.838Z","etag":null,"topics":["gui","macos","mastodon","python","social-media","social-network"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mastotron.png","metadata":{"files":{"readme":"README.ipynb","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-12-23T18:21:17.000Z","updated_at":"2023-11-07T13:02:18.000Z","dependencies_parsed_at":"2023-07-26T09:13:43.379Z","dependency_job_id":null,"html_url":"https://github.com/mastotron/mastotron","commit_stats":{"total_commits":119,"total_committers":1,"mean_commits":119.0,"dds":0.0,"last_synced_commit":"4752c0b67848cb5a68e66665100268fbaca93b4c"},"previous_names":["quadrismegistus/mastotron"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mastotron%2Fmastotron","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mastotron%2Fmastotron/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mastotron%2Fmastotron/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mastotron%2Fmastotron/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mastotron","download_url":"https://codeload.github.com/mastotron/mastotron/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248556861,"owners_count":21124156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gui","macos","mastodon","python","social-media","social-network"],"created_at":"2024-08-01T16:01:33.003Z","updated_at":"2025-12-24T23:01:40.494Z","avatar_url":"https://github.com/mastotron.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"{\n \"cells\": [\n  {\n   \"attachments\": {},\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# mastotron\\n\",\n    \"\\n\",\n    \"Experiments in algorithmifying mastodon\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\\n\",\n       \"\u003cdiv class=\\\"post reblog\\\" style=\\\"border:1px solid blue; padding: 0 1em;\\\"\u003e\\n\",\n       \"\u003cp\u003e\\n\",\n       \"\u003ca href=\\\"https://ausglam.space/@ingridbmason\\\"\u003eingridbmason@ausglam.space\u003c/a\u003e (382 👥) reposted at 12/24/2022 at 10:23:22:\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\u003cdiv class=\\\"post origpost\\\" style=\\\"border:1px solid orange;padding:0 1em;\\\"\u003e\\n\",\n       \"\u003cp\u003e\\n\",\n       \"\u003ca href=\\\"https://mastodon.social/@acb\\\"\u003eacb@mastodon.social\u003c/a\u003e (379 👥) \u003ca href=\\\"https://mastodon.social/@acb/109567809376185861\\\"\u003ewrote\u003c/a\u003e on 12/24/2022 at 08:54:51:\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\u003cp\u003eRT @luismbat@birbsite\u003c/p\u003e\u003cp\u003eWho would have thought that adding a Sierpinski Triangle Fractal as musical notes would actually sound good!😅\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\u003ccenter\u003e\u003ca href=\\\"https://cdn.masto.host/zirkus/cache/media_attachments/files/109/568/001/032/675/283/small/0d3117c3854cbcce.png\\\"\u003e\u003cimg src=\\\"https://cdn.masto.host/zirkus/cache/media_attachments/files/109/568/001/032/675/283/small/0d3117c3854cbcce.png\\\" /\u003e\u003c/a\u003e\u003c/center\u003e\\n\",\n       \"\\n\",\n       \"\u003cp\u003e\\n\",\n       \"3 🗣\\n\",\n       \"\u0026nbsp; | \u0026nbsp; \\n\",\n       \"25 🔁\\n\",\n       \"\u0026nbsp; | \u0026nbsp;\\n\",\n       \"0 💙\\n\",\n       \"\u0026nbsp; | \u0026nbsp;\\n\",\n       \"Post ID: 109567809382202427\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\u003c/div\u003e\\n\",\n       \"\\n\",\n       \"\u003cbr/\u003e\\n\",\n       \"\\n\",\n       \"\u003c/div\u003e\\n\"\n      ],\n      \"text/plain\": [\n       \"Post(id=109568157841720925)\"\n      ]\n     },\n     \"execution_count\": 1,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# load the class\\n\",\n    \"from mastotron import Mastotron, Post\\n\",\n    \"\\n\",\n    \"# instantiate; will guide through auth\\n\",\n    \"tron = Mastotron()\\n\",\n    \"\\n\",\n    \"# get latest post\\n\",\n    \"post = tron.latest_post()\\n\",\n    \"post\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\\n\",\n       \"\u003cdiv class=\\\"post origpost\\\" style=\\\"border:1px solid orange;padding:0 1em;\\\"\u003e\\n\",\n       \"\u003cp\u003e\\n\",\n       \"\u003ca href=\\\"https://mstdn.science/@RebeccaRHelm\\\"\u003eRebeccaRHelm@mstdn.science\u003c/a\u003e (1,157 👥) \u003ca href=\\\"https://mstdn.science/@RebeccaRHelm/109566221656683705\\\"\u003ewrote\u003c/a\u003e on 12/24/2022 at 02:11:04:\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\u003cp\u003eEXTREMELY RARE footage of the elusive box jellyfish Chirodectes. Larger than a soccer ball, this jelly is a true ocean mystery, and this video is one of the only in existence, filmed off the coast of Papua New Guinea in 2021.\u003cbr\u003e📽️Scuba Ventures Kavieng bit.ly/3FE29tL\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\u003ccenter\u003e\u003ca href=\\\"https://cdn.masto.host/zirkus/cache/media_attachments/files/109/566/221/923/419/468/small/f0a9cc7c3910417e.png\\\"\u003e\u003cimg src=\\\"https://cdn.masto.host/zirkus/cache/media_attachments/files/109/566/221/923/419/468/small/f0a9cc7c3910417e.png\\\" /\u003e\u003c/a\u003e\u003c/center\u003e\\n\",\n       \"\\n\",\n       \"\u003cp\u003e\\n\",\n       \"11 🗣\\n\",\n       \"\u0026nbsp; | \u0026nbsp; \\n\",\n       \"77 🔁\\n\",\n       \"\u0026nbsp; | \u0026nbsp;\\n\",\n       \"4 💙\\n\",\n       \"\u0026nbsp; | \u0026nbsp;\\n\",\n       \"Post ID: 109566222383974657\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\u003c/div\u003e\\n\"\n      ],\n      \"text/plain\": [\n       \"Post(id=109566222383974657)\"\n      ]\n     },\n     \"execution_count\": 2,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Get a post by id on your server\\n\",\n    \"post = Post(id=109566222383974657)\\n\",\n    \"post\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\\n\",\n       \"\u003cdiv class=\\\"post reblog\\\" style=\\\"border:1px solid blue; padding: 0 1em;\\\"\u003e\\n\",\n       \"\u003cp\u003e\\n\",\n       \"\u003ca href=\\\"https://zirk.us/@accommodatingly\\\"\u003eaccommodatingly\u003c/a\u003e (287 👥) reposted at 12/23/2022 at 23:51:23:\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\u003cdiv class=\\\"post origpost\\\" style=\\\"border:1px solid orange;padding:0 1em;\\\"\u003e\\n\",\n       \"\u003cp\u003e\\n\",\n       \"\u003ca href=\\\"https://strangeobject.space/@esther\\\"\u003eesther@strangeobject.space\u003c/a\u003e (1,367 👥) \u003ca href=\\\"https://strangeobject.space/@esther/109563512148655648\\\"\u003ewrote\u003c/a\u003e on 12/23/2022 at 14:42:00:\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\u003cp\u003eThinking of all the queer folks who have to spend the holidays with abusive, unaccepting, unsupportive, or “well meaning” but careless relatives. It’s an especially dark time for many who can’t escape those situations because they’re minors, financially dependent, or under emotional pressure to attend.\u003c/p\u003e\u003cp\u003eIf you’re out there, struggling, and need a friendly voice, feel free to drop a DM. I’m happy to be your trans goth aunt for a bit.\u003c/p\u003e\u003cp\u003e\u003ca href=\\\"https://strangeobject.space/tags/queer\\\" class=\\\"mention hashtag\\\" rel=\\\"nofollow noopener noreferrer\\\" target=\\\"_blank\\\"\u003e#\u003cspan\u003equeer\u003c/span\u003e\u003c/a\u003e \u003ca href=\\\"https://strangeobject.space/tags/trans\\\" class=\\\"mention hashtag\\\" rel=\\\"nofollow noopener noreferrer\\\" target=\\\"_blank\\\"\u003e#\u003cspan\u003etrans\u003c/span\u003e\u003c/a\u003e \u003ca href=\\\"https://strangeobject.space/tags/holidays\\\" class=\\\"mention hashtag\\\" rel=\\\"nofollow noopener noreferrer\\\" target=\\\"_blank\\\"\u003e#\u003cspan\u003eholidays\u003c/span\u003e\u003c/a\u003e \u003ca href=\\\"https://strangeobject.space/tags/support\\\" class=\\\"mention hashtag\\\" rel=\\\"nofollow noopener noreferrer\\\" target=\\\"_blank\\\"\u003e#\u003cspan\u003esupport\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\u003ccenter\u003e\u003c/center\u003e\\n\",\n       \"\\n\",\n       \"\u003cp\u003e\\n\",\n       \"12 🗣\\n\",\n       \"\u0026nbsp; | \u0026nbsp; \\n\",\n       \"60 🔁\\n\",\n       \"\u0026nbsp; | \u0026nbsp;\\n\",\n       \"4 💙\\n\",\n       \"\u0026nbsp; | \u0026nbsp;\\n\",\n       \"Post ID: 109563512620764058\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\u003c/div\u003e\\n\",\n       \"\\n\",\n       \"\u003cbr/\u003e\\n\",\n       \"\\n\",\n       \"\u003c/div\u003e\\n\"\n      ],\n      \"text/plain\": [\n       \"Post(id=109565672404848243)\"\n      ]\n     },\n     \"execution_count\": 3,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# These will show reposts/boosts:\\n\",\n    \"post = Post(id=109565672404848243)\\n\",\n    \"post\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"(Post(id=109565672404848243), Post(id=109563512620764058))\"\n      ]\n     },\n     \"execution_count\": 4,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# the post and boosted post\\n\",\n    \"post, post.is_boost_of\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\\n\",\n       \"\u003cdiv class=\\\"post origpost\\\" style=\\\"border:1px solid orange;padding:0 1em;\\\"\u003e\\n\",\n       \"\u003cp\u003e\\n\",\n       \"\u003ca href=\\\"https://zirk.us/@heuser\\\"\u003eheuser\u003c/a\u003e (235 👥) \u003ca href=\\\"https://zirk.us/@heuser/109564529870067074\\\"\u003ewrote\u003c/a\u003e on 12/23/2022 at 19:00:50:\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\u003cp\u003eUnexpected challenge: there are very few likes on tweets in my mastodon timeline. (step that up pls everyone thx.) So it\u0026#39;s hard to sort the tweets using that metric.\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\u003ccenter\u003e\u003c/center\u003e\\n\",\n       \"\\n\",\n       \"\u003cp\u003e\\n\",\n       \"1 🗣\\n\",\n       \"\u0026nbsp; | \u0026nbsp; \\n\",\n       \"0 🔁\\n\",\n       \"\u0026nbsp; | \u0026nbsp;\\n\",\n       \"2 💙\\n\",\n       \"\u0026nbsp; | \u0026nbsp;\\n\",\n       \"Post ID: 109564529870067074\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\u003cp\u003e\u003cb\u003e\u003ci\u003e... in reply to:\u003c/i\u003e\u003c/b\u003e\u003c/p\u003e \\n\",\n       \"\u003cdiv class=\\\"post origpost\\\" style=\\\"border:1px solid orange;padding:0 1em;\\\"\u003e\\n\",\n       \"\u003cp\u003e\\n\",\n       \"\u003ca href=\\\"https://zirk.us/@heuser\\\"\u003eheuser\u003c/a\u003e (235 👥) \u003ca href=\\\"https://zirk.us/@heuser/109564459673004810\\\"\u003ewrote\u003c/a\u003e on 12/23/2022 at 18:42:58:\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\u003cp\u003eExperimenting with making an \u0026quot;algorithm\u0026quot; to sort a user\u0026#39;s feed using python and mastodon.py. This tweet was sent from a jupyter notebook.\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\u003ccenter\u003e\u003c/center\u003e\\n\",\n       \"\\n\",\n       \"\u003cp\u003e\\n\",\n       \"1 🗣\\n\",\n       \"\u0026nbsp; | \u0026nbsp; \\n\",\n       \"1 🔁\\n\",\n       \"\u0026nbsp; | \u0026nbsp;\\n\",\n       \"3 💙\\n\",\n       \"\u0026nbsp; | \u0026nbsp;\\n\",\n       \"Post ID: 109564459673004810\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\u003c/div\u003e\\n\",\n       \"\u003cbr/\u003e \\n\",\n       \"\u003c/div\u003e\\n\"\n      ],\n      \"text/plain\": [\n       \"Post(id=109564529870067074)\"\n      ]\n     },\n     \"execution_count\": 5,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# And replies\\n\",\n    \"post = Post(id=109564529870067074)\\n\",\n    \"post\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"(Post(id=109564529870067074), Post(id=109564459673004810))\"\n      ]\n     },\n     \"execution_count\": 6,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# the replied-to post\\n\",\n    \"post, post.is_reply_to\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"True\"\n      ]\n     },\n     \"execution_count\": 7,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# these can be chained\\n\",\n    \"Post(id=109564658606466762).is_reply_to.is_reply_to.is_reply_to.id == post.id\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Scoring posts\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"{'Simple': 1.7320508075688774,\\n\",\n       \" 'ExtendedSimple': 1.8171205928321397,\\n\",\n       \" 'SimpleWeighted': 0.11274690420042434,\\n\",\n       \" 'ExtendedSimpleWeighted': 0.11828447555082267,\\n\",\n       \" 'All': 0.4526308886948211}\"\n      ]\n     },\n     \"execution_count\": 8,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Get scores for a post \\n\",\n    \"# (adapted from https://github.com/hodgesmr/mastodon_digest)\\n\",\n    \"post.scores()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"\\n\",\n       \"\u003cdiv class=\\\"post reblog\\\" style=\\\"border:1px solid blue; padding: 0 1em;\\\"\u003e\\n\",\n       \"\u003cp\u003e\\n\",\n       \"\u003ca href=\\\"https://zirk.us/@ecourtem\\\"\u003eecourtem\u003c/a\u003e (346 👥) reposted at 12/23/2022 at 14:53:21:\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\u003cdiv class=\\\"post origpost\\\" style=\\\"border:1px solid orange;padding:0 1em;\\\"\u003e\\n\",\n       \"\u003cp\u003e\\n\",\n       \"\u003ca href=\\\"https://mstdn.social/@lolennui\\\"\u003elolennui@mstdn.social\u003c/a\u003e (5,061 👥) \u003ca href=\\\"https://mstdn.social/@lolennui/109560660969613944\\\"\u003ewrote\u003c/a\u003e on 12/23/2022 at 02:36:55:\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\u003cp\u003eEvery gen X person read a terrifying Stephen King book when they were 9\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\u003ccenter\u003e\u003c/center\u003e\\n\",\n       \"\\n\",\n       \"\u003cp\u003e\\n\",\n       \"55 🗣\\n\",\n       \"\u0026nbsp; | \u0026nbsp; \\n\",\n       \"33 🔁\\n\",\n       \"\u0026nbsp; | \u0026nbsp;\\n\",\n       \"1 💙\\n\",\n       \"\u0026nbsp; | \u0026nbsp;\\n\",\n       \"Post ID: 109560661039545409\\n\",\n       \"\u003c/p\u003e\\n\",\n       \"\\n\",\n       \"\\n\",\n       \"\u003c/div\u003e\\n\",\n       \"\\n\",\n       \"\u003cbr/\u003e\\n\",\n       \"\\n\",\n       \"\u003c/div\u003e\\n\"\n      ],\n      \"text/plain\": [\n       \"Post(id=109563556725970365)\"\n      ]\n     },\n     \"execution_count\": 9,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Get top posts by score\\n\",\n    \"top_posts = sorted(\\n\",\n    \"    tron.latest_posts(max_posts=100),\\n\",\n    \"    key=lambda post: -post.score()\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"# top post by engagement\\n\",\n    \"top_posts[0]\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"venv\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.10.7\"\n  },\n  \"orig_nbformat\": 4,\n  \"vscode\": {\n   \"interpreter\": {\n    \"hash\": \"3fd48361b044f528a2157a6d50412eb847c334dc1d3abbb213ba1b507b3cd253\"\n   }\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmastotron%2Fmastotron","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmastotron%2Fmastotron","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmastotron%2Fmastotron/lists"}