Inderdaad, en ik bedoel dus dat hij niet "&q=Arrow S04e02" doet maar "&q=Arrow&season=4&ep=1"mesa57 schreef:Bij tv-search kun season en ep opgeven. Wat bedoel je met "sonar geeft die separaat mee" ?
Even zonder dat ik de SpotPage_newznabapi.php volgorde helemaal uit mijn hoofd ken (moet er nog een goed doorheen spitten).
...&rid=30715&season=4&ep=1
1) RageID wordt geresolved naar de naam van de serie --> Arrow
2) seizoensnummer wordt achterhaald --> S04
3) episode nummer wordt achterhaald --> E04
4) Query op "Arrow S04E02"
Bij &q=Arrow&season=4&ep=1
1) Query op "Arrow"
Omdat je al een query opgeeft, en SpotPage_newznabapi.php niet een gelijke logica gebruikt om de uiteindelijke query te formuleren, worden ondanks dat de season en episode variabelen meegegeven worden deze niet gebruikt.
Dan blijven er voor "&q=" 2 opties over:
1) De client (bijvoorbeeld Sonarr) aggregeert eerst de show, season, en episode en stopt dit in de "q=". De variabelen "season" en "ep" worden niet gebruikt.
2) De SpotPage_newznabapi.php moet voorzien in een aggregatie zodra er additionele parameters meegegeven worden.
Optie 2 ga ik nog wel eens induiken als ik tijd heb.
Voorbeeldlinks:
http://x.x.x.x/spotweb/api?t=tvsearch&c ... son=4&ep=1
http://x.x.x.x/spotweb/api?t=tvsearch&c ... son=4&ep=1
http://x.x.x.x/spotweb/api?t=tvsearch&c ... w%20S04e02
-- [bericht automatisch samengevoegd - 21 okt 2015, 19:40] --
Stukje code toegevoegd die de combi q&season&ep mogelijk maakt. Copy van het rageid stuk, waarbij direct de $tvSearch parameter gezet wordt, daarna gevolgd door de bestaande season / episode code.
Code: Selecteer alles
} elseif (($this->_params['t'] == "t" || $this->_params['t'] == "tvsearch") && $this->_params['q'] != "") {
$tvSearch = $this->_params['q'];
$epSearch = '';
if (preg_match('/^[sS][0-9]{1,2}$/', $this->_params['season']) || preg_match('/^[0-9]{1,4}$/', $this->_params['season'])) {
if (strlen($this->_params['season']) < 3) {
$epSearch = (is_numeric($this->_params['season'])) ? 'S' . str_pad($this->_params['season'], 2, "0", STR_PAD_LEFT) : $this->_params['season'];
} else {
$epSearch = $this->_params['season'] . ' ';
} # else
} elseif ($this->_params['season'] != "") {
$this->showApiError(201);
return ;
} # if
if (preg_match('/^[eE][0-9]{1,2}$/', $this->_params['ep']) || preg_match('/^[0-9]{1,2}$/', $this->_params['ep']) || preg_match('/^[0-9]{1,2}\/[0-9]{1,2}$/', $this->_params['ep'])) {
$epSearch .= (is_numeric($this->_params['ep'])) ? 'E' . str_pad($this->_params['ep'], 2, "0", STR_PAD_LEFT) : $this->_params['ep'];
} elseif ($this->_params['ep'] != "") {
$this->showApiError(201);
return ;
}
# The + operator is supported both by PostgreSQL and MySQL's FTS
$search['value'][] = "Titel:=:+\"" . trim($tvSearch) . "\" +" . $epSearch;