Skip to main content

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