From ec00b0a6560fcb500fa152294928c14fb6eb458f Mon Sep 17 00:00:00 2001 From: Jon Michael Aanes Date: Tue, 2 Jan 2024 16:27:24 +0100 Subject: [PATCH] Support Github --- socials_util/__init__.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/socials_util/__init__.py b/socials_util/__init__.py index 892a1d2..466866d 100644 --- a/socials_util/__init__.py +++ b/socials_util/__init__.py @@ -59,6 +59,8 @@ class SocialSiteId(aenum.Enum): SOUNDCLOUD_ARTIST = 3040 IGDB_GAME_ID = 5794 + GITHUB_REPOSITORY = 364 + def wikidata_property(self, client): return client.get(WIKIDATA_PROPERTIES[self]) @@ -130,6 +132,7 @@ WIKIDATA_PROPERTIES = { SocialSiteId.COHOST_PROFILE: WikidataInfo(None, 117203288), SocialSiteId.SOUNDCLOUD_ARTIST: WikidataInfo(3040, None), SocialSiteId.IGDB_GAME_ID: WikidataInfo(5794, None), + SocialSiteId.GITHUB_REPOSITORY: WikidataInfo(None, 364), } def re_social_subdomain(main_domain): @@ -137,6 +140,7 @@ def re_social_subdomain(main_domain): return r'^(?:https?:\/\/)?([\w_-]+)\.'+re.escape(main_domain)+r'(\/.*)?$' RE_ID = r'@?([^/]+)' +RE_DUAL_ID = r'@?([^/]+/[^/]+)' RE_ANY_SUBPATH = r'(|\/|\/.*)$' def re_social_path(main_domain): @@ -150,7 +154,7 @@ def re_social_path_adv(main_domain, *path): for p in path: if p != RE_ANY_SUBPATH: l.append(r'\/') - l.append(p if p in {RE_ID, RE_ANY_SUBPATH} else re.escape(p)) + l.append(p if p in {RE_ID, RE_DUAL_ID, RE_ANY_SUBPATH} else re.escape(p)) if path[-1] != RE_ANY_SUBPATH: l.append(r'\/?$') regex = ''.join(l) @@ -196,7 +200,6 @@ URL_PARSE_DEVIANT_ART_ACCOUNT_2 = re_social_subdomain('deviantart.com') URL_PARSE_DANBOORU_ARTIST = re_social_path_adv('danbooru.donmai.us', 'artists', RE_ID) 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') REGEXES = [ # Reddit @@ -296,7 +299,7 @@ REGEXES = [ (URL_PARSE_BLUESKY, SocialSiteId.BLUESKY_PROFILE), # Itch.io - (URL_PARSE_ITCH_IO_DEVELOPER, SocialSiteId.ITCH_IO_DEVELOPER), + (re_social_subdomain('itch.io'), SocialSiteId.ITCH_IO_DEVELOPER), # Cohost (re_social_path_adv('cohost.org', RE_ID), SocialSiteId.COHOST_PROFILE), @@ -306,6 +309,9 @@ REGEXES = [ # IGDB (re_social_path_adv('igdb.com', 'games', RE_ID), SocialSiteId.IGDB_GAME_ID), + + # Github + (re_social_path_adv('github.com', RE_DUAL_ID), SocialSiteId.GITHUB_REPOSITORY), ] WELL_KNOWN_MASTODON_INSTANCES = frozenset({