diff --git a/devel/site-list.py b/devel/site-list.py index 047b2264..e0fd21d5 100644 --- a/devel/site-list.py +++ b/devel/site-list.py @@ -1,39 +1,45 @@ #!/usr/bin/env python # This module generates the listing of supported sites which can be found in -# sites.md. It also organizes all the sites in alphanumeric order +# sites.mdx. It also organizes all the sites in alphanumeric order import json import os - DATA_REL_URI: str = "sherlock_project/resources/data.json" +DEFAULT_ENCODING = "utf-8" + # Read the data.json file -with open(DATA_REL_URI, "r", encoding="utf-8") as data_file: +with open(DATA_REL_URI, "r", encoding=DEFAULT_ENCODING) as data_file: data: dict = json.load(data_file) # Removes schema-specific keywords for proper processing -social_networks: dict = dict(data) +social_networks = data.copy() social_networks.pop('$schema', None) # Sort the social networks in alphanumeric order -social_networks: list = sorted(social_networks.items()) +social_networks = sorted(social_networks.items()) # Make output dir where the site list will be written os.mkdir("output") -# Write the list of supported sites to sites.md -with open("output/sites.mdx", "w") as site_file: - site_file.write("---\ntitle: 'List of supported sites'\nsidebarTitle: 'Supported sites'\nicon: 'globe'\ndescription: 'Sherlock currently supports **400+** sites'\n---\n\n") +# Write the list of supported sites to sites.mdx +with open("output/sites.mdx", "w", encoding=DEFAULT_ENCODING) as site_file: + site_file.write("---\n") + site_file.write("title: 'List of supported sites'\n") + site_file.write("sidebarTitle: 'Supported sites'\n") + site_file.write("icon: 'globe'\n") + site_file.write("description: 'Sherlock currently supports **400+** sites'\n") + site_file.write("---\n\n") + for social_network, info in social_networks: url_main = info["urlMain"] is_nsfw = "**(NSFW)**" if info.get("isNSFW") else "" site_file.write(f"1. [{social_network}]({url_main}) {is_nsfw}\n") # Overwrite the data.json file with sorted data -with open(DATA_REL_URI, "w") as data_file: +with open(DATA_REL_URI, "w", encoding=DEFAULT_ENCODING) as data_file: sorted_data = json.dumps(data, indent=2, sort_keys=True) data_file.write(sorted_data) - data_file.write("\n") + data_file.write("\n") # Keep the newline after writing data print("Finished updating supported site listing!") - diff --git a/pyproject.toml b/pyproject.toml index 45dc683d..2ebad064 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,10 @@ classifiers = [ "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Topic :: Security" ] homepage = "https://sherlockproject.xyz/" diff --git a/sherlock_project/resources/data.json b/sherlock_project/resources/data.json index 4909f5d8..9a6c7dab 100644 --- a/sherlock_project/resources/data.json +++ b/sherlock_project/resources/data.json @@ -11,6 +11,13 @@ "urlMain": "https://www.1337x.to/", "username_claimed": "FitGirl" }, + "Pokemon Forums": { + "errorMsg": "User Not Found", + "errorType": "message", + "url": "https://community.pokemon.com/en-us/profile/{}", + "urlMain": "https://community.pokemon.com/en-us/", + "username_claimed": "mod_ginger" + }, "2Dimensions": { "errorType": "status_code", "url": "https://2Dimensions.com/a/{}", @@ -292,7 +299,6 @@ "urlMain": "https://bsky.app/", "username_claimed": "mcuban" }, - "BongaCams": { "errorType": "status_code", "isNSFW": true, @@ -1152,10 +1158,10 @@ "username_claimed": "blue" }, "Ifunny": { - "errorType":"status_code", - "url":"https://ifunny.co/user/{}", - "urlMain":"https://ifunny.co/", - "username_claimed":"agua" + "errorType": "status_code", + "url": "https://ifunny.co/user/{}", + "urlMain": "https://ifunny.co/", + "username_claimed": "agua" }, "IRC-Galleria": { "errorType": "response_url", @@ -1191,6 +1197,12 @@ "urlProbe": "https://api.imgur.com/account/v1/accounts/{}?client_id=546c25a59c58ad7", "username_claimed": "blue" }, + "imood": { + "errorType": "status_code", + "url": "https://www.imood.com/users/{}", + "urlMain": "https://www.imood.com/", + "username_claimed": "blue" + }, "Instagram": { "errorType": "status_code", "url": "https://instagram.com/{}", @@ -1492,15 +1504,13 @@ "urlMain": "https://www.motorradfrage.net/", "username_claimed": "gutefrage" }, - "MuseScore": { - "errorType": "status_code", - "url": "https://musescore.com/{}", - "urlMain": "https://musescore.com/", - "username_claimed": "arrangeme", - "request_method": "GET" - }, - - + "MuseScore": { + "errorType": "status_code", + "url": "https://musescore.com/{}", + "urlMain": "https://musescore.com/", + "username_claimed": "arrangeme", + "request_method": "GET" + }, "MyAnimeList": { "errorType": "status_code", "url": "https://myanimelist.net/profile/{}", @@ -1621,11 +1631,10 @@ "username_claimed": "blue" }, "Open Collective": { - "errorMsg": "Oops! Page not found", - "errorType": "message", + "errorType": "status_code", "url": "https://opencollective.com/{}", "urlMain": "https://opencollective.com/", - "username_claimed": "pylapp" + "username_claimed": "sindresorhus" }, "OpenStreetMap": { "errorType": "status_code", @@ -1695,6 +1704,69 @@ "urlMain": "https://pentesterlab.com/", "username_claimed": "0day" }, + "HotUKdeals": { + "errorType": "status_code", + "url": "https://www.hotukdeals.com/profile/{}", + "urlMain": "https://www.hotukdeals.com/", + "username_claimed": "Blue", + "request_method": "GET" + }, + "Mydealz": { + "errorType": "status_code", + "url": "https://www.mydealz.de/profile/{}", + "urlMain": "https://www.mydealz.de/", + "username_claimed": "blue", + "request_method": "GET" + }, + "Chollometro": { + "errorType": "status_code", + "url": "https://www.chollometro.com/profile/{}", + "urlMain": "https://www.chollometro.com/", + "username_claimed": "blue", + "request_method": "GET" + }, + "PepperNL": { + "errorType": "status_code", + "url": "https://nl.pepper.com/profile/{}", + "urlMain": "https://nl.pepper.com/", + "username_claimed": "Dynaw", + "request_method": "GET" + }, + "PepperPL": { + "errorType": "status_code", + "url": "https://www.pepper.pl/profile/{}", + "urlMain": "https://www.pepper.pl/", + "username_claimed": "FireChicken", + "request_method": "GET" + }, + "Preisjaeger": { + "errorType": "status_code", + "url": "https://www.preisjaeger.at/profile/{}", + "urlMain": "https://www.preisjaeger.at/", + "username_claimed": "Stefan", + "request_method": "GET" + }, + "Pepperdeals": { + "errorType": "status_code", + "url": "https://www.pepperdeals.se/profile/{}", + "urlMain": "https://www.pepperdeals.se/", + "username_claimed": "Mark", + "request_method": "GET" + }, + "PepperealsUS": { + "errorType": "status_code", + "url": "https://www.pepperdeals.com/profile/{}", + "urlMain": "https://www.pepperdeals.com/", + "username_claimed": "Stepan", + "request_method": "GET" + }, + "Promodescuentos": { + "errorType": "status_code", + "url": "https://www.promodescuentos.com/profile/{}", + "urlMain": "https://www.promodescuentos.com/", + "username_claimed": "blue", + "request_method": "GET" + }, "Periscope": { "errorType": "status_code", "url": "https://www.periscope.tv/{}/", @@ -1868,6 +1940,13 @@ "urlMain": "https://www.reddit.com/", "username_claimed": "blue" }, + "Realmeye": { + "errorMsg": "Sorry, but we either:", + "errorType": "message", + "url": "https://www.realmeye.com/player/{}", + "urlMain": "https://www.realmeye.com/", + "username_claimed": "rotmg" + }, "Reisefrage": { "errorType": "status_code", "url": "https://www.reisefrage.net/nutzer/{}", @@ -2175,6 +2254,16 @@ "urlProbe": "https://ch.tetr.io/api/users/{}", "username_claimed": "osk" }, + "TikTok": { + "url": "https://www.tiktok.com/@{}", + "urlMain": "https://www.tiktok.com", + "errorType": "message", + "errorMsg": [ + "\"statusCode\":10221", + "Govt. of India decided to block 59 apps" + ], + "username_claimed": "charlidamelio" + }, "Tiendanube": { "url": "https://{}.mitiendanube.com/", "urlMain": "https://www.tiendanube.com/", @@ -2872,6 +2961,14 @@ "urlMain": "https://pikabu.ru/", "username_claimed": "blue" }, + "Pinterest": { + "errorType": "status_code", + "errorUrl": "https://www.pinterest.com/", + "url": "https://www.pinterest.com/{}/", + "urlProbe": "https://www.pinterest.com/oembed.json?url=https://www.pinterest.com/{}/", + "urlMain": "https://www.pinterest.com/", + "username_claimed": "blue" + }, "pr0gramm": { "errorType": "status_code", "url": "https://pr0gramm.com/user/{}", @@ -2971,5 +3068,15 @@ "urlMain": "https://platzi.com/", "username_claimed": "freddier", "request_method": "GET" + }, + "BabyRu": { + "url": "https://www.baby.ru/u/{}", + "urlMain": "https://www.baby.ru/", + "errorType": "message", + "errorMsg": [ + "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0438\u0441\u043a\u0430\u043b\u0438, \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430", + "\u0414\u043e\u0441\u0442\u0443\u043f \u0441 \u0432\u0430\u0448\u0435\u0433\u043e IP-\u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d" + ], + "username_claimed": "example" } }