Skip to main content

flickr-photos-api

This is a library for using the Flickr API at the Flickr Foundation.

It's not a general-purpose Flickr API library. It provides a subset of Flickr API methods with the following goals:

  • Provide reusable code that can be called across all our projects.
  • Keep all the details of dealing with the Flickr API in one place.
  • Apply types to all results, so the Flickr API can be used safely in a typed context.

Design

Using the Flickr API is fairly simple: you make an HTTP GET to https://api.flickr.com/services/rest/?api_key={api_key} and pass one or more URL query parameters. One of those query parameters must be method, then you add other parameters depending on the API method.

There's an abstract class that represents this interface:

import abc
from xml.etree import ElementTree as ET


class FlickrApi(abc.ABC):
    @abc.abstractmethod
    def call(self, method: str, params: dict[str, str] | None = None) -> ET.Element:
        return NotImplemented

The idea is that you can extend this class with "method" classes that wrap specific API methods, and make HTTP GET calls through this call() method:

class GetSinglePhotoMethods(FlickrApi):
    def get_single_photo(self, photo_id: str) -> ET.Element:
        return self.call(method="flickr.photos.getInfo", params={"photo_id": photo_id})

This separates the code for making HTTP requests and separating the responses.

The library includes a single implementation of FlickrApi for making HTTP requests, using httpx, but you could swap it out if you wanted to use e.g. requests or urllib3. This httpx implementation is the default implementation.

Examples

>>> from flickr_api import FlickrApi
>>> api = FlickrApi.with_api_key(api_key="…", user_agent="…")

>>> photo = api.get_single_photo(photo_id="14898030836")

>>> photo
{'id': '14898030836', 'title': 'NASA Scientists Says', …}

>>> photo["license"]
{'id': 'cc-by-2.0', 'label': 'CC BY 2.0', 'url': 'https://creativecommons.org/licenses/by/2.0/'}

>>> photo["url"]
'https://www.flickr.com/photos/lassennps/14898030836/'

Usage

  1. Install flickr-photos-api from PyPI:

    $ pip install flickr-photos-api
    
  2. Construct an instance of FlickrApi.

    There are two approaches you can use:

    • You can make unauthenticated requests by passing a Flickr API key in the headers:

      import httpx
      
      client = httpx.Client(params={"api_key": api_key})
      
      api = FlickrApi(cleint)
      
    • You can make authenticated requests by using OAuth 1.0a:

      from authlib.integrations.httpx_client import OAuth1Client
      
      client=OAuth1Client(
          client_id=client_id,
          client_secret=client_secret,
          token=token,
          token_secret=token_secret,
      )
      
      api = FlickrApi(client)
      
  3. Call methods on FlickrApi. There's no complete list of methods right now; look at the files X_methods.py in the api directory.

    Methods that return collections of photos also support page and per_page parameters to control pagination.

Development

If you want to make changes to the library, there are instructions in CONTRIBUTING.md.

License

This project is dual-licensed as Apache-2.0 and MIT.

Metadata

Release files for flickr-photos-api 3.13.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for flickr-photos-api 3.13.0
File Size Uploaded
flickr_photos_api-3.13.0.tar.gz 42.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for flickr-photos-api 3.13.0
File Interpreter ABI Platform
flickr_photos_api-3.13.0-py3-none-any.whl Python 3 none any Details

Total release size: 86.5 kB

Release files / flickr_photos_api-3.13.0.tar.gz

Download URL flickr_photos_api-3.13.0.tar.gz
Size 42.6 kB
Tags Source
SHA-256 checksum
How to use checksums
041cf36fc8f8e4056cc1a5c8fe180578db5f8504b3936d55f832e792df6eb260
BLAKE2b-256 checksum
How to use checksums
c17aab61b6a66e6a7eba9933d42a5cd33bbadb37c57f13a190910acd75f4a873
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.1

Release files / flickr_photos_api-3.13.0-py3-none-any.whl

Download URL flickr_photos_api-3.13.0-py3-none-any.whl
Size 44.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5aa2d16c819d34d5b34e27bfed5e6f16d6c5868cfce7b2de993d018bd947990d
BLAKE2b-256 checksum
How to use checksums
2acdca5885702bc3cccf9b394f865a1948d272bad354a3e675052732d1ddd721
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.1

Release history Release notifications | RSS feed

This release

3.13.0 This release

2 release files

3.12.1

2 release files

3.11.1

2 release files

3.11

2 release files

3.10.1

2 release files

3.10

2 release files

3.9.1

2 release files

3.9

2 release files

3.8.4

2 release files

3.8.3

2 release files

3.8.2

2 release files

3.8.1

2 release files

3.8

2 release files

3.7.2

2 release files

3.7.1

2 release files

3.7

2 release files

3.6.1

2 release files

3.6

2 release files

3.5

2 release files

3.4

2 release files

3.3.1

2 release files

3.3

2 release files

3.2

2 release files

3.1

2 release files

3.0

2 release files

2.21.0

2 release files

2.20.0

2 release files

2.19.0

2 release files

2.16.2

2 release files

2.16.1

2 release files

2.14.4

2 release files

2.14.2

2 release files

2.14.1

2 release files

2.14.0

2 release files

2.13.0

2 release files

2.12.0

2 release files

2.11.0

2 release files

2.10.0

2 release files

2.9.0

2 release files

2.8.1

2 release files

2.8.0

2 release files

2.7.0

2 release files

2.6.2

2 release files

2.6.1

2 release files

2.6.0

2 release files

2.5.2

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.4

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.14.1

2 release files

1.14.0

2 release files

1.13.0

2 release files

1.12.0

2 release files

1.11.0

2 release files

1.10.1

2 release files

1.9.2

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.2

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.7

2 release files

1.5.6

2 release files

1.5.5

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page