Allow running fluser_lookup against the Commons Explorer
- ID
d9635bb- date
2024-03-07 10:49:51+00:00- author
Alex Chan <alex@alexwlchan.net>- parent
032146f- message
Allow running fluser_lookup against the Commons Explorer- changed files
3 files, 40 additions, 5 deletions
Changed files
.github/workflows/test.yml (1281) → .github/workflows/test.yml (1326)
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 44a57af..7fc3d20 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -42,6 +42,7 @@ jobs:
- name: Run tests
run: |
py.test aws/test_s3tree.py
+ py.test flickr/test_fluser_lookup.py
py.test text/test_fix_twitter_thread.py
py.test textexpander/test_get_mastodon_text.py
py.test web/test_save_ao3_links.py
flickr/fluser_lookup.py (1204) → flickr/fluser_lookup.py (1563)
diff --git a/flickr/fluser_lookup.py b/flickr/fluser_lookup.py
index 9b37249..6229bec 100755
--- a/flickr/fluser_lookup.py
+++ b/flickr/fluser_lookup.py
@@ -15,9 +15,23 @@ import re
import sys
from flickr_photos_api import FlickrPhotosApi
+import hyperlink
import keyring
+def get_user_id(user_text: str) -> str:
+ u = hyperlink.URL.from_text(user_text)
+
+ # e.g. https://www.youtube.com/watch?v=0naRXbQQ838
+ if (
+ u.host == "commons.flickr.org"
+ and len(u.path) == 3
+ and u.path[0] == "members"
+ and u.path[2] == ""
+ ):
+ return {"path_alias": u.path[1]}
+
+
if __name__ == "__main__":
try:
USER_TEXT = sys.argv[1]
@@ -29,12 +43,16 @@ if __name__ == "__main__":
user_agent="Alex Chan's personal scripts <alex@alexwlchan.net>",
)
- if USER_TEXT.startswith("https://"):
- user = api.lookup_user_by_url(url=USER_TEXT)
- elif re.match(USER_TEXT, "^[0-9]{7}@N[0-9]{2}$"):
- user = api.lookup_user_by_id(user_id=USER_TEXT)
+ user_id = get_user_id(USER_TEXT)
+
+ if "path_alias" in user_id:
+ user = api.lookup_user_by_url(
+ url=f"https://www.flickr.com/people/{user_id['path_alias']}"
+ )
else:
- user = api.lookup_user_by_url(url=f"https://www.flickr.com/people/{USER_TEXT}")
+ user = api.lookup_user_by_id(
+ url=f"https://www.flickr.com/people/{user_id['id']}"
+ )
print(f"ID: {user['id']}")
print(f"username: {user['username']}")
flickr/test_fluser_lookup.py (0) → flickr/test_fluser_lookup.py (356)
diff --git a/flickr/test_fluser_lookup.py b/flickr/test_fluser_lookup.py
new file mode 100644
index 0000000..2b2835f
--- /dev/null
+++ b/flickr/test_fluser_lookup.py
@@ -0,0 +1,16 @@
+import pytest
+
+from fluser_lookup import get_user_id
+
+
+@pytest.mark.parametrize(
+ ["user_text", "user_id"],
+ [
+ (
+ "https://commons.flickr.org/members/csj_canada_archives/",
+ {"path_alias": "csj_canada_archives"},
+ ),
+ ],
+)
+def test_get_user_id(user_text, user_id):
+ assert get_user_id(user_text) == user_id