Animarr/web/list.php

177 lines
5.2 KiB
PHP

<?php
include "common.php";
use Animarr\Release\Release;
use Animarr\Torrent\Torrent;
use Animarr\Database;
use Animarr\Release\MultiRelease;
$aid = null;
$info = null;
$limitSpecial = false;
if(isset($_GET["aid"])){
$aid = intval($_GET["aid"]);
$info = $aniDB->getAnime($aid);
$limitSpecial = isset($_GET["specials"]) ? $_GET["specials"] == 1 : false;
}
if($info !== null){
printHeader($info["title"]);
echo "<h1>".$info["title"]." <a href=\"https://anidb.net/perl-bin/animedb.pl?show=anime&aid=$aid\" target=\"_blank\">[anidb-$aid]</a></h1>";
}else{
printHeader("Recent releases");
echo "<h1>Recent releases</h1>";
}
echo "<p>";
echo "<table class=\"table table-striped table-hover\">";
echo "<tr>";
if($aid === null){
echo "<th>Show Name</th>";
}
echo "<th>Info</th><th>#</th><th style='min-width: 150px'>Name</th><th>Date</th><th>Link</th></tr>";
$blacklist = Database::getConfigKey("filter.groups.blacklist", []);
foreach($database->getRecentReleases(500, $aid, $limitSpecial ? Release::TYPE_SPECIAL : null) as $release){
$group = $release->getGroup();
if(in_array($group, $blacklist)){
continue;
}
if($release->isTrusted()){
$group = "<span class=\"label label-success\">$group</span>";
}else{
$group = "<span class=\"label label-default\">$group</span>";
}
$source = $release->getSourceString();
if($release->getSource() === Release::SOURCE_BLURAY){
$source = "<span class=\"label label-primary\">$source</span>";
}elseif($release->getSource() === Release::SOURCE_DVD){
$source = "<span class=\"label label-success\">$source</span>";
}elseif($release->getSource() === Release::SOURCE_TV){
$source = "<span class=\"label label-info\">$source</span>";
}else{
$source = "<span class=\"label label-default\">$source</span>";
}
$quality = $release->getQualityString();
if($release->getQuality() === Release::QUALITY_1080){
$quality = "<span class=\"label label-primary\">$quality</span>";
}elseif($release->getQuality() === Release::QUALITY_720){
$quality = "<span class=\"label label-success\">$quality</span>";
}else{
$quality = "<span class=\"label label-default\">$quality</span>";
}
$type = $release->getTypeString();
if($release->getType() === Release::TYPE_SINGLE){
$type = "<span class=\"label label-success\">$type</span>";
}elseif($release->getType() === Release::TYPE_VOLUME or $release->getType() === Release::TYPE_BATCH){
$type = "<span class=\"label label-primary\">$type</span>";
}else if($release->getType() === Release::TYPE_SPECIAL){
$type = "<span class=\"label label-warning\">$type</span>";
}else{
$type = "<span class=\"label label-default\">$type</span>";
}
$episodes = $release->getNumber() !== -1 ? "<span class=\"label label-success\">#" . $release->getNumber() . "</span>" : "";
if($release instanceof MultiRelease){
$e = [];
foreach($release->getContents() as $r){
if($r->getType() == Release::TYPE_SINGLE and $r->getNumber() >= 0){
$e[$r->getNumber()] = $r->getNumber();
}
}
sort($e);
$episodes = "";
$lastEpisode = null;
$lastWritten = null;
foreach($e as $episodeNumber){
$diff = ($episodeNumber - $lastEpisode);
if($lastEpisode !== null and $diff <= 1){
$lastEpisode = $episodeNumber;
continue;
}
$episodes .= ($lastEpisode === null ? "" : ("-$lastEpisode, ")) . $episodeNumber;
$lastEpisode = $episodeNumber;
$lastWritten = $episodeNumber;
}
$diff = ($episodeNumber - $lastWritten);
if($diff > 0){
$episodes .= ($lastWritten === null ? "" : ("-$lastEpisode"));
}
}
$diff = time() - $release->getUploadDate();
$hour = 3600;
$day = $hour * 24;
$week = $day * 7;
$date = "";
if($diff >= $week){
$weeks = floor($diff / $week);
$date .= "{$weeks}w ";
$diff -= $weeks * $week;
}
if($diff >= $day){
$days = floor($diff / $day);
$date .= "{$days}d ";
$diff -= $days * $day;
}
if($diff >= $hour){
$hours = floor($diff / $hour);
$date .= "{$hours}h ";
$diff -= $hours * $hour;
}
$date .= floor($diff / 60) . "m ago";
$url = $release->getInfoLink();
$urlName = getURLName($url);
if(strlen($urlName) > 23){
$urlName = substr($urlName, 0, 20) . "...";
}
echo "<tr class=\"".($release->isBest() ? "info" : ($release->isTrusted() ? "success" : ""))."\">";
$i = $aniDB->matchRelease($release);
if($aid === null){
echo "<td><small><a href=\"list.php?aid=".$i["aid"]."\">".$i["title"]."</a></small></td>";
}else if ($i !== null and $aid != $i["aid"]){
$database->matchRelease($release, true);
}
echo "<td>$group $type $source $quality</td>";
echo "<td>$episodes</td>";
echo "<td><small><code>".$release->getOriginalTitle()."</code>&nbsp;<a href=\"release.php?release_id=".$release->getId()."\"><span class=\"glyphicon glyphicon-info-sign\"></span></a></small></td>";
echo "<td>$date</td>";
echo "<td><a href=\"".$url."\" target=\"_blank\">".$urlName."</a>&nbsp;<a href=\"".$release->getDownloadLink()."\"><span class=\"glyphicon ".(strpos($release->getDownloadLink(), "magnet:") !== false ? "glyphicon-magnet" : "glyphicon-circle-arrow-down") ."\"></span></a>&nbsp;<a href=\"get.php?release_id=".$release->getId()."\"><span class=\"glyphicon glyphicon-plus\"></span></a></td>";
echo "</tr>";
}
echo "</table>";
echo "</p>";
printFooter();