Add a Readarr mock instance to the demo

Adds darkalex17/readarr-mock, built from ghcr.io/pennydreadful/bookshelf:softcover
(the maintained Readarr continuation; the LinuxServer image is discontinued and
its metadata endpoint no longer resolves). The captured config carries 6 authors,
327 books, 39 book files, 4 tags, 7 indexers, 193 history rows and one root
folder at /books, with minimal EPUBs under mock-htpc/books so the files show as
imported.

Prowlarr now registers Readarr as a synced application, so its config is
recaptured and the prowlarr-mock image must be rebuilt and pushed alongside.

The compose file, managarr config, justfile recipes and README gain the fourth
instance. The demo script needs no change; it fetches the compose file and
config from main at run time.

Requires a Managarr release with Readarr support, since the demo script runs
the published darkalex17/managarr image against these files.
This commit is contained in:
Dark-Alex-17 committed 2026-09-21 17:12:10 -06:00
1 parent e5fd6817e0
commit f3ad44f7d7
483 files changed
+55515 -15966

No files matched your search

@@ -0,0 +1,89 @@
---
id: pandacd
name: PandaCD
description: "PandaCD is a Public Tracker for MUSIC (Creative Commons and artist-permitted content)"
language: en-US
type: public
encoding: UTF-8
links:
- https://pandacd.io/
caps:
categorymappings:
# https://pandacd.io/api/torznab?t=caps
- {id: 3000, cat: Audio, desc: "Audio"}
- {id: 3010, cat: Audio/MP3, desc: "MP3"}
- {id: 3040, cat: Audio/Lossless, desc: "Lossless"}
modes:
search: [q]
music-search: [q, artist, album, genre]
settings: []
search:
paths:
- path: api/torznab
response:
type: xml
inputs:
t: "{{ .Query.Type }}"
q: "{{ .Keywords }}"
cat: "{{ join .Categories \",\" }}"
artist: "{{ .Query.Artist }}"
album: "{{ .Query.Album }}"
genre: "{{ .Query.Genre }}"
limit: 100
rows:
selector: rss > channel > item
fields:
category:
selector: "[name=category]"
attribute: value
title:
selector: title
details:
selector: guid
download:
selector: enclosure
attribute: url
date:
# Wed, 15 Apr 2026 02:01:34 +0000
selector: pubDate
filters:
- name: dateparse
args: "ddd, dd MMM yyyy HH:mm:ss zzz"
size:
selector: "[name=size]"
attribute: value
seeders:
selector: "[name=seeders]"
attribute: value
leechers:
selector: "[name=leechers]"
attribute: value
grabs:
selector: "[name=grabs]"
attribute: value
files:
selector: "[name=files]"
attribute: value
infohash:
selector: "[name=infohash]"
attribute: value
genre:
selector: "[name=genre]"
attribute: value
description:
text: "{{ .Result.genre }}"
downloadvolumefactor:
selector: "[name=downloadvolumefactor]"
attribute: value
uploadvolumefactor:
selector: "[name=uploadvolumefactor]"
attribute: value
# torznab xml