110 lines
3.6 KiB
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;
|
|
}
|
|
}
|
|
|
|
|