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.
157 lines
4.8 KiB
YAML
157 lines
4.8 KiB
YAML
---
|
|
id: funfile
|
|
name: FunFile
|
|
description: "FunFile is a Private Torrent Tracker for MOVIES / TV / GENERAL"
|
|
language: en-US
|
|
type: private
|
|
encoding: UTF-8
|
|
links:
|
|
- https://www.funfile.org/
|
|
|
|
caps:
|
|
categorymappings:
|
|
- {id: 45, cat: Other, desc: "0Day"}
|
|
- {id: 44, cat: TV/Anime, desc: "Anime"}
|
|
- {id: 22, cat: PC, desc: "Applications"}
|
|
- {id: 43, cat: Audio/Audiobook, desc: "Audio Books"}
|
|
- {id: 27, cat: Books/EBook, desc: "Ebook"}
|
|
- {id: 4, cat: PC/Games, desc: "Games"}
|
|
- {id: 40, cat: Other/Misc, desc: "Miscellaneous"}
|
|
- {id: 19, cat: Movies, desc: "Movies"}
|
|
- {id: 6, cat: Audio, desc: "Music"}
|
|
- {id: 31, cat: PC/Mobile-Other, desc: "Portable"}
|
|
- {id: 49, cat: Other, desc: "Tutorials"}
|
|
- {id: 7, cat: TV, desc: "TV"}
|
|
- {id: 48, cat: XXX/Other, desc: "XXX 0Day"}
|
|
- {id: 46, cat: XXX, desc: "XXX Movies"}
|
|
|
|
modes:
|
|
search: [q]
|
|
tv-search: [q, season, ep, imdbid, genre]
|
|
movie-search: [q, imdbid, genre]
|
|
music-search: [q]
|
|
book-search: [q]
|
|
|
|
settings:
|
|
- name: username
|
|
type: text
|
|
label: Username
|
|
- name: password
|
|
type: password
|
|
label: Password
|
|
- name: freeleech
|
|
type: checkbox
|
|
label: Search freeleech only
|
|
default: false
|
|
- name: info_activity
|
|
type: info
|
|
label: Account Inactivity
|
|
default: "User accounts that are inactive for more than 42 days (ie haven't logged into the site) and NOT PARKED are automatically AND irretrievably deleted. Those with Donor VIP status are immune to the 42 day purging up to 1 year."
|
|
- name: info_results
|
|
type: info
|
|
label: Results Per Page
|
|
default: "For best results, change the 'Torrents per page' setting to 100 in your profile."
|
|
|
|
login:
|
|
path: login.php
|
|
method: form
|
|
form: form[name="login"]
|
|
inputs:
|
|
username: "{{ .Config.username }}"
|
|
password: "{{ .Config.password }}"
|
|
returnto: ""
|
|
login: Login
|
|
captcha:
|
|
type: image
|
|
selector: img#captcha
|
|
input: captcha_code
|
|
error:
|
|
- selector: td.mf_content:has(h1:contains("Captcha Error"))
|
|
- selector: td.mf_content:contains("Incorrect Captcha")
|
|
- selector: td.mf_content:contains("Login failed")
|
|
- selector: td.mf_content:contains("Access denied")
|
|
- selector: td.mf_content:contains("remaining tries")
|
|
- selector: td.mf_content:contains("Security code")
|
|
- selector: td.mf_content:contains("Wrong Code")
|
|
test:
|
|
path: index.php
|
|
selector: a[href*="logout.php"]
|
|
|
|
search:
|
|
paths:
|
|
- path: browse.php
|
|
inputs:
|
|
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
|
search: "{{ if .Query.Genre }}{{ .Query.Genre }} {{ else }}{{ end }}{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
|
|
cat: 0
|
|
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
|
|
showspam: 1
|
|
s_title: "{{ if or .Query.IMDBID .Query.Genre }}{{ else }}1{{ end }}"
|
|
s_desc: "{{ if .Query.IMDBID }}1{{ else }}{{ end }}"
|
|
s_tag: "{{ if .Query.Genre }}1{{ else }}{{ end }}"
|
|
|
|
rows:
|
|
selector: "table.mainframe table[cellpadding=\"2\"] > tbody > tr:has(a[href^=\"download.php\"]), table.mainframe table[cellpadding=\"2\"] > tbody > tr[id^=\"ka\"]"
|
|
after: 1
|
|
|
|
fields:
|
|
category:
|
|
selector: a[href^="browse.php?cat="]
|
|
attribute: href
|
|
filters:
|
|
- name: querystring
|
|
args: cat
|
|
title:
|
|
selector: a[href^="details.php?id="]
|
|
attribute: title
|
|
details:
|
|
selector: a[href^="details.php?id="]
|
|
attribute: href
|
|
filters:
|
|
- name: replace
|
|
args: ["&hit=1", ""]
|
|
download:
|
|
selector: a[href^="download.php"]
|
|
attribute: href
|
|
files:
|
|
selector: td.row3:nth-child(4)
|
|
date:
|
|
selector: td.row3:nth-child(6)
|
|
filters:
|
|
- name: timeago
|
|
size:
|
|
selector: td.row3:nth-child(8)
|
|
grabs:
|
|
selector: td.row3:nth-child(9)
|
|
seeders:
|
|
selector: td.row3:nth-child(10)
|
|
leechers:
|
|
selector: td.row3:nth-child(11)
|
|
uploadvolumefactor:
|
|
selector: td.row2 table tr:nth-child(3) td:nth-child(1)
|
|
optional: true
|
|
default: 1
|
|
filters:
|
|
- name: replace
|
|
args: ["X", ""]
|
|
downloadvolumefactor:
|
|
selector: td.row2 table tr:nth-child(3) td:nth-child(2)
|
|
optional: true
|
|
default: 1
|
|
filters:
|
|
- name: replace
|
|
args: ["X", ""]
|
|
genre:
|
|
selector: td.row2 span[style="float:left"]
|
|
filters:
|
|
- name: validate
|
|
args: "action, adventure, animation, biography, comedy, crime, documentary, drama, family, fantasy, game-show, history, home_&_garden, home_and_garden, horror, music, musical, mystery, news, reality, reality-tv, romance, sci-fi, science-fiction, short, sport, talk-show, thriller, travel, war, western"
|
|
description:
|
|
text: "{{ .Result.genre }}"
|
|
minimumratio:
|
|
text: 1.0
|
|
minimumseedtime:
|
|
# 2 days (as seconds = 2 x 24 x 60 x 60)
|
|
text: 172800
|
|
# TBDev
|