From eb61c1bae2ffad114e17393d91d86fb00d7ac8cd Mon Sep 17 00:00:00 2001 From: Hannah Isopod Date: Sat, 10 May 2025 03:03:58 -0600 Subject: Initialer commit Just remade the repo because I don't *need* need a comprehensive source history for my personal website and this is easier than getting filter-repo to work good --- stuff/EnchantedToolsPack_v1.zip | Bin 0 -> 80277 bytes stuff/beat/digital.css | 10 + stuff/beat/frame.php | 41 +++ stuff/beat/index.php | 39 +++ stuff/beat/pixel.css | 10 + stuff/beat/sketch.css | 13 + stuff/beat/time.php | 4 + stuff/bg.jpg | Bin 0 -> 551864 bytes stuff/bg.jxl | Bin 0 -> 247039 bytes stuff/dirtomp3.sh | 58 +++++ stuff/firefoxrss/feed.php | 62 +++++ stuff/index.php | 105 ++++++++ stuff/neon_boost_times.html | 103 ++++++++ stuff/rssfilter.php | 288 +++++++++++++++++++++ stuff/spotifycdnsilly/ip.php | 21 ++ stuff/webgarden/image1.html | 20 ++ stuff/webgarden/image2.html | 20 ++ stuff/webgarden/image3.html | 20 ++ stuff/webgarden/image4.html | 20 ++ stuff/webgarden/images/bubblecolumn1.gif | Bin 0 -> 17577 bytes stuff/webgarden/images/image1.png | Bin 0 -> 62759 bytes stuff/webgarden/images/image2.png | Bin 0 -> 88013 bytes stuff/webgarden/images/image3.png | Bin 0 -> 58953 bytes stuff/webgarden/images/image4.png | Bin 0 -> 29488 bytes .../images/isopod_with_aviators_small.png | Bin 0 -> 13301 bytes stuff/webgarden/images/webgarden-bg.png | Bin 0 -> 77765 bytes stuff/webgarden/index.php | 192 ++++++++++++++ stuff/webgarden/music.mp3 | Bin 0 -> 5532009 bytes stuff/webgarden/status.php | 49 ++++ stuff/webgarden/style.css | 54 ++++ stuff/webpkiller/webpkiller.cmd | 31 +++ stuff/webpkiller/webpkiller.py | 27 ++ stuff/webpkiller/webpkiller.sh | 20 ++ stuff/webpkiller/webpkiller_win.zip | Bin 0 -> 9383795 bytes 34 files changed, 1207 insertions(+) create mode 100644 stuff/EnchantedToolsPack_v1.zip create mode 100644 stuff/beat/digital.css create mode 100644 stuff/beat/frame.php create mode 100644 stuff/beat/index.php create mode 100644 stuff/beat/pixel.css create mode 100644 stuff/beat/sketch.css create mode 100644 stuff/beat/time.php create mode 100644 stuff/bg.jpg create mode 100644 stuff/bg.jxl create mode 100644 stuff/dirtomp3.sh create mode 100644 stuff/firefoxrss/feed.php create mode 100644 stuff/index.php create mode 100644 stuff/neon_boost_times.html create mode 100644 stuff/rssfilter.php create mode 100644 stuff/spotifycdnsilly/ip.php create mode 100644 stuff/webgarden/image1.html create mode 100644 stuff/webgarden/image2.html create mode 100644 stuff/webgarden/image3.html create mode 100644 stuff/webgarden/image4.html create mode 100644 stuff/webgarden/images/bubblecolumn1.gif create mode 100644 stuff/webgarden/images/image1.png create mode 100644 stuff/webgarden/images/image2.png create mode 100644 stuff/webgarden/images/image3.png create mode 100644 stuff/webgarden/images/image4.png create mode 100644 stuff/webgarden/images/isopod_with_aviators_small.png create mode 100644 stuff/webgarden/images/webgarden-bg.png create mode 100644 stuff/webgarden/index.php create mode 100644 stuff/webgarden/music.mp3 create mode 100644 stuff/webgarden/status.php create mode 100644 stuff/webgarden/style.css create mode 100644 stuff/webpkiller/webpkiller.cmd create mode 100644 stuff/webpkiller/webpkiller.py create mode 100644 stuff/webpkiller/webpkiller.sh create mode 100644 stuff/webpkiller/webpkiller_win.zip (limited to 'stuff') diff --git a/stuff/EnchantedToolsPack_v1.zip b/stuff/EnchantedToolsPack_v1.zip new file mode 100644 index 0000000..cc83984 Binary files /dev/null and b/stuff/EnchantedToolsPack_v1.zip differ diff --git a/stuff/beat/digital.css b/stuff/beat/digital.css new file mode 100644 index 0000000..553d078 --- /dev/null +++ b/stuff/beat/digital.css @@ -0,0 +1,10 @@ +@font-face { + font-family: beat; + src: url("../fonts/DS-DIGI.ttf"); +} +body { + font-family: beat, monospace; + color: lime; + text-shadow: 0 0 3px #5ff508; + background: black; +} \ No newline at end of file diff --git a/stuff/beat/frame.php b/stuff/beat/frame.php new file mode 100644 index 0000000..5143943 --- /dev/null +++ b/stuff/beat/frame.php @@ -0,0 +1,41 @@ + + + + + + + <?php echo beat(); ?> + "; + ?> + + + + +
+ +
+ + + \ No newline at end of file diff --git a/stuff/beat/index.php b/stuff/beat/index.php new file mode 100644 index 0000000..16b7054 --- /dev/null +++ b/stuff/beat/index.php @@ -0,0 +1,39 @@ + + + + + + <?php echo '@'.date("B"); ?> + + + + + + +

.beat

+

+ +

88x31 Embeds

+
+ +
+
<iframe src="https://isopod.cool/stuff/beat/frame.php?theme=digital" style="width: 84px; height: 27px;"></iframe>
+
+ +
+
<iframe src="https://isopod.cool/stuff/beat/frame.php?theme=pixel" style="width: 84px; height: 27px;"></iframe>
+
+ +
+
<iframe src="https://isopod.cool/stuff/beat/frame.php?theme=sketch" style="width: 84px; height: 27px;"></iframe>
+ + diff --git a/stuff/beat/pixel.css b/stuff/beat/pixel.css new file mode 100644 index 0000000..20f3f37 --- /dev/null +++ b/stuff/beat/pixel.css @@ -0,0 +1,10 @@ +@font-face { + font-family: beat; + src: url("../fonts/slkscr.ttf"); +} +body { + font-family: beat, monospace; + color: gainsboro; + background: rgb(255,0,178); + background: linear-gradient(27deg, rgba(255,0,178,1) 0%, rgba(53,0,182,1) 81%); +} \ No newline at end of file diff --git a/stuff/beat/sketch.css b/stuff/beat/sketch.css new file mode 100644 index 0000000..34b7b87 --- /dev/null +++ b/stuff/beat/sketch.css @@ -0,0 +1,13 @@ +@font-face { + font-family: beat; + src: url("../fonts/firsttimewriting.ttf"); +} +body { + font-family: beat, sans-serif; + font-weight: bold; + color: black; + background-image: repeating-linear-gradient(0deg, #a2ddee, #a2ddee 1px, transparent 1px, transparent); + background-size: 23px 23px; + background-color: #f7f7f7; + background-position: 5px 5px; +} \ No newline at end of file diff --git a/stuff/beat/time.php b/stuff/beat/time.php new file mode 100644 index 0000000..e3e9596 --- /dev/null +++ b/stuff/beat/time.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/stuff/bg.jpg b/stuff/bg.jpg new file mode 100644 index 0000000..cac00e8 Binary files /dev/null and b/stuff/bg.jpg differ diff --git a/stuff/bg.jxl b/stuff/bg.jxl new file mode 100644 index 0000000..2377a2b Binary files /dev/null and b/stuff/bg.jxl differ diff --git a/stuff/dirtomp3.sh b/stuff/dirtomp3.sh new file mode 100644 index 0000000..ac75c20 --- /dev/null +++ b/stuff/dirtomp3.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +# This is a simple script I wrote to convert my entire music library to mp3s for putting on my phone. +# You need to have ffmpeg installed with support for all relevant formats for this to work. + +# HOW TO USE: +# Place this script in the directory that your library's root directory is in, i.e. if your music +# library is in ~/Music/Library, this script should be located at ~/Music/dirtomp3.sh +# Set the variable "root" to the name of your library's root directory +# Set "newroot" to the desired root directory of the output. This will be created if it doesn't exist. +# The script should take care of the rest. + +root="Library" +newroot="Library_mp3" +mvcount=0 +tdcount=$(($(find "$root" -type f -not -path '*/.*' | wc -l))) + +printf "\x1b[s" +echo ".00% done ($mvcount/$tdcount files processed)" + +recurse() { + path="$1" + for f in "$path/"*; do + nf=$(echo "$f" | sed "s/^$root/$newroot/;s/\.flac\|\.wav\|\.ogg$/.mp3/") + if [[ "$f" != $root* ]]; then + echo "Script attempted to access item $f outside designated operating area, aborting" + exit + fi + if [[ "$nf" != $newroot* ]]; then + echo "Script attempted to access item $nf outside designated operating area, aborting" + exit + fi + if [[ -d "$f" ]]; then + mkdir -p "$nf" + recurse "$f" + elif [[ -f $f ]]; then + printf "\x1b[2K%s" "$(echo "$f" | head -c $(tput cols))" + if [[ "$f" == *.flac ]] || [[ "$f" == *.wav ]] || [[ "$f" == *.ogg ]]; then + if [[ ! -f $nf ]] || [[ $f -nt $nf ]]; then + ffmpeg -i "$f" "$nf" -loglevel 0 + if [[ $? -gt 0 ]]; then + exit + fi + fi + elif [[ "$f" == *.mp3 ]]; then + cp -u "$f" "$nf" + elif [[ "$f" == *.png ]] || [[ "$f" == *.jpg ]] || [[ "$f" == *.jxl ]] || [[ "$f" == *.gif ]]; then + cp -u "$f" "$nf" + fi + mvcount=$((mvcount+1)) + printf "\x1b[u%s%% done (%d/%g files processed)\n" "$(echo "scale=2; $(echo "$mvcount/$tdcount*100" | bc -l)/1" | bc)" "$mvcount" "$tdcount" + fi + done +} + +mkdir -p $newroot +recurse "$root" +printf "\x1b[2K" diff --git a/stuff/firefoxrss/feed.php b/stuff/firefoxrss/feed.php new file mode 100644 index 0000000..0f7cb17 --- /dev/null +++ b/stuff/firefoxrss/feed.php @@ -0,0 +1,62 @@ + $cacheperiod); + +if($cache_too_old) { + $url = "https://mozilla.org/firefox/notes/"; + if(function_exists('curl_init')) { + $ch = curl_init($url); + + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HEADER, 0); + + $str = curl_exec($ch); + if(curl_error($ch)) { + echo curl_error($ch); + die(); + } + curl_close($ch); + } else { // If the cURL library isn't installed, just use file_get_contents() + $str = file_get_contents($url); + } + + preg_match('/(
([0-9]|\.)+<\/div>)/', $str, $rcs); // extract the element containing the version number + preg_match('/([0-9]|\.)+/', $rcs[0], $rs); // extract the version number from that + $rel = $rs[0]; + + $link = "https://www.mozilla.org/en-US/firefox/".$rel."/releasenotes"; // construct a permalink to the patch notes for the current latest release in particular + + preg_match('/(

.+<\/p>)/', $str, $odcs); // extract the element containing the release date + $origdate = str_replace('

', "", str_replace('

', "", $odcs[0])); // extract the date string + $udate = strtotime($origdate) + 43200; // convert said date string to the unix timestamp for noon GMT on that date + $rssdate = "D, d M Y H:i:s"; + $date = date($rssdate, $udate); // convert unix timestamp to the date format RSS uses + + $updatetime = date($rssdate, filemtime($fname)); // generating some data to fill out optional elements of the RSS feed. + $ttl = $cacheperiod / 60; // This is the sole reason why a few variables exist. + + $output = "Firefox Release Noteshttps://www.mozilla.org/firefox/releases/Release notes for new versions of Firefox, updated every $ttl minutesen-us$date$updatetimehttps://www.rssboard.org/rss-specificationniceopod's Firefox release notes RSS feed bridge$ttlhttps://upload.wikimedia.org/wikipedia/commons/8/84/Mozilla_Firefox_3.5_logo.pngFirefox Release Noteshttps://www.mozilla.org/firefox/releases/Firefox $rel$dateRelease $rel of Firefox, from $origdate$link$link"; + // Outputs an RSS feed with one entry. I wanted to do the latest ten, but the releases weren't in + // chronological order on the release list page and I couldn't be bothered trying to reorder them, + // plus I would have had to scrape all those pages for the release date too and fuck that lol + file_put_contents($fname, $output); +} else { + $output = file_get_contents($fname); +} + +header('Content-Type: text/xml'); // Not sure if this is necessary but it feels like good practice and it gets Chromium to display it all pretty +echo $output; \ No newline at end of file diff --git a/stuff/index.php b/stuff/index.php new file mode 100644 index 0000000..89acd3b --- /dev/null +++ b/stuff/index.php @@ -0,0 +1,105 @@ + + + + + + Items + + + + + + +

stuff

+

things too!

+

Utilities

+ + + + + + + + + +
rssfilter.phpBasic RSS and Atom feed filtering utility. Accepts regex.
firefoxrssRSS bridge for Firefox release notes.
+

Downloads

+ + + + + +
EnchantedToolsPack_v1.zipCustom resourcepack for Minecraft that uses functionality from Optifine to add custom textures for enchanted tools and weapons. Confirmed working with 1.19.
+

Scripts

+ + + + + + + + + + + + + + + + + + + + + + + + + +
webpkiller/
Automatic .webp convertersVarious scripts intended for use as the default program for opening .webp files. They automatically replace the .webp image with a .png one and open that instead. Incompatible with animated .webp images.
webpkiller.sh +
+ Bash script for Linux. +
    +
  • Only works on .webp files.
  • +
  • Requires ImageMagick to be installed.
  • +
+
+
webpkiller.cmd +
+ Batch script for Windows. +
    +
  • Only works on .webp files.
  • +
  • Requires ImageMagick.
  • +
  • Replaces every instance of ".webp" in the filepath because Windows batch language is hard.
  • +
+
+
webpkiller.py +
+ Platform-agnostic Python script. +
    +
  • Works on anything supported by pillow.
  • +
  • Requires Python 3 and the pillow library.
  • +
+
+
webpkiller_win.zip
Windows webpkiller.py build.webpkiller.py, but compiled for Windows with pyinstaller.
dirtomp3.shBash script that uses ffmpeg to convert a music library to mp3s.
+

Other

+ + + + + + + + + +
neon_boost_times.htmlA table of my level times in Neon Boost.
userstyles.world/style/5238
/status-cafe-latte
Stylus theme I made for status.cafe and the attached forum.
+ + diff --git a/stuff/neon_boost_times.html b/stuff/neon_boost_times.html new file mode 100644 index 0000000..e00af8c --- /dev/null +++ b/stuff/neon_boost_times.html @@ -0,0 +1,103 @@ + + + + + + My level times in Neon Boost + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + +
Level123456789101112
Laser City4.2193.9393.8996.3593.9593.2596.1397.1592.4198.325.41917
Laser City
(Lights Off)
4.4394.1194.1797.0795.7993.4195.8597.2992.5198.465.85920.02
Tesla Factory3.9995.2196.3593.3595.9594.7196.8391.9996.2594.7797.21916.44
Tesla Factory
(Lights Off)
4.1595.6796.5193.6195.7195.6396.7992.0396.3195.5197.01916.92
Cosmic Highway9.146.2796.97911.025.4399.587.19911.2417.84.67925.0640.78
Cosmic Highway
(Lights Off)
10.466.6996.85912.85.77910.327.83913.2819.024.77929.3642.56
+
+

Times are in seconds, truncated to the millisecond because the in-game timer is rife with rounding errors.
Times in yellow are from levels I can effectively "skip", or beat without triggering the timer to start.
Read the blog post I made this for here. Get Neon Boost here.

+
+ + \ No newline at end of file diff --git a/stuff/rssfilter.php b/stuff/rssfilter.php new file mode 100644 index 0000000..ea749cd --- /dev/null +++ b/stuff/rssfilter.php @@ -0,0 +1,288 @@ +category as $category) { // loops through all the tags and returns true if any of them contain the filter string + if( + (!$useregex and strpos($category, $filter) !== false) or // Don't use regex and filter string is found + ($useregex and preg_match($filter, $category)) // DO use regex and filter expression is found + ) { + return true; + } + } + if( + (!$useregex and (strpos($item->description, $filter) !== false or strpos($item->title, $filter) !== false)) or // Don't use regex and filter string is found + ($useregex and (preg_match($filter, $item->description) or preg_match($filter, $item->title))) // DO use regex and filter expression is found + ) { + return true; + } + return false; +} + +function atom_testforfilter($entry) { + global $useregex; + global $filter; + foreach($entry->category as $category) { // loops through all the tags and returns true if any of them contain the filter string + if( + (!$useregex and strpos($category['term'], $filter) !== false) or // Don't use regex and filter string is found + ($useregex and preg_match($filter, $category['term'])) // DO use regex and filter expression is found + ) { + return true; + } + } + if( + (!$useregex and (strpos($entry->description, $filter) !== false or strpos($entry->title, $filter) !== false)) or // Don't use regex and filter string is found + ($useregex and (preg_match($filter, $entry->description) or preg_match($filter, $entry->title))) // DO use regex and filter expression is found + ) { + return true; + } + return false; +} + +if($feed // A basic check to make sure the URL is formed properly. It doesn't actually check for a valid URL or valid regex. + and $filter // If this check fails, the HTML document below this gets served. + and ($filtertype === "white" or $filtertype === "black") +){ + header('Content-Type: text/xml'); // Not sure if I actually need to do this, but it seems like good practice and it makes Chromium display the XML tree all nice. + + $content = simplexml_load_string(file_get_contents($feed)); // I've encountered a problem where something between the server this command pulls from and this script seems to + // be caching the result. I'm guessing it's some kind of Nginx configuration error, but I'm not sure. Maybe I + // should be using a different function to do this? rss-bridge uses the cURL library, which I know because I had + // to install it myself. + + if($content->getName() == 'rss') { // Here I just assume everything not explicitly an RSS feed is an Atom feed. I am 100% certain there is an edge case I'm missing here. + + echo ''; // This is the most embarrassing part of this code by far. I wanted to do this by looping over all the entries + echo $content->channel->title->asXML(); // in the XML object and specifically removing the ones that didn't pass the filter *from* the object, but + echo $content->channel->link->asXML(); // I couldn't for the life of me get that to work, so I settled for the next best thing: just echoing all the + echo $content->channel->description->asXML(); // fields that are part of the spec out to a brand new XML document and then adding all the entries that did + echo $content->channel->language->asXML(); // pass. I mean, if it works it works, but sorry to anyone that was using some nonstandard feature here. + echo $content->channel->pubDate->asXML(); + echo $content->channel->lastBuildDate->asXML(); + echo $content->channel->docs->asXML(); + echo "will's RSS filter script"; + echo $content->channel->managingEditor->asXML(); + echo $content->channel->webMaster->asXML(); + + foreach($content->channel->item as $item) { + + $found = rss_testforfilter($item, $filter); + + if(($found and $filtertype == 'white') or (!$found and $filtertype == 'black')) { + echo $item->asXML(); + } + + } + + echo ''; + + die(); + } else { + + echo ''; + echo $content->title->asXML(); + echo $content->link->asXML(); + echo $content->updated->asXML(); + echo $content->author->asXML(); + echo $content->id->asXML(); + foreach($content->category as $category) { + echo $category->asXML(); + } + foreach($content->contributor as $contributor) { + echo $contributor->asXML(); + } + echo "will's Atom filter script"; + echo $content->icon->asXML(); + echo $content->logo->asXML(); + echo $content->rights->asXML(); + echo $content->subtitle->asXML(); + + foreach($content->entry as $entry) { + + $found = atom_testforfilter($entry, $filter); + + if(($found and $filtertype == 'white') or (!$found and $filtertype == 'black')) { + echo $entry->asXML(); + } + + } + + echo ''; + + die(); + } +} + +?> + + + + + + RSS Filter + + + +

RSS Filter

+
+ + + + + + + + + + + + + + + + + + + + + +
You need to have Javascript enabled for this generator to work, sorry.
Feed URL
Filter String
Filter Type + + + + +
+

+ +

+

+ Made by an isopod
+ Download source code +

+ + + \ No newline at end of file diff --git a/stuff/spotifycdnsilly/ip.php b/stuff/spotifycdnsilly/ip.php new file mode 100644 index 0000000..e8332ff --- /dev/null +++ b/stuff/spotifycdnsilly/ip.php @@ -0,0 +1,21 @@ +"; + +?> + + + + + + + <?php echo($addr); ?> + + "); ?> + + + + + diff --git a/stuff/webgarden/image1.html b/stuff/webgarden/image1.html new file mode 100644 index 0000000..4c1d559 --- /dev/null +++ b/stuff/webgarden/image1.html @@ -0,0 +1,20 @@ + + + + + Image1 + + + + +
+ < + > +
+ + diff --git a/stuff/webgarden/image2.html b/stuff/webgarden/image2.html new file mode 100644 index 0000000..3ac0aa5 --- /dev/null +++ b/stuff/webgarden/image2.html @@ -0,0 +1,20 @@ + + + + + Image2 + + + + +
+ < + > +
+ + diff --git a/stuff/webgarden/image3.html b/stuff/webgarden/image3.html new file mode 100644 index 0000000..00e8417 --- /dev/null +++ b/stuff/webgarden/image3.html @@ -0,0 +1,20 @@ + + + + + Image3 + + + + +
+ < + > +
+ + diff --git a/stuff/webgarden/image4.html b/stuff/webgarden/image4.html new file mode 100644 index 0000000..f2e2a77 --- /dev/null +++ b/stuff/webgarden/image4.html @@ -0,0 +1,20 @@ + + + + + Image4 + + + + +
+ < + > +
+ + diff --git a/stuff/webgarden/images/bubblecolumn1.gif b/stuff/webgarden/images/bubblecolumn1.gif new file mode 100644 index 0000000..ad31eb1 Binary files /dev/null and b/stuff/webgarden/images/bubblecolumn1.gif differ diff --git a/stuff/webgarden/images/image1.png b/stuff/webgarden/images/image1.png new file mode 100644 index 0000000..825d878 Binary files /dev/null and b/stuff/webgarden/images/image1.png differ diff --git a/stuff/webgarden/images/image2.png b/stuff/webgarden/images/image2.png new file mode 100644 index 0000000..cd9e273 Binary files /dev/null and b/stuff/webgarden/images/image2.png differ diff --git a/stuff/webgarden/images/image3.png b/stuff/webgarden/images/image3.png new file mode 100644 index 0000000..9de4975 Binary files /dev/null and b/stuff/webgarden/images/image3.png differ diff --git a/stuff/webgarden/images/image4.png b/stuff/webgarden/images/image4.png new file mode 100644 index 0000000..3562e48 Binary files /dev/null and b/stuff/webgarden/images/image4.png differ diff --git a/stuff/webgarden/images/isopod_with_aviators_small.png b/stuff/webgarden/images/isopod_with_aviators_small.png new file mode 100644 index 0000000..27ae5b7 Binary files /dev/null and b/stuff/webgarden/images/isopod_with_aviators_small.png differ diff --git a/stuff/webgarden/images/webgarden-bg.png b/stuff/webgarden/images/webgarden-bg.png new file mode 100644 index 0000000..f6052e8 Binary files /dev/null and b/stuff/webgarden/images/webgarden-bg.png differ diff --git a/stuff/webgarden/index.php b/stuff/webgarden/index.php new file mode 100644 index 0000000..af88805 --- /dev/null +++ b/stuff/webgarden/index.php @@ -0,0 +1,192 @@ + + + Kind of dragon free!', + 'your gay', + 'the fuck is a gender', + 'The Only Website', + '𝓘𝓷𝓪𝓬𝓬𝓮𝓼𝓼𝓲𝓫𝓵𝓮!', + 'Follow me on Google+!', + '404: caption not found', + 'Web π compliant!', + 'cringe', + 'real life isopod', + 'holy fucking bingle', + 'crubge', + 'Tested in prod!', + 'pwetty epic B)', + 'Semi-modular!', + 'Did you know?', + 'shrimps is bugs', + 'Delicious!', + 'trnasgener', + 'Opinionated!', + 'Eurorack compatible!', + 'Hackable!', + 'HiDPI!', + '&mdash; addict', + '3D printed!', + 'Federated!', + 'Chitinous!', + 'is this a bedbuge?', + 'Now in HD!', + 'Water me!' + ); + $cap = $captions[array_rand($captions)]; + ?> + + + Pot + + + + + +
+

isopod.cool

+

+ + + < +
+
+ + + + + diff --git a/stuff/webgarden/music.mp3 b/stuff/webgarden/music.mp3 new file mode 100644 index 0000000..12f0400 Binary files /dev/null and b/stuff/webgarden/music.mp3 differ diff --git a/stuff/webgarden/status.php b/stuff/webgarden/status.php new file mode 100644 index 0000000..4330d31 --- /dev/null +++ b/stuff/webgarden/status.php @@ -0,0 +1,49 @@ + + + + + Status + + + + +
+
$username $face $timeago
$content
"; + ?> + < +
+ + diff --git a/stuff/webgarden/style.css b/stuff/webgarden/style.css new file mode 100644 index 0000000..13c5320 --- /dev/null +++ b/stuff/webgarden/style.css @@ -0,0 +1,54 @@ +@font-face { + font-family: 'Silkscreen'; + src: url('../fonts/slkscr.ttf'); +} +@font-face { + font-family: b612_mono; + src: url(stuff/fonts/B612_Mono/B612Mono-Regular.ttf); +} +@font-face { + font-family: b612_mono; + src: url(stuff/fonts/B612_Mono/B612Mono-Bold.ttf); + font-weight: bold; +} +@font-face { + font-family: b612_mono; + src: url(stuff/fonts/B612_Mono/B612Mono-Italic.ttf); + font-style: italic; +} +@font-face { + font-family: b612_mono; + src: url(stuff/fonts/B612_Mono/B612Mono-BoldItalic.ttf); + font-weight: bold; + font-style: italic; +} +html, body { + margin: 0; + padding: 0; + overflow: hidden; +} +body { + font-family: b612_mono, mono, monospace; + color: white; + background: #101010; + text-shadow: 1px 1px 4px black; +} +#plant { + height: 250px; + width: 250px; +} +a#forward, a#back, h1, h2, #hoverme { + font-family: 'Silkscreen'; + color: white; + text-decoration: none; +} +#hoverme { + position: absolute; + top: 4px; + left: 235px; + animation-name: arrowwiggle; + animation-duration: 6s; + animation-iteration-count: infinite; + width: fit-content; + text-align: right; +} \ No newline at end of file diff --git a/stuff/webpkiller/webpkiller.cmd b/stuff/webpkiller/webpkiller.cmd new file mode 100644 index 0000000..382e048 --- /dev/null +++ b/stuff/webpkiller/webpkiller.cmd @@ -0,0 +1,31 @@ +@echo off + +::Set variable filepath to the first argument +SET filepath=%~f1 + +::Abort if the given file doesn't exist +IF NOT EXIST "%filepath%" ( + ECHO %~n0: file not found - %filepath% >&2 + EXIT /B 1 +) + +::Replace all instances of .webp with .png in the filename. kind of banking on the user not putting the extension anywhere else in the file or folder names for this to work properly... +::I should be finding the last period in the filename and replacing everything AFTER it with the extension I want, but can't figure out how to do that because Windows batch is a nightmare language +::You can replace this with "SET outfile=%filepath%.png" (no quotes) if that bothers you more than double file extensions +::You can replace these two file extensions with any two image types you want to do this with +SET outfile=%filepath:.webp=.png% + +::Abort if filename.png already exists +IF EXIST "%outfile%" ( + ECHO %~n0: %outfile% already exists. Aborting... + EXIT /B 2 +) + +::Use ImageMagick's command line tools to generate the converted file +magick "%filepath%" "%outfile%" + +::Delete the original file (optional, this can be removed if for some reason you want to keep the shitty gross webp) +del "%filepath%" + +::Open the new, fixed image like nothing ever happened +%outfile% diff --git a/stuff/webpkiller/webpkiller.py b/stuff/webpkiller/webpkiller.py new file mode 100644 index 0000000..0153ff7 --- /dev/null +++ b/stuff/webpkiller/webpkiller.py @@ -0,0 +1,27 @@ +import PIL as pillow +from PIL import Image +import subprocess, os, platform, sys + +infile = sys.argv[len(sys.argv)-1] +outfile = infile[:infile.rfind('.')] + ".png" + +if(os.path.exists(infile) == False): + print("File %s not found. Aborting..." %infile) + exit() + +if(os.path.exists(outfile)): + print("File %s already exists. Aborting..." %outfile) + exit() + +im = Image.open(infile) + +im.save(outfile) + +os.remove(infile) + +if(platform.system() == 'Darwin'): # macOS + subprocess.call(('open', outfile)) +elif(platform.system() == 'Windows'): # Windows + os.startfile(outfile) +else: # linux variants + subprocess.call(('xdg-open', outfile)) \ No newline at end of file diff --git a/stuff/webpkiller/webpkiller.sh b/stuff/webpkiller/webpkiller.sh new file mode 100644 index 0000000..017fba0 --- /dev/null +++ b/stuff/webpkiller/webpkiller.sh @@ -0,0 +1,20 @@ +#!/bin/bash +if [ ! -f "$1" ]; then + echo "File $1 does not exist. Aborting..." + exit +fi + +suffix=".webp" +filename=${1%"$suffix"} +outfile="$filename.png" + +if [ -f "$outfile" ]; then + echo "File $outfile already exists. Aborting..." + notify-send --app-name=webpkiller "File $outfile already exists. Aborting..." + exit +fi + +magick $1 $outfile +rm -rf $1 + +xdg-open $outfile diff --git a/stuff/webpkiller/webpkiller_win.zip b/stuff/webpkiller/webpkiller_win.zip new file mode 100644 index 0000000..5d54054 Binary files /dev/null and b/stuff/webpkiller/webpkiller_win.zip differ -- cgit v1.2.3