Feed import (MRSS, RSS, CSV, JSON)
Connect external feeds and automatically pull new videos on a schedule.
Feed import (sometimes called grabbers) keeps your library growing on its own. You subscribe to a remote feed once, and TubePress checks it on a schedule, pulls in new videos and skips anything it has already seen.
It lives as a tab inside the import screen — open /admin/import and switch to Feeds (the /admin/feeds URL redirects there). Unlike a one-time file upload, a feed keeps topping your site up as the source publishes more.
What feed import does
Each source is a feed URL plus a few settings. On its schedule, TubePress fetches the feed, normalises every entry and queues the new ones; a second stage then turns those queued items into videos. You choose how the media is stored:
- Embed — store the player link. Fast, uses no storage, and the video streams from the source.
- Download — fetch the actual file to your storage or CDN and transcode it into your renditions.
Per source you also set the video type (straight, gay or hentai) and whether new videos are auto-published or held as drafts for review.
Supported feed formats
Four formats are supported, auto-detected by the Detect & Preview button:
| Format | Mapping | Notes |
|---|---|---|
| MRSS | Automatic | Media RSS — the richest option; fields map themselves. |
| RSS | Automatic | Standard RSS items. |
| CSV | Manual | A CSV served at a URL; you map the columns. |
| JSON | Manual | A JSON array served at a URL; you map the keys. |
Adding a feed source
- Open the Feeds tab. Go to
/admin/import, select Feeds, then Add Feed Source. - Enter the feed URL. It must start with
http://orhttps://. Click Detect & Preview to auto-detect the format and preview the first entries. - Name it and confirm the type. Give the source a name and check the detected format (MRSS, RSS, CSV or JSON) and the video type.
- Choose a mode. Embed to store player links, or Download to fetch and transcode the files.
- Map columns if needed. MRSS and RSS map themselves; for CSV/JSON, drag each column onto the matching field.
- Set the schedule and options. Pick a refresh interval, the duplicate rule, auto-publish, and how many pages to crawl.
- Save. Use Fetch now to pull immediately, or let the schedule run. Run queue processes any pending items on demand.
Field mapping
Feeds normalise entries onto the same canonical fields the importer uses. For MRSS/RSS this is automatic; for CSV/JSON you map your columns onto:
video_url doubles as the embed link if you have not mapped embed_url, so a minimal feed only needs a title and one URL.Scheduling & automation
A background task named feed_import runs on the pseudo-cron roughly every 30 seconds — no system crontab needed. Each source is only fetched when its own interval has elapsed:
- Manual only — never auto-fetched; use Fetch now.
- Every 15 minutes, every hour, every 6 hours or every day.
The same task also drains the import queue — embed items several at a time, downloads one at a time so a big file never blocks the rest. The Max pages setting (1–50) limits how deep a single fetch crawls a paginated feed.
Deduplication & filters
De-duplication is automatic and works on two levels:
- Per source. Each item's
guidis remembered, so re-fetching only queues genuinely new entries (already-seen items are counted and skipped). - Across your site. In Download mode the item's ID is stored on the video, so the same clip arriving from two feeds is not downloaded twice.
The On duplicate option decides what happens when an item already exists: Skip (recommended) or Update existing.
Troubleshooting feeds
- "Could not recognise the feed format." The URL did not return valid MRSS/RSS/CSV/JSON. Open it in a browser and confirm you see the raw feed, not an HTML page.
- Items stuck "importing." They self-recover after about 30 minutes and are retried; transient failures retry up to three times before being marked failed.
- Failed items. Use Reprocess to requeue everything that failed for a source. Each source shows its last status and message.
- Download mode fails. Download needs a direct video URL (not a watch page); private or internal hosts are blocked, and there is a 5 GB ceiling per file.
- Nothing is importing. Check the schedule is not Manual only, that the source is enabled, and that your site is getting traffic to drive the cron.
Next steps
Still stuck?
Open a ticket from your dashboard and our team will help you out.