Animarr/src/Animarr/Source/HorribleSubs.php

83 lines
2.9 KiB
PHP

<?php
namespace Animarr\Source;
use Animarr\Database;
use Animarr\Downloader;
use Animarr\Extractor\SceneExtractor;
use Animarr\Release\Release;
use Animarr\Request;
class HorribleSubs implements Source{
private $extractor;
public function __construct(SceneExtractor $extractor){
$this->extractor = $extractor;
}
public function canSearch(){
return false;
}
public function getName(){
return "HorribleSubs";
}
/**
* @param $query
* @param int $maxResults
* @return Release[]
*/
public function find($query, $maxResults = -1, $extraQuery = ""){
$url = Database::getConfigKey("tracker.hs.rss.baseurl", "https://horriblesubs.info/rss.php?res=all");
$results = [];
$feed = Request::getURL($url);
if($feed == ""){
return $results;
}
$xml = new \SimpleXMLElement($feed);
foreach($xml->channel->item as $item){
$title = (string) $item->title;
$release = $this->extractor->extractInformation($title);
if($release !== null){
$release->setInfoLink((string) $item->link);
$release->setDownloadLink((string) $item->link);
$release->setUploadDate(\DateTime::createFromFormat(\DateTime::RSS, (string) $item->pubDate)->getTimestamp());
$release->setSeeds(Database::getConfigKey("filter.minseeds", 3));
$release->setTrusted(true);
if($release->getSource() === Release::SOURCE_UNKNOWN){
if(isset(Database::getConfigKey("tracker.hs.unknown.source", [])[$release->getGroup()])){
$release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.hs.unknown.source", [])[$release->getGroup()]));
}else{
$release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.hs.unknown.source.default", "WEB")));
}
}
if($release->getQuality() === Release::QUALITY_UNKNOWN){
if(isset(Database::getConfigKey("tracker.hs.unknown.quality", [])[$release->getGroup()])){
$release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.hs.unknown.quality", [])[$release->getGroup()]));
}else{
$release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.hs.unknown.quality.default", "720")));
}
}
if($release->getVideoCodec() === Release::VIDEO_CODEC_UNKNOWN){
if(isset(Database::getConfigKey("tracker.hs.unknown.videoCodec", [])[$release->getGroup()])){
$release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.hs.unknown.videoCodec", [])[$release->getGroup()]));
}else{
$release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.hs.unknown.videoCodec.default", "H264")));
}
}
$results[$release->getId()] = $release;
}
}
return $results;
}
}