From 55989ec08529a37791e3b30daeb28fc46d55fc16 Mon Sep 17 00:00:00 2001 From: Jon Michael Aanes Date: Sat, 16 Dec 2023 23:09:27 +0100 Subject: [PATCH] Support for cohost --- .gitignore | 2 ++ socials_util/__init__.py | 35 ++++++----------------------------- test/test_parsing.py | 30 ++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 29 deletions(-) create mode 100644 test/test_parsing.py diff --git a/.gitignore b/.gitignore index dc31b59..d7bf177 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ __pycache__/ +/build/ +/dist/ dist *.egg-info diff --git a/socials_util/__init__.py b/socials_util/__init__.py index beb1c34..d24caba 100644 --- a/socials_util/__init__.py +++ b/socials_util/__init__.py @@ -55,6 +55,7 @@ class SocialSiteId(enum.Enum): BLUESKY_PROFILE = 32 ITCH_IO_DEVELOPER = 8176 FIREFOX_PROFILE_BOOKMARKS = 33 + COHOST_PROFILE = 117203288 def wikidata_property(self, client): return client.get(WIKIDATA_PROPERTIES[self]) @@ -123,6 +124,7 @@ WIKIDATA_PROPERTIES = { SocialSiteId.BANDCAMP_PROFILE: WikidataInfo(3283, 545966), SocialSiteId.BLUESKY_PROFILE: WikidataInfo(None, 78194383), SocialSiteId.ITCH_IO_DEVELOPER: WikidataInfo(8176, 22905933), + SocialSiteId.COHOST_PROFILE: WikidataInfo(None, 117203288), } def re_social_subdomain(main_domain): @@ -190,6 +192,7 @@ URL_PARSE_DANBOORU_ARTIST = re_social_path_adv('danbooru.donmai.us', 'artists', URL_PARSE_BANDCAMP = re_social_subdomain('bandcamp.com') URL_PARSE_BLUESKY = re_social_path_adv('bsky.app', 'profile', RE_ID) URL_PARSE_ITCH_IO_DEVELOPER = re_social_subdomain('itch.io') +URL_PARSE_COHOST = re_social_path_adv('cohost.org', RE_ID) REGEXES = [ # Reddit @@ -290,6 +293,9 @@ REGEXES = [ # Itch.io (URL_PARSE_ITCH_IO_DEVELOPER, SocialSiteId.ITCH_IO_DEVELOPER), + + # Cohost + (URL_PARSE_COHOST, SocialSiteId.COHOST_PROFILE), ] WELL_KNOWN_MASTODON_INSTANCES = frozenset({ @@ -345,32 +351,3 @@ def determine_social_from_url(url): return None return SocialLink(url, social_site_id, social_id) -def run_tests(): - assert determine_social_from_url('http://www.twitter.com/dril').social_id == 'dril' - assert determine_social_from_url('http://worstdril.tumblr.com/') - assert determine_social_from_url('https://deep-dark-fears.tumblr.com').social_id == 'deep-dark-fears' - assert determine_social_from_url('https://www.etsy.com/shop/aleksiremesart').social_id == 'aleksiremesart' - assert determine_social_from_url('https://ko-fi.com/A627LI1/shop').social_id == 'A627LI1' - assert determine_social_from_url('https://ko-fi.com/A627LI1/').social_id == 'A627LI1' - assert determine_social_from_url('https://www.facebook.com/fredagscafeen.dk/').social_id == 'fredagscafeen.dk' - assert determine_social_from_url('https://www.tiktok.com/@depthsofwikipedia?lang=en').social_id == 'depthsofwikipedia' - assert determine_social_from_url('https://www.pixiv.net/users/14866303').social_id == '14866303' - assert determine_social_from_url('https://www.pixiv.net/member.php?id=109710').social_id == '109710' - assert determine_social_from_url('https://www.deviantart.com/solquiet').social_site_id == SocialSiteId.DEVIANT_ART_ACCOUNT - assert determine_social_from_url('https://solquiet.deviantart.com/').social_site_id == SocialSiteId.DEVIANT_ART_ACCOUNT - - INSTAGRAMS = [ - 'https://instagram.com/_richardparry_', - 'https://instagram.com/j_kmor/', - 'https://instagram.com/cullensartbox/', - 'https://www.instagram.com/timkongart/', - 'https://www.instagram.com/kcn.wu/', - 'https://www.instagram.com/itsbettyjiang', - ] - - for ig in INSTAGRAMS: - assert determine_social_from_url(ig).social_site_id == SocialSiteId.INSTAGRAM_PAGE - -TEST = True -if TEST: - run_tests() diff --git a/test/test_parsing.py b/test/test_parsing.py new file mode 100644 index 0000000..1d3d1e2 --- /dev/null +++ b/test/test_parsing.py @@ -0,0 +1,30 @@ + +from socials_util import * + +def test_parsing(): + assert determine_social_from_url('http://www.twitter.com/dril').social_id == 'dril' + assert determine_social_from_url('http://worstdril.tumblr.com/') + assert determine_social_from_url('https://deep-dark-fears.tumblr.com').social_id == 'deep-dark-fears' + assert determine_social_from_url('https://www.etsy.com/shop/aleksiremesart').social_id == 'aleksiremesart' + assert determine_social_from_url('https://ko-fi.com/A627LI1/shop').social_id == 'A627LI1' + assert determine_social_from_url('https://ko-fi.com/A627LI1/').social_id == 'A627LI1' + assert determine_social_from_url('https://www.facebook.com/fredagscafeen.dk/').social_id == 'fredagscafeen.dk' + assert determine_social_from_url('https://www.tiktok.com/@depthsofwikipedia?lang=en').social_id == 'depthsofwikipedia' + assert determine_social_from_url('https://www.pixiv.net/users/14866303').social_id == '14866303' + assert determine_social_from_url('https://www.pixiv.net/member.php?id=109710').social_id == '109710' + assert determine_social_from_url('https://www.deviantart.com/solquiet').social_site_id == SocialSiteId.DEVIANT_ART_ACCOUNT + assert determine_social_from_url('https://solquiet.deviantart.com/').social_site_id == SocialSiteId.DEVIANT_ART_ACCOUNT + assert determine_social_from_url('https://cohost.org/example').social_site_id == SocialSiteId.COHOST_PROFILE + + INSTAGRAMS = [ + 'https://instagram.com/_richardparry_', + 'https://instagram.com/j_kmor/', + 'https://instagram.com/cullensartbox/', + 'https://www.instagram.com/timkongart/', + 'https://www.instagram.com/kcn.wu/', + 'https://www.instagram.com/itsbettyjiang', + ] + + for ig in INSTAGRAMS: + assert determine_social_from_url(ig).social_site_id == SocialSiteId.INSTAGRAM_PAGE +