pr0gramm is an imageboard, and its new frontend pr0.app uses the same public
api. every upload is a single image or a video, served over plain cdn urls
(img./vid./thumb.pr0gramm.com) that need no login for sfw items.
the extractor reads the item from the public api and picks what the site itself
offers:
- videos exist as h264 (mp4, always with audio) and vp9 (webm, usually
without audio), in several height classes; videoQuality caps the height
- subtitles (.vtt) are attached for uploads that have audio
- items without any video variant are images, and are proxied
the media path pr0gramm reports isn't always up to date: an item that was
converted after its upload keeps the old path in `fullsize` (a `.png` that is
really served as `.jpg`), and a video without any variant has only its `image`
path. rather than trusting whichever field is filled, the reachable candidate
is probed. reviewers who prefer not to make HEAD requests here can simply keep
the `fullsize || image` order instead.
item links from both pr0gramm.com and pr0.app are accepted (/top/<id>,
/new/<id>, /user/<user>/<id>, ... -- the item id is always the last path
segment), and pr0.app is canonicalized to pr0gramm.com.
the media is served with `access-control-allow-origin: https://pr0.app` and
without referer checks, so a plain redirect response works for both the api and
the web ui and no local processing is needed.
this change was written with Hermes Agent and reviewed by me before submitting.
|
||
|---|---|---|
| .github | ||
| api | ||
| docs | ||
| packages | ||
| web | ||
| .deepsource.toml | ||
| .dockerignore | ||
| .gitignore | ||
| CONTRIBUTING.md | ||
| Dockerfile | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
cobalt is a media downloader that doesn't piss you off. it's friendly, efficient, and doesn't have ads, trackers, paywalls or other nonsense.
paste the link, get the file, move on. that simple, just how it should be.
cobalt monorepo
this monorepo includes source code for api, frontend, and related packages:
it also includes documentation in the docs tree:
- how to run a cobalt instance
- how to protect a cobalt instance
- cobalt api instance environment variables
- cobalt api documentation
ethics
cobalt is a tool that makes downloading public content easier. it takes zero liability. the end user is responsible for what they download, how they use and distribute that content. cobalt never caches any content, it works like a fancy proxy.
cobalt is in no way a piracy tool and cannot be used as such. it can only download free & publicly accessible content. same content can be downloaded via dev tools of any modern web browser.
contributing
if you're considering contributing to cobalt, first of all, thank you! check the contribution guidelines here before getting started, they'll help you do your best right away.
thank you
cobalt is sponsored by royalehosting.net. a part of our infrastructure is hosted on their network. we really appreciate their kindness and support!
licenses
for relevant licensing information, see the api and web READMEs. unless specified otherwise, the remainder of this repository is licensed under AGPL-3.0.