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.
Please use the security disclosure system to report any security issues with this applications.
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.
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'"
}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"
}
]
}PRs are accepted. Please add an issue first, and refer to it from your PR.
The stack for this project:
- Python - programming language
- uv - package manager
- FastAPI - web API server
- pytest - testing framework
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 --reloadThis will run a local server on port 8000. You can load it in your browser at http://127.0.0.1:8000/.
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/.