Skip to content

Instantly share code, notes, and snippets.

@szero
Last active January 24, 2020 01:20
Show Gist options
  • Select an option

  • Save szero/033a3a3ce25b9395c8dea84f8e11340f to your computer and use it in GitHub Desktop.

Select an option

Save szero/033a3a3ce25b9395c8dea84f8e11340f to your computer and use it in GitHub Desktop.
Upload nice text file meem to volafile

Steps to post your based meem

  1. Go [here](patorjk.com/software/taag/#p=display&w=░&f=ANSI Shadow). You must use ANSI Shadow font.
  2. Type your text and copy it.
  3. Save it as text file or pass the clipboard directly to script.

Dependencies

Example usage:

xsel -ob | ./volafilememe.py BEEPi

./volafilememe.py "shit room, kys.txt" HF33Go

#!/usr/bin/env python3
import sys
import os
import re
import tempfile
from subprocess import run
import random
import string
class FilenameTooLongError(OSError):
pass
def rand_filename():
def rand_choice():
return random.choice(string.ascii_letters + string.digits)
return "." + "".join([rand_choice() for _ in range(3)])
room = list()
memes = list()
if sys.stdin.isatty():
with open(os.path.abspath(sys.argv[1]), "r") as boi:
memes = [l for l in boi.readlines()]
try:
if sys.argv[2]:
room.append("-r")
room.append(sys.argv[2])
except IndexError:
pass
else:
memes = [l for l in sys.stdin.readlines()]
try:
if sys.argv[1]:
room.append("-r")
room.append(sys.argv[1])
except IndexError:
pass
if len(memes[0].encode("utf-8")) > 251: # 255 - 4 bytes for additional filename later
raise FilenameTooLongError("Ey boi, max length of lelnix filename is 255 bytes, "
"make your text shorter if you want your meme reign supreme.")
with tempfile.TemporaryDirectory() as d:
box = re.compile("[\u2500-\u257F]", re.I | re.M)
for i, l in enumerate(memes):
memes[i] = box.sub("░", l).strip().replace(" ", "░")
#remove double lines and trailing line at the bottom
for i, l in enumerate(memes):
if (l == len(l) * l[0]) and (memes[i+1] == len(memes[i+1]) * memes[i+1][0]):
memes.pop(i)
if memes[-1] == len(memes[-1]) * memes[-1][0]:
memes.pop()
#add random filename if not all filenames are unique
memes_no_lines = [m for m in memes if (m != len(m) * m[0])]
if len(memes_no_lines) > len(set(memes_no_lines)):
for i, m in enumerate(memes):
memes[i] = m + rand_filename()
meme_files = list()
for i in memes[::-1]:
path = d + "/" + i
with open(path, "w") as nuthing:
pass
meme_files.append(path)
run(["volaupload.sh", *room, *meme_files])
@szero
Copy link
Author

szero commented Oct 25, 2018

Doesn't work as of now. Seems like lain disallows box-drawing characters in filenames now.

@szero
Copy link
Author

szero commented Oct 1, 2019

As of now works again, give it a whirl bois.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment