void/void.php
2024-10-19 21:29:13 +00:00

190 lines
No EOL
6.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
// Here we begin our descent into a magical world of meaningless character sets because why use actual art?
function getRandomCharacterSet() {
// Apparently, ASCII art isn't stunning enough without bizarre symbols and numbers, so let's randomize that too.
$sets = [
'set1' => '┌┐└┘─│├┤┴┬ ',
'set2' => '╔╗╚╝═║╠╣╩╦ ',
'set3' => '╒╕╘╛═│╞╡╧╤ ',
'set4' => '╓╖╙╜─║╟╢╨╥ ',
'set5' => '01 ',
'set6' => '░▒▓█▀▄▌▐ ',
'set7' => '↑/↓ ',
'set8' => '▲▼/►◄ ',
'set9' => '┌┐└┘─│├┤┴┬╔╗╚╝═║╠╣╩╦╒╕╘╛═│╞╡╧╤╓╖╙╜─║╟╢╨╥░▒▓█▀▄▌▐ ',
'set10' => 'WESEEYOU ',
'set11' => 'OBEYTHESYSTEM ',
'set12' => 'HACKTHEPLANET ',
'set13' => 'CATcat ',
'set14' => 'CYBER '
];
// Randomly decide which aesthetics to ruin this time.
$randomSetKey = array_rand($sets);
return $sets[$randomSetKey];
}
// Create art to showcase the existential void, because everyone needs more ASCII in their life.
function generateRandomAsciiArt($width, $height) {
$characters = getRandomCharacterSet();
$totalChars = mb_strlen($characters);
$art = '';
for ($i = 0; $i < $height; $i++) {
for ($j = 0; $j < $width; $j++) {
$art .= mb_substr($characters, rand(0, $totalChars - 1), 1);
}
$art .= "\n";
}
return $art;
}
// Surely people still believe color inversion is edgy, right?
function invertColor($r, $g, $b) {
return [255 - $r, 255 - $g, 255 - $b];
}
// Lets add some rebellious text to our rebellious art.
function addTextOverlay($image, $text, $fontSize, $posX, $posY, $textColor, $angle = 0) {
$font = __DIR__ . '/BlockZone.ttf'; // Just hoping this font actually exists here, because who checks these things?
imagettftext($image, $fontSize, $angle, $posX, $posY, $textColor, $font, $text);
}
// Convert arbitrary characters into an even more arbitrary image.
function asciiArtToImage($fontSize = 16, $lineHeight = 1.0, $overlayX = 0, $overlayY = 0) {
$fixedWidth = 500;
$fixedHeight = 500;
$charactersPerLine = ceil($fixedWidth / $fontSize);
$lines = ceil($fixedHeight / ($fontSize * $lineHeight));
$asciiArt = generateRandomAsciiArt($charactersPerLine, $lines);
$lines = explode("\n", trim($asciiArt));
$im = imagecreatetruecolor($fixedWidth, $fixedHeight);
$bgRed = rand(0, 255);
$bgGreen = rand(0, 255);
$bgBlue = rand(0, 255);
$bgColor = imagecolorallocate($im, $bgRed, $bgGreen, $bgBlue);
list($textRed, $textGreen, $textBlue) = invertColor($bgRed, $bgGreen, $bgBlue);
$textColor = imagecolorallocate($im, $textRed, $textGreen, $textBlue);
imagefilledrectangle($im, 0, 0, $fixedWidth, $fixedHeight, $bgColor);
$font = __DIR__ . '/BlockZone.ttf'; // Again, fingers crossed this is actually here!
$y = $fontSize;
foreach ($lines as $line) {
imagettftext($im, $fontSize, 0, 0, $y, $textColor, $font, $line);
$y += $fontSize * $lineHeight;
}
// Add some profound text to our profound masterpiece.
addTextOverlay($im, '░▒▓ @void@cyber.ms ▓▒░', 16, $overlayX, $overlayY, $textColor, 90);
return $im;
}
// Preserve this legacy-defining art in a redundant file format.
function saveImage($im) {
$filePath = __DIR__ . '/ascii_art.png';
imagepng($im, $filePath);
imagedestroy($im);
return $filePath;
}
// Time to flood Mastodon with more digital enlightenment.
function uploadToMastodon($filePath, $accessToken, $instance) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "$instance/api/v2/media");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $accessToken
]);
// Making sure our precious file gets the respect it deserves.
$cfile = curl_file_create($filePath, 'image/png', 'ascii_art.png');
$postData = [
'file' => $cfile,
'description' => 'The image has a complex Ascii-Art maze-like pattern, with the text "@void@cyber.ms" written vertically on the right side.'
];
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
$response = curl_exec($ch);
curl_close($ch);
if (!$response) {
return null; // Because why should things go smoothly?
}
// Hope the response contains something useful because we never know.
$responseData = json_decode($response, true);
return $responseData['id'] ?? null;
}
// Finally, lets bombard Mastodon with our work of art wrapped in profound status messages.
function postStatusToMastodon($mediaId, $accessToken, $instance, $status) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "$instance/api/v1/statuses");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $accessToken
]);
$postData = [
'status' => $status,
'visibility' => 'unlisted',
'media_ids[]' => $mediaId
];
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
curl_exec($ch);
curl_close($ch);
}
// Retrieve a random message just because we can.
function getRandomStatus() {
$fileContent = file(__DIR__ . '/post.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if (!$fileContent) {
return 'Default status message'; // Always be prepared for disappointment.
}
return $fileContent[array_rand($fileContent)];
}
// Check our trivial security measure because who doesn't love gatekeeping?
if (!isset($_GET['key']) || $_GET['key'] !== 'XXXX-XXXX-XXXX') {
$overlayX = 440;
$overlayY = 380;
$image = asciiArtToImage(16, 1.0, $overlayX, $overlayY);
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
exit;
}
// Thrilled to showcase this hidden treasure of keys.
$accessToken = 'YOUR_ACCESS_TOKEN_HERE'; // Insert placeholder for the magical access token.
$instance = 'https://cyber.ms'; // The instance where dreams become reality.
$overlayX = 440;
$overlayY = 380;
$image = asciiArtToImage(16, 1.0, $overlayX, $overlayY);
$filePath = saveImage($image);
$mediaId = uploadToMastodon($filePath, $accessToken, $instance);
if ($mediaId) {
$randomStatus = getRandomStatus();
postStatusToMastodon($mediaId, $accessToken, $instance, $randomStatus);
echo 'Image posted to Mastodon!'; // Triumphantly announce our victory.
} else {
echo 'Failed to upload image to Mastodon.'; // Accept our fate gracefully.
}
?>