{"id":17815633,"url":"https://github.com/gabe565/transsmute","last_synced_at":"2025-03-17T23:31:47.884Z","repository":{"id":59043109,"uuid":"526767394","full_name":"gabe565/transsmute","owner":"gabe565","description":"Build RSS feeds for websites that don't provide them.","archived":false,"fork":false,"pushed_at":"2025-03-11T20:17:32.000Z","size":572,"stargazers_count":10,"open_issues_count":7,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-11T21:24:51.079Z","etag":null,"topics":["docker","dockerhub","ghcr","kemono","rss","youtube"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gabe565.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-19T22:27:59.000Z","updated_at":"2025-03-03T08:40:17.000Z","dependencies_parsed_at":"2024-02-13T00:27:25.144Z","dependency_job_id":"53516a20-33b4-48f8-841a-da335c83cfe0","html_url":"https://github.com/gabe565/transsmute","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabe565%2Ftranssmute","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabe565%2Ftranssmute/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabe565%2Ftranssmute/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabe565%2Ftranssmute/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gabe565","download_url":"https://codeload.github.com/gabe565/transsmute/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243891968,"owners_count":20364613,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","dockerhub","ghcr","kemono","rss","youtube"],"created_at":"2024-10-27T16:17:33.772Z","updated_at":"2025-03-17T23:31:47.878Z","avatar_url":"https://github.com/gabe565.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Transsmute\n\n\u003cimg src=\"./assets/icon.svg\" alt=\"Transsmute Icon\" width=\"92\" align=\"right\"\u003e\n\n[![Build](https://github.com/gabe565/transsmute/actions/workflows/build.yml/badge.svg)](https://github.com/gabe565/transsmute/actions/workflows/build.yml)\n[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/gabe565)](https://artifacthub.io/packages/helm/gabe565/transsmute)\n\nTranssmute (transmute + RSS) is a server written in Go that builds RSS\nfeeds for websites that don't provide them.\n\nCurrently, the following feed providers are supported:\n\n- YouTube (channel, playlist)\n- Container registries (DockerHub, ghcr.io)\n- Kemono\n\n## Installation\n\nTranssmute can be installed as a container (suggested) or as a compiled\nbinary.\n\n### Docker\n\nA Docker container is available at `ghcr.io/gabe565/transsmute`. The\ncontainerized version of Transsmute will run on port 80 by default,\nand accepts all configuration as flags or as environment variables.\nSee [Configuration](#configuration) for more info.\n\n```shell\ndocker run --rm -it -p 80:80 ghcr.io/gabe565/transsmute\n```\n\nAlternatively, an example [`docker-compose.yml`](/docker-compose.yml) file\nis provided.\n\n### Kubernetes\n\nA Helm chart is available for Kubernetes deployment.\nFor more information, see\n[charts.gabe565.com](https://charts.gabe565.com/charts/transsmute/) or\n[Artifact Hub](https://artifacthub.io/packages/helm/gabe565/transsmute).\n\n## Configuration\n\n| Flag                   | Environment Variable            | Description                                                                  | Default                          |\n|------------------------|---------------------------------|------------------------------------------------------------------------------|----------------------------------|\n| `--address`            | `TRANSSMUTE_ADDRESS`            | Listen address                                                               | `\":3000\"` (`\":80\"` in container) |\n| `--youtube-enabled`    | `TRANSSMUTE_YOUTUBE_ENABLED`    | YouTube API enabled.                                                         | `true`                           |\n| `--youtube-key`        | `TRANSSMUTE_YOUTUBE_KEY`        | YouTube API key. Required to enable YouTube routes!                          | `\"\"`                             |\n| `--docker-enabled`     | `TRANSSMUTE_DOCKER_ENABLED`     | Docker API enabled.                                                          | `true`                           |\n| `--dockerhub-username` | `TRANSSMUTE_DOCKERHUB_USERNAME` | DockerHub username for private repos.                                        | `\"\"`                             |\n| `--dockerhub-password` | `TRANSSMUTE_DOCKERHUB_PASSWORD` | DockerHub password for private repos.                                        | `\"\"`                             |\n| `--ghcr-username`      | `TRANSSMUTE_GHCR_USERNAME`      | GitHub username for [ghcr.io](https://ghcr.io) repos.                        | `\"\"`                             |\n| `--ghcr-password`      | `TRANSSMUTE_GHCR_PASSWORD`      | GitHub PAT for [ghcr.io](https://ghcr.io) repos.                             | `\"\"`                             |\n| `--kemono-enabled`     | `TRANSSMUTE_KEMONO_ENABLED`     | Kemono API enabled.                                                          | `true`                           |\n| `--kemono-hosts`       | `TRANSSMUTE_KEMONO_HOSTS`       | Kemono API hosts, where the key is the URL prefix and the value is the host. | `kemono=kemono.su`               |\n\nCommand-line help reference is also available in [docs](./docs/transsmute.md).\n\n### DockerHub\n\nDockerHub credentials are only required to access private repositories.\n\n### ghcr.io\n\nA personal access token is used to authenticate into GitHub's ghcr.io API.\nThe only required scope is `read:packages`.\n[Click here](https://github.com/settings/tokens/new?description=Transsmute\u0026scopes=read:packages)\nto generate a personal access token with the necessary scopes prefilled.\n\n## Routes\n\n### Feed Type\n\nAn Atom feed is generated by default, but a file extension of\n`.json` or `.rss` will change the output to the given format.\n\n### YouTube\n\n- `/youtube/playlist/{playlist_id}`\n- `/youtube/channel/handle/{channel_handle}`\n- `/youtube/channel/username/{channel_username}`\n- `/youtube/channel/id/{channel_id}`\n\n#### Query Parameters\n| Name       | Description                                                                                                          | Default |\n|------------|----------------------------------------------------------------------------------------------------------------------|---------|\n| `limit`    | Limit the number of articles in the feed.                                                                            | `15`    |\n| `no_embed` | Disables video iframe. Useful for RSS readers that automatically load videos like [Miniflux](https://miniflux.app/). | `false` |\n\n### Docker\n\n- `/docker/tags/{repo}`\n\n#### Query Parameters\n| Name     | Description                                 | Default |\n|----------|---------------------------------------------|---------|\n| `filter` | Anchored regex pattern used to filter tags. | ` `     |\n\n### Kemono\n\n- `/kemono/{service}/user/name/{user_name}`\n- `/kemono/{service}/user/id/{user_id}`\n- `/kemono/{service}/podcast/name/{user_name}`\n- `/kemono/{service}/podcast/id/{user_id}`\n\n#### Query Parameters\n| Name    | Description                                                   | Default |\n|---------|---------------------------------------------------------------|---------|\n| `pages` | Maximum number of pages to load. Each page contains 50 posts. | `1`     |\n| `q`     | Search query.                                                 | ` `     |\n| `tag`   | Only include posts that contain the given tag.                | ` `     |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabe565%2Ftranssmute","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabe565%2Ftranssmute","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabe565%2Ftranssmute/lists"}