Improve the lookups of Flickr users
- ID
cbca601- date
2024-03-20 09:43:19+00:00- author
Alex Chan <alex@alexwlchan.net>- parent
65938eb- message
Improve the lookups of Flickr users- changed files
4 files, 33 additions, 5 deletions
Changed files
flickr/fluser_lookup.py (1748) → flickr/fluser_lookup.py (2251)
diff --git a/flickr/fluser_lookup.py b/flickr/fluser_lookup.py
index 2c36307..f6c7f0c 100755
--- a/flickr/fluser_lookup.py
+++ b/flickr/fluser_lookup.py
@@ -12,13 +12,27 @@ Look up a user by URL or path alias.
"""
import sys
+from typing import TypedDict
from flickr_photos_api import FlickrPhotosApi
+from flickr_url_parser import is_flickr_user_id
import hyperlink
import keyring
-def get_user_id(user_text: str) -> str:
+class PathAlias(TypedDict):
+ path_alias: str
+
+
+class UserId(TypedDict):
+ id: str
+
+
+def get_user_id(user_text: str) -> PathAlias | UserId:
+ # e.g. 35468159852@N01
+ if is_flickr_user_id(user_text):
+ return {"id": user_text}
+
u = hyperlink.URL.from_text(user_text)
# e.g. https://www.youtube.com/watch?v=0naRXbQQ838
@@ -30,9 +44,15 @@ def get_user_id(user_text: str) -> str:
):
return {"path_alias": u.path[1]}
+ # e.g. "https://www.flickr.com/photos/35468159852@N01/"
# e.g. https://www.flickr.com/photos/powerhouse_museum/2532449275/
if u.host == "www.flickr.com" and len(u.path) >= 2 and u.path[0] == "photos":
- return {"path_alias": u.path[1]}
+ if is_flickr_user_id(u.path[1]):
+ return {"id": u.path[1]}
+ else:
+ return {"path_alias": u.path[1]}
+
+ raise ValueError(f"Cannot get Flickr user from {user_text!r}")
if __name__ == "__main__":
flickr/test_fluser_lookup.py (501) → flickr/test_fluser_lookup.py (714)
diff --git a/flickr/test_fluser_lookup.py b/flickr/test_fluser_lookup.py
index f6c9a05..42edef4 100644
--- a/flickr/test_fluser_lookup.py
+++ b/flickr/test_fluser_lookup.py
@@ -14,6 +14,14 @@ from fluser_lookup import get_user_id
"https://www.flickr.com/photos/powerhouse_museum/2532449275/",
{"path_alias": "powerhouse_museum"},
),
+ (
+ "35468159852@N01",
+ {"id": "35468159852@N01"},
+ ),
+ (
+ "https://www.flickr.com/photos/35468159852@N01/",
+ {"id": "35468159852@N01"},
+ ),
],
)
def test_get_user_id(user_text, user_id):
requirements.in (328) → requirements.in (335)
diff --git a/requirements.in b/requirements.in
index 7f46249..1dc141e 100644
--- a/requirements.in
+++ b/requirements.in
@@ -7,7 +7,7 @@ datasette
datasette-render-image-tags
flake8
flickr-photos-api
-flickr-url-parser
+flickr-url-parser>=1.8.2
google-api-python-client==1.7.2
google-auth-oauthlib==0.4.1
httpx
requirements.txt (4907) → requirements.txt (4923)
diff --git a/requirements.txt b/requirements.txt
index b9af2e5..48a5f58 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,7 +2,7 @@
# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
-# pip-compile
+# pip-compile requirements.in
#
aiofiles==23.2.1
# via datasette
@@ -62,7 +62,7 @@ flake8==6.1.0
# via -r requirements.in
flickr-photos-api==1.5.7
# via -r requirements.in
-flickr-url-parser==1.7.1
+flickr-url-parser==1.8.2
# via
# -r requirements.in
# flickr-photos-api