'┌┐└┘─│├┤┴┬ ', '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]; } // Let’s 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, let’s 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. } ?>