Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gabe565/transsmute
📰 Build RSS feeds for websites that don't provide them.
https://github.com/gabe565/transsmute
docker dockerhub ghcr kemono rss youtube
Last synced: about 2 months ago
JSON representation
📰 Build RSS feeds for websites that don't provide them.
- Host: GitHub
- URL: https://github.com/gabe565/transsmute
- Owner: gabe565
- License: gpl-3.0
- Created: 2022-08-19T22:27:59.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-27T06:38:21.000Z (about 2 months ago)
- Last Synced: 2024-10-27T07:38:36.397Z (about 2 months ago)
- Topics: docker, dockerhub, ghcr, kemono, rss, youtube
- Language: Go
- Homepage:
- Size: 474 KB
- Stars: 10
- Watchers: 3
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Transsmute
[![Build](https://github.com/gabe565/transsmute/actions/workflows/build.yml/badge.svg)](https://github.com/gabe565/transsmute/actions/workflows/build.yml)
[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/gabe565)](https://artifacthub.io/packages/helm/gabe565/transsmute)Transsmute (transmute + RSS) is a server written in Go that builds RSS
feeds for websites that don't provide them.Currently, the following feed providers are supported:
- YouTube (channel, playlist)
- Container registries (DockerHub, ghcr.io)
- Kemono## Installation
Transsmute can be installed as a container (suggested) or as a compiled
binary.### Docker
A Docker container is available at `ghcr.io/gabe565/transsmute`. The
containerized version of Transsmute will run on port 80 by default,
and accepts all configuration as flags or as environment variables.
See [Configuration](#configuration) for more info.```shell
docker run --rm -it -p 80:80 ghcr.io/gabe565/transsmute
```Alternatively, an example [`docker-compose.yml`](/docker-compose.yml) file
is provided.### Kubernetes
A Helm chart is available for Kubernetes deployment.
For more information, see
[charts.gabe565.com](https://charts.gabe565.com/charts/transsmute/) or
[Artifact Hub](https://artifacthub.io/packages/helm/gabe565/transsmute).## Configuration
| Flag | Environment Variable | Description | Default |
|------------------------|---------------------------------|------------------------------------------------------------------------------|----------------------------------|
| `--address` | `TRANSSMUTE_ADDRESS` | Listen address | `":3000"` (`":80"` in container) |
| `--youtube-enabled` | `TRANSSMUTE_YOUTUBE_ENABLED` | YouTube API enabled. | `true` |
| `--youtube-key` | `TRANSSMUTE_YOUTUBE_KEY` | YouTube API key. Required to enable YouTube routes! | `""` |
| `--docker-enabled` | `TRANSSMUTE_DOCKER_ENABLED` | Docker API enabled. | `true` |
| `--dockerhub-username` | `TRANSSMUTE_DOCKERHUB_USERNAME` | DockerHub username for private repos. | `""` |
| `--dockerhub-password` | `TRANSSMUTE_DOCKERHUB_PASSWORD` | DockerHub password for private repos. | `""` |
| `--ghcr-username` | `TRANSSMUTE_GHCR_USERNAME` | GitHub username for [ghcr.io](https://ghcr.io) repos. | `""` |
| `--ghcr-password` | `TRANSSMUTE_GHCR_PASSWORD` | GitHub PAT for [ghcr.io](https://ghcr.io) repos. | `""` |
| `--kemono-enabled` | `TRANSSMUTE_KEMONO_ENABLED` | Kemono API enabled. | `true` |
| `--kemono-hosts` | `TRANSSMUTE_KEMONO_HOSTS` | Kemono API hosts, where the key is the URL prefix and the value is the host. | `kemono=kemono.su` |Command-line help reference is also available in [docs](./docs/transsmute.md).
### DockerHub
DockerHub credentials are only required to access private repositories.
### ghcr.io
A personal access token is used to authenticate into GitHub's ghcr.io API.
The only required scope is `read:packages`.
[Click here](https://github.com/settings/tokens/new?description=Transsmute&scopes=read:packages)
to generate a personal access token with the necessary scopes prefilled.## Routes
### Feed Type
An Atom feed is generated by default, but a file extension of
`.json` or `.rss` will change the output to the given format.### YouTube
- `/youtube/playlist/{playlist_id}`
- `/youtube/channel/{channel_id}`#### Query Parameters
| Name | Description | Default |
|-------------|----------------------------------------------------------------------------------------------------------------------|---------|
| `no_iframe` | Disables video iframe. Useful for RSS readers that automatically load videos like [Miniflux](https://miniflux.app/). | `false` |### Docker
- `/docker/tags/{repo}`
### Kemono
- `/kemono/{service}/user/{id}`
- `/kemono/{service}/podcast/{id}`#### Query Parameters
| Name | Description | Default |
|---------|---------------------------------------------------------------|---------|
| `pages` | Maximum number of pages to load. Each page contains 50 posts. | `1` |
| `q` | Search query. | `""` |
| `tag` | Only include posts that contain the given tag. | `""` |