83 lines
2.9 KiB
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;
|
|
}
|
|
}
|
|
|
|
|