nyxsite/index.php
2025-04-18 13:17:10 -05:00

203 lines
No EOL
6.8 KiB
PHP

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Nyx Tutt</title>
<link href="assets/index.css" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<?php
$skip_exts = ['ico', 'png', 'jpg', 'css', 'js', 'webp', 'gif', 'svg', 'woff', 'woff2', 'ttf', 'eot', 'otf'];
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$ext = pathinfo($path, PATHINFO_EXTENSION);
if (in_array($ext, $skip_exts)) {
return;
}
$filename = 'visitorCount.txt';
$fp = fopen($filename, 'r+');
if (flock($fp, LOCK_EX)) {
$count = (int) fread($fp, filesize($filename));
$count++;
rewind($fp);
fwrite($fp, (string) $count);
ftruncate($fp, ftell($fp));
fflush($fp);
flock($fp, LOCK_UN);
}
fclose($fp);
// display the count
echo "welcome, visitor number <strong>$count</strong>!";
?>
<p>
<h1>Nyx Tutt</h1> is a <span class="hoverblur">trans</span>feminine
<span class="hoverblur">robot-cat-girl-</span>thing.
it likes <span class="hoverblur">matrix, irc, xmpp, and other</span>
open chat protocols, privacy advocacy, the fediverse, programming,
and more. it uses it/its when possible, otherwise she/her when not
possible (for example, non-english languages that don't have the concept
of it/its like this).
</p>
<h3>more about it</h3>
<p>
it speaks in 3rd person about itself. it also likes to write in all
lowercase often, and it's learning web development. it also has a
few projects in progress, those will be explained later in this page.
please don't use 2nd person "you" when referring to it. instead, use its
name, or something along the lines of "that one".
</p>
<h3>flags</h3>
<p>
<img src="/assets/88x31s/rainbow.png" alt="LGBTQ+ flag" width="88" height="31">
<img src="/assets/88x31s/agender.png" alt="Agender flag" width="88" height="31">
<img src="/assets/88x31s/lesbian.png" alt="Lesbian flag" width="88" height="31">
<img src="/assets/88x31s/trans.png" alt="Trans flag" width="88" height="31">
</p>
<h3>beliefs</h3>
<p>
it has quite a few seemingly uncommon beliefs, like that everyone should
have the same rights to know things. as such, it runs things like a
<a href="https://snowflake.torproject.org/">Snowflake</a> proxy, which
helps people in countries that like to censor information connect to Tor.
it also wants to run a Tor (non-exit) node sometime in the future, although
it doesn't have the time to manage that currently. it also belives in
not punishing others nearly as much, and outlawing the death penalty everywhere.
</p>
<h3>contact</h3>
<p>
this one has a few ways to be contacted:
</p>
<ul>
<li>
<a href="xmpp:nyx@everypizza.im">xmpp</a><br>
</li>
<li>
<a href="matrix:u/n:everypizza.im">matrix</a><br>
</li>
<li>
<a href="mailto:me@everypizza.im">email</a> (it has a pgp key over in <a
href="https://keys.openpgp.org/search?q=me%40everypizza.im">keys.openpgp.org</a>.)<br>
</li>
<li>
<a href="https://sharkey.everypizza.im">fedi</a><br>
</li>
<li>
discord: everypizza
</li>
</ul>
<h3>social media</h3>
<p>
this one isn't on mainstream social media. instead, it uses things
like <a href="https://sharkey.everypizza.im/@me">fedi</a>.
other things that <i>could</i> be counted:
</p>
<ul>
<li>
<a href="https://listenbrainz.org/user/everypizza/">
listenbrainz
</a>
</li>
<li>
<a href="https://git.everypizza.im/n/">
git
</a>
</li>
<li>
<a href="https://blog.everypizza.im/">
blog
</a>
</li>
</ul>
<h3>projects</h3>
<p>
this one has a ton of unfinished projects. it also has a few things,
like skibidifetch (a fork of badapplefetch by
<a href="https://ari.lt/">Ari</a>), that are smaller.
it also made a collection of web-based tools using server-side rendering,
which is hosted at <a href="https://tools.everypizza.im">tools.everypizza.im</a>.
</p>
<h4>current project</h4>
<p>
learning Ruby and Rails
</p>
<h3>music</h3>
<p>
<?php
$apiRoot = 'https://api.listenbrainz.org';
$user = 'everypizza';
$nowPlayingString = '';
$nowPlaying = false;
try {
$response = file_get_contents($apiRoot . "/1/user/" . urlencode($user) . "/playing-now");
if ($response === false) {
throw new Exception("Failed to fetch");
}
$data = json_decode($response, true);
if (empty($data['payload']['listens'])) {
$nowPlayingString = "nothing is playing right now.";
} else {
$track = $data['payload']['listens'][0]['track_metadata']['track_name'];
$artist = $data['payload']['listens'][0]['track_metadata']['artist_name'];
$album = $data['payload']['listens'][0]['track_metadata']['release_name'];
$nowPlaying = true;
$nowPlayingString = "now playing for <b>" . htmlspecialchars($user) . "</b>: <b>" .
htmlspecialchars($track) . "</b> by <b>" .
htmlspecialchars($artist) . "</b> from <b>" .
htmlspecialchars($album) . "</b>";
}
} catch (Exception $e) {
$nowPlayingString = "Failed to reach API";
}
echo $nowPlayingString;
?>
<br>
<small>
data is from listenbrainz.
</small>
</p>
<h3>buttons</h3>
<p>
<a href="https://benjae.nekoweb.org">
<img src="/assets/88x31s/benjae.nekoweb.org.gif" alt="Benjae" width="88" height="31">
</a>
<a href="https://freetards.xyz">
<img src="/assets/88x31s/freetards.xyz.gif" alt="Freetards" width="88" height="31">
</a>
<a href="https://fsky.io">
<img src="/assets/88x31s/fsky.io.webp" alt="FSKY" width="88" height="31">
</a>
<a href="https://purplebored.pl">
<img src="/assets/88x31s/purplebored.pl.gif" alt="Purplebored" width="88" height="31">
</a>
<a href="https://squarebowl.club">
<img src="/assets/88x31s/squarebowl.club.gif" alt="PlateNet" width="88" height="31">
</a>
<a href="https://synth.download">
<img src="/assets/88x31s/synth.download.svg" alt="synth.download" width="88" height="31">
</a>
<a href="https://telepath.im">
<img src="/assets/88x31s/telepath.im.png" alt="Telepath" width="88" height="31">
</a>
<a href="https://voxel.fsky.io">
<img src="/assets/88x31s/voxel.fsky.io.webp" alt="voxel" width="88" height="31">
</a>
<a href="https://zayd.fsky.io">
<img src="/assets/88x31s/zayd.fsky.io.png" alt="voxel" width="88" height="31">
</a>
<br /><br />
<img src="/assets/88x31s/nyx.everypizza.im.webp" alt="Nyx" width="88" height="31">
<img src="/assets/88x31s/nyx.everypizza.im-2.png" alt="Nyx" width="88" height="31">
</p>
</body>
</html>