fix: added og headers, lots of cleanup.

This commit is contained in:
2023-12-20 01:02:15 +00:00
parent 7772be7dc5
commit f7a27e7f62
17 changed files with 817 additions and 62 deletions

View File

@@ -0,0 +1,346 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Models\Artwork;
use App\Models\Episode;
use App\Models\Artist;
use App\Models\Podcast;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Storage;
use Intervention\Image\Facades\Image;
use Carbon\Carbon;
use ImageOptimizer;
class AddMissingV3ArtworksCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'app:add-missing-v3-artworks-command';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Execute the console command.
*/
public function handle()
{
$missing_artworks = [
[
'url' => 'https://noagenda.dev/old/img/7e5e1ca05eb622e2.png',
'title' => 'Show Art 1613',
'artist' => 'dirty-jersey-whore',
'artist_id' => 1318,
'episode' => 1613,
],
[
'url' => 'https://noagenda.dev/old/img/6ac5a1220e954d10.jpg',
'title' => 'No Stinkin\' Title Provided',
'artist' => 'dirty-jersey-whore',
'artist_id' => 1318,
'episode' => 1613,
],
[
'url' => 'https://noagenda.dev/old/img/eb9c5a07a25db93b.jpg',
'title' => 'McMystery',
'artist' => 'Nessworks',
'artist_id' => 1159,
'episode' => 1614,
],
[
'url' => 'https://noagenda.dev/old/img/16dce3f9249b42e8.png',
'title' => 'Blinking Red Lights!',
'artist' => 'mountainjay',
'artist_id' => 891,
'episode' => 1614,
],
[
'url' => 'https://noagenda.dev/old/img/8a6153d61715434b.jpg',
'title' => 'Day One Dictator!',
'artist' => 'matthewdropco1972',
'artist_id' => 1173,
'episode' => 1614,
],
[
'url' => 'https://noagenda.dev/old/img/bf6322f359b0727f.png',
'title' => 'Vivek\'s Notebook',
'artist' => 'sir-paul-couture',
'artist_id' => 4,
'episode' => 1614,
],
[
'url' => 'https://noagenda.dev/old/img/81e71a8e2b24874b.jpg',
'title' => 'Plastic Shoes',
'artist' => 'Nessworks',
'artist_id' => 1159,
'episode' => 1614,
],
[
'url' => 'https://noagenda.dev/old/img/51f16e95c0e86cc9.jpg',
'title' => 'My Transhausen Blewupen',
'artist' => 'francisco-scaramanga',
'artist_id' => 1377,
'episode' => 1614,
],
[
'url' => 'https://noagenda.dev/old/img/b3b6c7988b5fd7f0.jpeg',
'title' => 'McPartner',
'artist' => 'dame-kenny-ben',
'artist_id' => 1121,
'episode' => 1614,
],
[
'url' => 'https://noagenda.dev/old/img/c9c52179e5eedc6f.png',
'title' => 'Red Flashing Lights',
'artist' => 'jack-evans',
'artist_id' => 1224,
'episode' => 1614,
],
[
'url' => 'https://noagenda.dev/old/img/2a29bb2974959b8a.jpg',
'title' => 'Threat Level Swift',
'artist' => 'darren-oneill',
'artist_id' => 756,
'episode' => 1614,
],
[
'url' => 'https://noagenda.dev/old/img/0ed3c698ba336ea9.jpg',
'title' => 'Blinking Lights',
'artist' => 'matthewdropco1972',
'artist_id' => 1173,
'episode' => 1614,
],
[
'url' => 'https://noagenda.dev/old/img/04658d1ccb786d26.png',
'title' => 'Deep State University, In The Morning',
'artist' => 'mountainjay',
'artist_id' => 891,
'episode' => 1614,
],
[
'url' => 'https://noagenda.dev/old/img/61273125525b7861.jpg',
'title' => 'Chad GPT',
'artist' => 'Nessworks',
'artist_id' => 1159,
'episode' => 1615,
],
[
'url' => 'https://noagenda.dev/old/img/479090be93d46fad.jpg',
'title' => 'Chet GPT',
'artist' => 'Nessworks',
'artist_id' => 1159,
'episode' => 1615,
],
[
'url' => 'https://noagenda.dev/old/img/a533697498ad7f75.png',
'title' => 'Word Salad, Roundy Variant',
'artist' => 'comic-strip-blogger',
'artist_id' => 680,
'episode' => 1615,
],
[
'url' => 'https://noagenda.dev/old/img/bcd81059b0440049.png',
'title' => 'word salad (that AI allegedly produces)',
'artist' => 'comic-strip-blogger',
'artist_id' => 680,
'episode' => 1615,
],
[
'url' => 'https://noagenda.dev/old/img/ddfbcc471e4f265f.png',
'title' => 'microphone hand (without show number)',
'artist' => 'comic-strip-blogger',
'artist_id' => 680,
'episode' => 1615,
],
[
'url' => 'https://noagenda.dev/old/img/c11e2b8a88774fca.png',
'title' => 'microphone hand',
'artist' => 'comic-strip-blogger',
'artist_id' => 680,
'episode' => 1615,
],
[
'url' => 'https://noagenda.dev/old/img/f0c08370c93980b8.jpg',
'title' => 'Bye Joe',
'artist' => 'darren-oneill',
'artist_id' => 756,
'episode' => 1615,
],
[
'url' => 'https://noagenda.dev/old/img/9fc5c17fc0ec547e.jpg',
'title' => 'Coof Train',
'artist' => 'darren-oneill',
'artist_id' => 756,
'episode' => 1615,
],
[
'url' => 'https://noagenda.dev/old/img/99e317f0dd6dd10c.jpg',
'title' => 'Comb Your Hair!',
'artist' => 'Nessworks',
'artist_id' => 1159,
'episode' => 1615,
],
[
'url' => 'https://noagenda.dev/old/img/c579a7ef6ab53869.jpg',
'title' => 'Milgram',
'artist' => 'clip-custodian',
'artist_id' => 1431,
'episode' => 1615,
],
[
'url' => 'https://noagenda.dev/old/img/ba791114371437bc.jpeg',
'title' => '67% are Killers',
'artist' => 'dame-kenny-ben',
'artist_id' => 1121,
'episode' => 1615,
],
[
'url' => 'https://noagenda.dev/old/img/05b40baf17249ea5.jpg',
'title' => 'Garage Sale Find',
'artist' => 'francisco-scaramanga',
'artist_id' => 1377,
'episode' => 1615,
],
[
'url' => 'https://noagenda.dev/old/img/fc626cd5542c71d8.jpg',
'title' => 'NA Show Art',
'artist' => 'monsieur-pierrey',
'artist_id' => 58,
'episode' => 1615,
],
[
'url' => 'https://noagenda.dev/old/img/2dc17c67400465ad.jpg',
'title' => 'Merry Christmas Ukraine',
'artist' => 'clip-custodian',
'artist_id' => 1431,
'episode' => 1616,
],
[
'url' => 'https://noagenda.dev/old/img/18724b09fd552fc0.jpg',
'title' => 'THE END IS HERE',
'artist' => 'francisco-scaramanga',
'artist_id' => 1377,
'episode' => 1616,
],
[
'url' => 'https://noagenda.dev/old/img/cefbe40e1afdf45c.jpg',
'title' => 'AI Winter is Coming',
'artist' => 'Nessworks',
'artist_id' => 1159,
'episode' => 1616,
],
[
'url' => 'https://noagenda.dev/old/img/045db414cd60cf2a.jpg',
'title' => 'Space Race Force',
'artist' => 'Nessworks',
'artist_id' => 1159,
'episode' => 1616,
],
[
'url' => 'https://noagenda.dev/old/img/f817a154c260076f.png',
'title' => 'No Agenda Verse',
'artist' => 'comic-strip-blogger',
'artist_id' => 680,
'episode' => 1616,
],
[
'url' => 'https://noagenda.dev/old/img/618ddba291dbe349.png',
'title' => 'NA Show Art',
'artist' => 'comic-strip-blogger',
'artist_id' => 680,
'episode' => 1616,
],
[
'url' => 'https://noagenda.dev/old/img/322eda9c9e44933c.jpg',
'title' => 'Chinese Satellite',
'artist' => 'darren-oneill',
'artist_id' => 756,
'episode' => 1616,
],
[
'url' => 'https://noagenda.dev/old/img/2c9ecc0646cc49dc.jpeg',
'title' => 'Naked No Agenda',
'artist' => 'KorrectDaRekard',
'artist_id' => 1021,
'episode' => 1616,
],
[
'url' => 'https://noagenda.dev/old/img/96ba274872584092.jpg',
'title' => 'NA Show Art',
'artist' => 'matthewdropco1972',
'artist_id' => 1173,
'episode' => 1616,
],
[
'url' => 'https://noagenda.dev/old/img/af8ab3953ba21524.jpg',
'title' => 'False Idols',
'artist' => 'matt-boisvert',
'artist_id' => 1368,
'episode' => 1616,
],
[
'url' => 'https://noagenda.dev/old/img/ec5e76093063d663.jpg',
'title' => 'Collect Them All!',
'artist' => 'matt-boisvert',
'artist_id' => 1368,
'episode' => 1616,
],
[
'url' => 'https://noagenda.dev/old/img/c28ec70cfd544c9b.jpg',
'title' => 'Santa\'s New List',
'artist' => 'matt-boisvert',
'artist_id' => 1368,
'episode' => 1616,
],
[
'url' => 'https://noagenda.dev/old/img/6d228246fb744cb7.jpg',
'title' => 'Christmas is Coming',
'artist' => 'matt-boisvert',
'artist_id' => 1368,
'episode' => 1616,
],
];
foreach ($missing_artworks as $art) {
$artist = Artist::find($art['artist_id']);
$episode = Episode::where('episode_number', $art['episode'])->first();
$this->line('Artist: ' . $artist->slug);
$this->line('Episode: ' . $episode->episode_date->format('Y-m-d'));
$artwork = new Artwork;
$artwork->title = $art['title'];
$artwork->artist_id = $artist->id;
$artwork->created_at = $episode->episode_date->format('Y-m-d ' . now()->format('H:i:s'));
$artwork->updated_at = $episode->episode_date->format('Y-m-d ' . now()->format('H:i:s'));
$artwork->episode_id = $episode->id;
$artwork->podcast_id = 1;
$artwork->approved_by = 4;
$basename = $episode->episode_date->format('Y/m/')
. Str::slug($artist->name)
. '_'
. Str::slug($art['title'])
. '_'
. Str::random(8)
. '.jpg';
$artwork->filename = $basename;
$artwork->save();
$filename = 'artworks/' . $basename;
$thumbnailName = 'thumbnails/' . $basename;
$this->line($basename);
$img = Image::make(file_get_contents($art['url']))->resize(3000, 3000)->encode('jpg', 100);
$thumbImg = Image::make(file_get_contents($art['url']))->resize(512, 512)->encode('jpg', 100);
$imgLocation = Storage::disk('static')->put($filename, $img);
$thumbLocation = Storage::disk('static')->put($thumbnailName, $thumbImg);
ImageOptimizer::optimize(Storage::disk('static')->path($filename));
ImageOptimizer::optimize(Storage::disk('static')->path($thumbnailName));
}
}
}

View File

@@ -12,6 +12,7 @@ use Illuminate\Validation\Rules\File;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Intervention\Image\Facades\Image;
use Illuminate\Support\Facades\Cache;
@@ -28,11 +29,13 @@ class ArtworkController extends Controller
{
$user = auth()->user();
$artworks = Artwork::whereNotNull('approved_by')
->join('episodes', 'artworks.episode_id', '=', 'episodes.id')
->select('artworks.*', DB::raw('episodes.episode_number episode_number'))
->with('artist')
->with('podcast')
->with('episode')
->orderBy('episode_id', 'desc')
->orderBy('created_at', 'desc')
->orderBy('episode_number', 'desc')
->orderBy('artworks.created_at', 'desc')
->paginate($perPage = 52, $columns = ['*'], $pageName = 'artworks');
$podcasts = Cache::remember('publishedPodcasts', 30, function() {
return Podcast::where('published', true)->get();
@@ -107,6 +110,8 @@ class ArtworkController extends Controller
'podcast_id' => $podcast->id,
'episode_id' => $episode->id,
'filename' => $filename,
'created_at' => now(),
'updated_at' => now(),
])->create();
$img = Image::make($rawFile)->resize(3000, null, function($constraint){
$constraint->aspectRatio();
@@ -138,6 +143,12 @@ class ArtworkController extends Controller
->with('episode')
->with('artist')
->first();
if (is_null($artwork->approved_by) && $user && $user->id != $artwork->id) {
return redirect('artworks');
}
if (is_null($artwork->approved_by) && !$user) {
return redirect('artworks');
}
return view('artworks.artwork', [
'artwork' => $artwork,
'user' => $user,
@@ -194,4 +205,26 @@ class ArtworkController extends Controller
dd($request->path());
//$artwork = Artwork::where('legacy_filename', '/assets/artwork/')
}
public function downloadArchiveList(Request $request, $type = 'sd')
{
$artworks = Artwork::whereNotNull('approved_by')
->orderBy('created_at', 'desc')
->pluck('filename');
$output = '';
if ($type == 'sd') {
foreach($artworks as $artwork) {
$output .= '"https://static.noagendaartgenerator.com/thumbnails/' . $artwork . '"' . "\r\n";
}
} else {
foreach($artworks as $artwork) {
$output .= '"https://static.noagendaartgenerator.com/artworks/' . $artwork . '"' . "\r\n";
}
}
return response($output, 200)
->header('Content-type', 'text/plain')
->header('Content-Length', strlen($output))
->header('Content-Disposition', 'attachment; filename="naartgen-archivelist-' . $type . '.txt"');
}
}

View File

@@ -18,8 +18,7 @@ class PageController extends Controller
$headerCounters = $this->getHeaderCounters();
$recentEpisodes = $this->mostRecentEpisodes();
$recentSubmissions = $this->mostRecentSubmissions();
$leaderboard = $this->leaderboardTwelveMonths();
$leaderboard = $this->leaderboardTwelveMonthsLanding();
return view('home.page', [
'user' => $user,
'pageTitle' => 'Home',
@@ -31,6 +30,31 @@ class PageController extends Controller
]);
}
public function leaderboards(Request $request)
{
$user = auth()->user();
return view('leaderboards.leaderboards', [
'user' => $user,
'leaderboardAllTime' => $this->leaderboardAllTime(),
'leaderboardPastTwelveMonths' => $this->leaderboardTwelveMonths(),
'leaderboardRollingSixMonths' => $this->leaderboardRollingSixMonths(),
'leaderboardRollingNinetyDays' => $this->leaderboardRollingNinetyDays(),
]);
}
public function support(Request $request)
{
return view('home.support.page', [
'user' => auth()->user(),
'pageTitle' => 'History and Support',
'headerCounters' => $this->getHeaderCounters(),
'recentEpisodes' => $this->mostRecentEpisodes(),
'recentSubmissions' => $this->mostRecentSubmissions(),
'leaderboard' => $this->leaderboardTwelveMonthsLanding(),
'preferredTheme' => $request->session()->get('preferred_theme') ?? 'dark',
]);
}
private function mostRecentSubmissions() {
$artworks = Cache::remember('latestSubmissions', 30, function() {
return Artwork::whereNotNull('approved_by')
@@ -52,7 +76,7 @@ class PageController extends Controller
->with('podcast')
->with('artwork')
->with('artwork.artist')
->orderBy('episode_date', 'desc')
->orderBy('episode_number', 'desc')
->limit(5)
->get();
});
@@ -101,6 +125,29 @@ class PageController extends Controller
private function leaderboardTwelveMonths() {
$leaderboard = cache()->remember('leaderboardTwelveMonths', 30, function() {
$endDate = now()->endOfDay()->subYear()->format('Y-m-d');
$leaderboard = DB::table('episodes')
->join('artworks', 'artworks.id', '=', 'episodes.artwork_id')
->join('artists', 'artists.id', '=', 'artworks.artist_id')
->select([
DB::raw('artists.id as artistId'),
DB::raw('artists.name as artistName'),
DB::raw('count(artworks.id) as artworkCount')
])
->where('episodes.published', 1)
->where('episodes.episode_date', '>=', $endDate)
->groupBy('artistId')
->orderByDesc('artworkCount')
->limit(50)
->get();
$leaderboard = $this->addArtistModelToLeaderboard($leaderboard);
return $leaderboard;
});
return $leaderboard;
}
private function leaderboardTwelveMonthsLanding() {
$leaderboard = cache()->remember('leaderboardTwelveMonthsLanding', 30, function() {
$endDate = now()->endOfDay()->subYear()->format('Y-m-d');
$leaderboard = DB::table('episodes')
->join('artworks', 'artworks.id', '=', 'episodes.artwork_id')
@@ -122,6 +169,73 @@ class PageController extends Controller
return $leaderboard;
}
private function leaderboardAllTime() {
$leaderboard = cache()->remember('leaderboardAllTime', 30, function() {
$leaderboard = DB::table('episodes')
->join('artworks', 'artworks.id', '=', 'episodes.artwork_id')
->join('artists', 'artists.id', '=', 'artworks.artist_id')
->select([
DB::raw('artists.id as artistId'),
DB::raw('artists.name as artistName'),
DB::raw('count(artworks.id) as artworkCount')
])
->where('episodes.published', 1)
->groupBy('artistId')
->orderByDesc('artworkCount')
->limit(100)
->get();
$leaderboard = $this->addArtistModelToLeaderboard($leaderboard);
return $leaderboard;
});
return $leaderboard;
}
private function leaderboardRollingSixMonths() {
$leaderboard = cache()->remember('leaderboardRollingSixMonth', 30, function() {
$endDate = now()->endOfDay()->subMonths(6)->format('Y-m-d');
$leaderboard = DB::table('episodes')
->join('artworks', 'artworks.id', '=', 'episodes.artwork_id')
->join('artists', 'artists.id', '=', 'artworks.artist_id')
->select([
DB::raw('artists.id as artistId'),
DB::raw('artists.name as artistName'),
DB::raw('count(artworks.id) as artworkCount')
])
->where('episodes.published', 1)
->where('episodes.episode_date', '>=', $endDate)
->groupBy('artistId')
->orderByDesc('artworkCount')
->limit(50)
->get();
$leaderboard = $this->addArtistModelToLeaderboard($leaderboard);
return $leaderboard;
});
return $leaderboard;
}
private function leaderboardRollingNinetyDays() {
$leaderboard = cache()->remember('leaderboardNinetyDays', 30, function() {
$endDate = now()->endOfDay()->subDays(90)->format('Y-m-d');
$leaderboard = DB::table('episodes')
->join('artworks', 'artworks.id', '=', 'episodes.artwork_id')
->join('artists', 'artists.id', '=', 'artworks.artist_id')
->select([
DB::raw('artists.id as artistId'),
DB::raw('artists.name as artistName'),
DB::raw('count(artworks.id) as artworkCount')
])
->where('episodes.published', 1)
->where('episodes.episode_date', '>=', $endDate)
->groupBy('artistId')
->orderByDesc('artworkCount')
->limit(50)
->get();
$leaderboard = $this->addArtistModelToLeaderboard($leaderboard);
return $leaderboard;
});
return $leaderboard;
}
private function addArtistModelToLeaderboard($leaderboard) {
$artistIds = [];
foreach ($leaderboard as $lb) {