Skip to content

Repository files navigation

movies.pub

ActivityPub object server that maps movies from Wikidata into Activity Streams Video objects

ActivityPub objects can be used in activities, but they must have an Activity Streams 2.0 document available at the id URL.

This server provides an URL for each film in the Wikidata database, and a search endpoint to make it easy to find films.

Table of Contents

Security

Please use the security disclosure system to report any security issues with this applications.

Install

This server is available at movies.pub and you don't have to install it to use it. However, if you want to install it, you can use the Helm chart in charts/movies-pub like so:

helm upgrade --install movies-pub charts/movies-pub -f <your-values-file.yaml>

You'll need to have a Kubernetes cluster, and use a values file to set your particular settings.

Usage

The main way to use this service is in ActivityPub applications. A good example would be a View activity for a movie:

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "id": "https://social.example/user/evanp/view/3",
  "type": "View",
  "actor": "https://social.example/user/evanp",
  "object": "https://movies.pub/movie/Q107105860",
  "summary": "Evan watched 'Project Hail Mary'"
}

API

This returns an ActivityPub object representing the movie. Its type is Video. It will have at least a name property and possibly other properties.

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "id": "https://movies.pub/movie/Q117037697",
  "type": "Video",
  "name": "Anatomy of a Fall"
}

This is a search endpoint for finding movies with a given word in the title -- the q parameter is the search value. The lng is a hint for the language of the film name.

It returns an Activity Streams Collection object with the totalItems as the count, and the

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "id": "https://movies.pub/search/movie?q=foo&lng=en",
  "summary": "movies.pub search results for 'foo' in 'en'",
  "totalItems": 2,
  "items": [
    {
      "id": "https://movies.pub/movie/Q1759260",
      "name": "To Wong Foo, Thanks for Everything! Julie Newmar"
    },
    {
      "id": "https://movies.pub/movie/Q2878380",
      "name": "Foo Fighters: Back and Forth"
    }
  ]
}

Contributing

PRs are accepted. Please add an issue first, and refer to it from your PR.

The stack for this project:

Tests are in ./tests/. It's a good idea to add a test for any functionality you need to add. You can run the tests with uv run pytest.

To run the server locally, use this command:

uv run uvicorn main:app --reload

This will run a local server on port 8000. You can load it in your browser at http://127.0.0.1:8000/.

License

movies.pub - movies data server for ActivityPub

Copyright (C) 2026 Social Web Foundation, Lorenzo Caresio

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

About

ActivityPub object server that maps movies from Wikidata into Activity Streams Video objects

Resources

Stars

8 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages