Gazelle/sections/better/upload.php

212 lines
7.1 KiB
PHP
Raw Normal View History

2011-03-28 14:21:28 +00:00
<?
2013-02-17 08:00:08 +00:00
if (!empty($_GET['userid']) && is_number($_GET['userid'])) {
2011-03-28 14:21:28 +00:00
if (check_perms('users_override_paranoia')) {
$UserID = $_GET['userid'];
} else {
error(403);
}
} else {
$UserID = $LoggedUser['ID'];
}
2013-02-17 08:00:08 +00:00
$Encodings = array('V0 (VBR)', 'V2 (VBR)', '320');
$EncodingKeys = array_fill_keys($Encodings, true);
// Get list of FLAC uploads
2011-03-28 14:21:28 +00:00
$DB->query("SELECT t.GroupID, t.ID
FROM torrents AS t
2013-02-18 08:00:22 +00:00
JOIN torrents_group AS tg ON tg.ID = t.GroupID
2013-02-13 08:00:35 +00:00
WHERE
t.Format='FLAC'
2011-03-28 14:21:28 +00:00
AND ((t.LogScore = '100' AND t.Media = 'CD')
2013-02-17 08:00:08 +00:00
OR t.Media != 'CD')
2013-02-18 08:00:22 +00:00
AND tg.CategoryID = 1
2011-03-28 14:21:28 +00:00
AND t.UserID='$UserID'");
2013-02-17 08:00:08 +00:00
$UploadedTorrentIDs = array_fill_keys($DB->collect('ID'), true);
2011-03-28 14:21:28 +00:00
$UploadedGroupIDs = $DB->collect('GroupID');
2013-02-17 08:00:08 +00:00
if (count($UploadedGroupIDs) == 0) {
error("You haven't uploaded any perfect FLACs!");
}
2011-03-28 14:21:28 +00:00
2013-02-17 08:00:08 +00:00
// Create hash table
$DB->query("CREATE TEMPORARY TABLE temp_sections_better_upload
2011-03-28 14:21:28 +00:00
SELECT t.GroupID,
2013-02-17 08:00:08 +00:00
GROUP_CONCAT(t.Encoding SEPARATOR ' ') AS EncodingList,
CRC32(CONCAT_WS(' ', Media, Remasteryear, Remastertitle,
Remasterrecordlabel, Remastercataloguenumber)) AS RemIdent
2011-03-28 14:21:28 +00:00
FROM torrents AS t
2013-02-18 08:00:22 +00:00
WHERE t.GroupID IN(".implode(',',$UploadedGroupIDs).") AND t.Format IN ('FLAC', 'MP3')
2013-02-17 08:00:08 +00:00
GROUP BY t.GroupID, RemIdent");
2011-03-28 14:21:28 +00:00
$DB->query("SELECT GroupID FROM temp_sections_better_upload
2013-02-13 08:00:35 +00:00
WHERE EncodingList NOT LIKE '%V0 (VBR)%'
OR EncodingList NOT LIKE '%V2 (VBR)%'
2011-03-28 14:21:28 +00:00
OR EncodingList NOT LIKE '%320%'");
2013-02-17 08:00:08 +00:00
$GroupIDs = array_fill_keys($DB->collect('GroupID'), true);
if (count($GroupIDs) == 0) {
error('No results found.');
}
2011-03-28 14:21:28 +00:00
2013-02-17 08:00:08 +00:00
$Groups = Torrents::get_groups(array_keys($GroupIDs));
$Groups = $Groups['matches'];
2011-03-28 14:21:28 +00:00
2013-02-17 08:00:08 +00:00
$TorrentGroups = array();
foreach ($Groups as $GroupID => $Group) {
if (empty($Group['Torrents'])) {
unset($Groups[$GroupID]);
continue;
}
foreach ($Group['Torrents'] as $Torrent) {
$TorRemIdent = "$Torrent[Media] $Torrent[RemasterYear] $Torrent[RemasterTitle] $Torrent[RemasterRecordLabel] $Torrent[RemasterCatalogueNumber]";
if (!isset($TorrentGroups[$Group['ID']])) {
$TorrentGroups[$Group['ID']] = array(
$TorRemIdent => array(
'FlacID' => 0,
'Formats' => array(),
'IsSnatched' => $Torrent['IsSnatched'],
'Medium' => $Torrent['Media'],
'RemasterTitle' => $Torrent['RemasterTitle'],
'RemasterYear' => $Torrent['RemasterYear'],
'RemasterRecordLabel' => $Torrent['RemasterRecordLabel'],
'RemasterCatalogueNumber' => $Torrent['RemasterCatalogueNumber']
)
);
} elseif (!isset($TorrentGroups[$Group['ID']][$TorRemIdent])) {
$TorrentGroups[$Group['ID']][$TorRemIdent] = array(
'FlacID' => 0,
'Formats' => array(),
'IsSnatched' => $Torrent['IsSnatched'],
'Medium' => $Torrent['Media'],
'RemasterTitle' => $Torrent['RemasterTitle'],
'RemasterYear' => $Torrent['RemasterYear'],
'RemasterRecordLabel' => $Torrent['RemasterRecordLabel'],
'RemasterCatalogueNumber' => $Torrent['RemasterCatalogueNumber']
);
}
2013-02-18 08:00:22 +00:00
if ($Torrent['Format'] == 'MP3' && isset($EncodingKeys[$Torrent['Encoding']])) {
2013-02-17 08:00:08 +00:00
$TorrentGroups[$Group['ID']][$TorRemIdent]['Formats'][$Torrent['Encoding']] = true;
$Counter['existing'][$Torrent['Encoding']] += 1;
} elseif (isset($UploadedTorrentIDs[$Torrent['ID']])) {
$TorrentGroups[$Group['ID']][$TorRemIdent]['FlacID'] = $Torrent['ID'];
}
}
}
2013-02-18 08:00:22 +00:00
$Counter = array(
'total' => 0, //how many FLAC torrents can be transcoded?
'miss_total' => 0, //how many transcodes are missing?
'miss_V0 (VBR)' => 0, //how many V0 transcodes are missing?
'miss_V2 (VBR)' => 0, //how many V2 transcodes are missing?
'miss_320' => 0, //how many 320 transcodes are missing?
);
2013-02-17 08:00:08 +00:00
foreach($TorrentGroups as $Editions) {
foreach($Editions as $Edition) {
if($Edition['FlacID'] == 0) { continue; } // no FLAC in this edition
$edition_miss = 0; //number of transcodes missing in this edition
foreach($Encodings as $Encoding) {
if(!isset($Edition['Formats'][$Encoding])) {
++$edition_miss;
++$Counter['miss_'.$Encoding];
}
}
$Counter['miss_total'] += $edition_miss;
$Counter['total'] += (bool)$edition_miss;
}
}
2011-03-28 14:21:28 +00:00
2012-10-11 08:00:15 +00:00
View::show_header('Transcode Uploads');
2011-03-28 14:21:28 +00:00
?>
2013-02-23 08:00:22 +00:00
<div class="linkbox">
<a href="better.php" class="brackets">Back to better.php list</a>
</div>
2011-03-28 14:21:28 +00:00
<div class="thin">
2013-02-18 08:00:22 +00:00
<h2>Transcode uploaded torrents</h2>
2013-02-17 08:00:08 +00:00
<h3>Stats</h3>
<div class="box pad">
<p>
2013-02-23 08:00:22 +00:00
Number of perfect FLACs you can transcode: <?=number_format($Counter['total'])?><br />
Number of missing transcodes: <?=number_format($Counter['miss_total'])?><br />
Number of missing V2 / V0 / 320 transcodes: <?=number_format($Counter['miss_V2 (VBR)'])?> / <?=number_format($Counter['miss_V0 (VBR)'])?> / <?=number_format($Counter['miss_320'])?>
2013-02-17 08:00:08 +00:00
</p>
</div>
<h3>List</h3>
2012-09-01 08:00:24 +00:00
<table width="100%" class="torrent_table">
2011-03-28 14:21:28 +00:00
<tr class="colhead">
<td>Torrent</td>
<td>V2</td>
<td>V0</td>
<td>320</td>
</tr>
<?
2013-02-17 08:00:08 +00:00
foreach ($TorrentGroups as $GroupID => $Editions) {
$GroupInfo = $Groups[$GroupID];
2013-02-25 21:16:55 +00:00
extract(Torrents::array_group($GroupInfo));
2013-02-17 08:00:08 +00:00
2012-12-06 08:00:17 +00:00
if (!empty($ExtendedArtists[1]) || !empty($ExtendedArtists[4]) || !empty($ExtendedArtists[5]) || !empty($ExtendedArtists[6])) {
unset($ExtendedArtists[2]);
unset($ExtendedArtists[3]);
2013-02-17 08:00:08 +00:00
$ArtistNames = Artists::display_artists($ExtendedArtists);
2012-12-06 08:00:17 +00:00
} else {
2013-02-17 08:00:08 +00:00
$ArtistNames = '';
2011-03-28 14:21:28 +00:00
}
2012-12-06 08:00:17 +00:00
2013-02-17 08:00:08 +00:00
foreach ($Editions as $RemIdent => $Edition) {
if (!$Edition['FlacID'] || count($Edition['Formats']) == 3) {
continue;
2011-03-28 14:21:28 +00:00
}
2013-02-17 08:00:08 +00:00
$DisplayName = $ArtistNames . '<a href="torrents.php?id='.$GroupID.'&amp;torrentid='.$Edition['FlacID'].'#torrent'.$Edition['FlacID'].'" title="View Torrent">'.$GroupName.'</a>';
if($GroupYear > 0) {
$DisplayName .= " [".$GroupYear."]";
}
if ($ReleaseType > 0) {
$DisplayName .= " [".$ReleaseTypes[$ReleaseType]."]";
}
$DisplayName .= ' ['.$Edition['Medium'].']';
2013-02-13 08:00:35 +00:00
2013-02-17 08:00:08 +00:00
$EditionInfo = array();
if (!empty($Edition['RemasterYear'])) {
$ExtraInfo = $Edition['RemasterYear'];
} else {
$ExtraInfo = '';
2012-02-05 08:00:20 +00:00
}
2013-02-17 08:00:08 +00:00
if (!empty($Edition['RemasterRecordLabel'])) {
$EditionInfo[] = $Edition['RemasterRecordLabel'];
}
if (!empty($Edition['RemasterTitle'])) {
$EditionInfo[] = $Edition['RemasterTitle'];
}
if (!empty($Edition['RemasterCatalogueNumber'])) {
$EditionInfo[] = $Edition['RemasterCatalogueNumber'];
}
if (!empty($Edition['RemasterYear'])) {
$ExtraInfo .= ' - ';
}
2013-02-25 21:16:55 +00:00
$TorrentTags = new Tags($TagList);
2013-02-17 08:00:08 +00:00
$ExtraInfo .= implode(' / ', $EditionInfo);
2011-03-28 14:21:28 +00:00
?>
2013-02-17 08:00:08 +00:00
<tr class="torrent torrent_row<?=$Edition['IsSnatched'] ? ' snatched_torrent' : ''?>">
2011-03-28 14:21:28 +00:00
<td>
2012-12-06 08:00:17 +00:00
<span class="torrent_links_block">
2013-02-17 08:00:08 +00:00
<a href="torrents.php?action=download&amp;id=<?=$Edition['FlacID']?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>" title="Download" class="brackets">DL</a>
2012-12-06 08:00:17 +00:00
</span>
2013-02-13 08:00:35 +00:00
<?=$DisplayName?>
2013-02-17 08:00:08 +00:00
<div class="torrent_info"><?=$ExtraInfo?></div>
2013-02-25 21:16:55 +00:00
<div class="tags"><?=$TorrentTags->format()?></div>
2011-03-28 14:21:28 +00:00
</td>
2013-02-23 08:00:22 +00:00
<td><strong <?=isset($Edition['Formats']['V2 (VBR)']) ? 'class="important_text_alt">YES' : 'class="important_text">NO'?></strong></td>
<td><strong <?=isset($Edition['Formats']['V0 (VBR)']) ? 'class="important_text_alt">YES' : 'class="important_text">NO'?></strong></td>
<td><strong <?=isset($Edition['Formats']['320']) ? 'class="important_text_alt">YES' : 'class="important_text">NO'?></strong></td>
2011-03-28 14:21:28 +00:00
</tr>
2013-02-17 08:00:08 +00:00
<?
}
}
?>
2011-03-28 14:21:28 +00:00
</table>
</div>
<?
2012-10-11 08:00:15 +00:00
View::show_footer();
2011-03-28 14:21:28 +00:00
?>