Actually check in my fluser_lookup script
- ID
d4f5f4f- date
2024-01-02 09:30:45+00:00- author
Alex Chan <alex@alexwlchan.net>- parent
336c290- message
Actually check in my fluser_lookup script- changed files
4 files, 72 additions, 1 deletion
Changed files
flickr/README.md (1336) → flickr/README.md (1709)
diff --git a/flickr/README.md b/flickr/README.md
index e5299e0..7238dc0 100644
--- a/flickr/README.md
+++ b/flickr/README.md
@@ -29,6 +29,12 @@ scripts = [
look up a single photo with the Flickr API and print the XML response to stdout.
""",
},
+ {
+ "usage": "fluser_lookup.py [USER_ID]",
+ "description": """
+ Look up a Flickr user by URL or path alias.
+ """,
+ },
]
cog_helpers.create_description_table(folder_name=folder_name, scripts=scripts)
@@ -52,5 +58,14 @@ cog_helpers.create_description_table(folder_name=folder_name, scripts=scripts)
<dd>
look up a single photo with the Flickr API and print the XML response to stdout.
</dd>
+
+ <dt>
+ <a href="https://github.com/alexwlchan/scripts/blob/main/flickr/fluser_lookup.py">
+ <code>fluser_lookup.py [USER_ID]</code>
+ </a>
+ </dt>
+ <dd>
+ Look up a Flickr user by URL or path alias.
+ </dd>
</dl>
-<!-- [[[end]]] (checksum: 7d80deb90d125a1f886c6faa3436d829) -->
+<!-- [[[end]]] (checksum: 37fb345f2f059bad0669a7c8411516b9) -->
flickr/fluser_lookup.py (0) → flickr/fluser_lookup.py (1248)
diff --git a/flickr/fluser_lookup.py b/flickr/fluser_lookup.py
new file mode 100755
index 0000000..41b16b7
--- /dev/null
+++ b/flickr/fluser_lookup.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+"""
+Look up a user by URL or path alias.
+
+ $ fluser_lookup.py amymle
+ ID: '82621159@N00'
+ username: 'amymle'
+ realname: 'Amy Esau'
+
+"""
+
+import sys
+
+from flickr_photos_api import FlickrPhotosApi
+import keyring
+
+
+if __name__ == "__main__":
+ try:
+ USER_TEXT = sys.argv[1]
+ except IndexError:
+ sys.exit(f"Usage: {__file__} <URL|PATH_ALIAS>")
+
+ api = FlickrPhotosApi(
+ api_key=keyring.get_password("flickr_api", "key"),
+ user_agent="Alex Chan's personal scripts <alex@alexwlchan.net>",
+ )
+
+ if USER_TEXT.startswith("https://"):
+ resp = api.call("flickr.urls.lookupUser", url=USER_TEXT)
+ else:
+ resp = api.call(
+ method="flickr.urls.lookupUser",
+ params={"url": f"https://www.flickr.com/people/{USER_TEXT}"},
+ )
+
+ user_id = resp.find(".//user").attrib["id"]
+ username = resp.find(".//username").text
+
+ resp = api.call(method="flickr.people.getInfo", params={"user_id": user_id})
+
+ try:
+ realname = resp.find(".//realname").text
+ except AttributeError:
+ realname = None
+
+ print(f"ID: {user_id!r}")
+ print(f"username: {username!r}")
+ print(f"realname: {(realname or '<none>')!r}")
requirements.in (161) → requirements.in (179)
diff --git a/requirements.in b/requirements.in
index da2836a..2403d3d 100644
--- a/requirements.in
+++ b/requirements.in
@@ -3,6 +3,7 @@ black
boto3
cogapp
flake8
+flickr-photos-api
flickr-url-parser
httpx
humanize
requirements.txt (2566) → requirements.txt (2716)
diff --git a/requirements.txt b/requirements.txt
index 6fdc8f5..8c66b8b 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -36,9 +36,12 @@ cogapp==3.3.0
# via -r requirements.in
flake8==6.1.0
# via -r requirements.in
+flickr-photos-api==1.5.7
+ # via -r requirements.in
flickr-url-parser==1.7.1
# via
# -r requirements.in
+ # flickr-photos-api
h11==0.14.0
# via httpcore
httpcore==1.0.2
@@ -46,6 +49,7 @@ httpcore==1.0.2
httpx==0.25.2
# via
# -r requirements.in
+ # flickr-photos-api
# flickr-url-parser
humanize==4.9.0
# via -r requirements.in
@@ -122,6 +126,8 @@ sniffio==1.3.0
# via
# anyio
# httpx
+tenacity==8.2.3
+ # via flickr-photos-api
termcolor==2.4.0
# via -r requirements.in
urllib3==2.0.7