Animarr/src/Animarr/Source/HorribleSubsOld.php

110 lines
3.6 KiB
PHP

<?php
namespace Animarr\Source;
use Animarr\Database;
use Animarr\Downloader;
use Animarr\Extractor\SceneExtractor;
use Animarr\Release\Release;
use Animarr\Request;
class HorribleSubsOld implements Source{
private $extractor;
public function __construct(SceneExtractor $extractor){
$this->extractor = $extractor;
}
public function canSearch(){
return false;
}
public function getName(){
return "HorribleSubsOld";
}
/**
* @param $query
* @param int $maxResults
* @return Release[]
*/
public function find($query, $maxResults = -1, $extraQuery = ""){
$url = Database::getConfigKey("tracker.hsold.feed.baseurl", "https://horriblesubs.info/lib/latest.php?mode=batch");
$results = [];
$offset = 0;
do{
$lastCount = count($results);
$feed = Request::getURL($url . "&nextid=" . $offset);
if($feed == ""){
return $results;
}
$dom = new \DOMDocument();
@$dom->loadHTML($feed);
foreach($dom->getElementsByTagName("tr") as $item){
if($item->getElementsByTagName("td")->item(0)->getAttribute("class") != "dl-label"){
continue;
}
$title = "[HorribleSubs] " . $item->getElementsByTagName("td")->item(0)->textContent;
$magnetLink = null;
foreach($item->getElementsByTagName("a") as $link){
if(strpos($link->getAttribute("href"), "magnet:") === 0){
$magnetLink = $link->getAttribute("href");
break;
}
}
$release = $this->extractor->extractInformation($title);
if($magnetLink !== null and $release !== null){
$release->setInfoLink($magnetLink);
$release->setDownloadLink($magnetLink);
$release->setSeeds(Database::getConfigKey("filter.minseeds", 3));
$release->setTrusted(true);
if($release->getSource() === Release::SOURCE_UNKNOWN){
if(isset(Database::getConfigKey("tracker.hsold.unknown.source", [])[$release->getGroup()])){
$release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.hsold.unknown.source", [])[$release->getGroup()]));
}else{
$release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.hsold.unknown.source.default", "WEB")));
}
}
if($release->getQuality() === Release::QUALITY_UNKNOWN){
if(isset(Database::getConfigKey("tracker.hsold.unknown.quality", [])[$release->getGroup()])){
$release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.hsold.unknown.quality", [])[$release->getGroup()]));
}else{
$release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.hsold.unknown.quality.default", "720")));
}
}
if($release->getVideoCodec() === Release::VIDEO_CODEC_UNKNOWN){
if(isset(Database::getConfigKey("tracker.hsold.unknown.videoCodec", [])[$release->getGroup()])){
$release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.hsold.unknown.videoCodec", [])[$release->getGroup()]));
}else{
$release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.hsold.unknown.videoCodec.default", "H264")));
}
}
if($release instanceof MultiRelease and count($release->getContents()) <= 0 and Database::getConfigKey("magnet.unknownRelease.wait", false)){
Torrent::queueMagnetTorrent($magnetLink, Database::getConfigKey("torrent.cache.folder", null));
continue;
}
$results[$release->getId()] = $release;
}
}
++$offset;
}while(($maxResults === -1 or count($results) < $maxResults) and $lastCount !== count($results));
return $results;
}
}