Fix line-endings; Increase portability; Add speedtyper.py

This commit is contained in:
olari
2019-05-26 23:05:28 +03:00
parent 661a5984a3
commit 63a1b4f501
33 changed files with 1447 additions and 1341 deletions

View File

@@ -1,7 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# Discard on use
rm $0
# Increase nice and rtprio limits. # Increase nice and rtprio limits.
local user=$(cut -d' ' -f1 <<< $(who)) local user=$(cut -d' ' -f1 <<< $(who))

View File

@@ -1,7 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# Discard on use
rm $0
sudo mkdir -p /etc/X11/xorg.conf.d/ sudo mkdir -p /etc/X11/xorg.conf.d/
echo 'Section "InputClass" echo 'Section "InputClass"

View File

@@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
USERNAME="" USERNAME=""
PASSWORD="" PASSWORD=""

View File

@@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
KEYMAP="dvorak-programmer" KEYMAP="dvorak-programmer"
DEVICE="/dev/sda" DEVICE="/dev/sda"

View File

@@ -1,7 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# Discard on use
rm $0
# https://blog.thepoon.fr/osuLinuxAudioLatency/ # https://blog.thepoon.fr/osuLinuxAudioLatency/
sudo pacman-key --keyserver hkps://hkps.pool.sks-keyservers.net -r C0E7D0CDB72FBE95 sudo pacman-key --keyserver hkps://hkps.pool.sks-keyservers.net -r C0E7D0CDB72FBE95

View File

@@ -1,7 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# Discard on use
rm $0
echo "[multilib] echo "[multilib]
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist

View File

@@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
#yay -S yaru-gtk-theme yaru-sound-theme gnome-shell-extension-ubuntu-dock #yay -S yaru-gtk-theme yaru-sound-theme gnome-shell-extension-ubuntu-dock
#yay -S yaru-icon-theme # needs to be installed seperately for some reason #yay -S yaru-icon-theme # needs to be installed seperately for some reason

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
# bulk file renamer that you interface with using intermediary text file. # bulk file renamer that you interface with using intermediary text file.

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
# deadsimple discord bot # deadsimple discord bot

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
# extracts cover from flac audio file # extracts cover from flac audio file

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python
# -*- coding: utf-8 -*-
# converts code signatures found in ida to ones easily usable in c++ code # converts code signatures found in ida to ones easily usable in c++ code

97
python/speedtyper.py Normal file
View File

@@ -0,0 +1,97 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import curses
class Word():
def __init__(self, target, x, y):
self.target = target
self.input = ""
self.x = x
self.y = y
def get_words(text, max_x, max_y):
curr_x = 0
curr_y = 0
words = []
for word in text.split():
if curr_x + len(word) > max_x:
curr_y += 1
curr_x = 0
if curr_y > max_y:
print("text too long, scrolling not implemented.")
exit(1)
words.append(Word(word, curr_x, curr_y))
curr_x += len(word) + 1
return words
def main_curses(stdscr, text):
curses.use_default_colors()
curses.init_pair(1, curses.COLOR_GREEN, -1)
curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_RED)
key = old_max_y = old_max_x = curr_word = 0
while True:
# rewrap words on screen size change
max_y, max_x = stdscr.getmaxyx()
if max_y != old_max_y or max_x != old_max_x:
words = get_words(text, max_x, max_y)
old_max_x = max_x
old_max_y = max_y
if key in (curses.KEY_BACKSPACE, 'KEY_BACKSPACE', '\b', '\x7f', 127): # fml
words[curr_word].input = words[curr_word].input[:-1]
elif key >= 32 and key <= 126:
words[curr_word].input += chr(key)
# increment current word if its completed
if words[curr_word].input == words[curr_word].target:
curr_word += 1
# text complete
if curr_word == len(words):
break
stdscr.clear()
for word in words:
if word.input == word.target:
stdscr.addstr(word.y, word.x, word.target, curses.A_DIM)
elif word == words[curr_word]:
stdscr.addstr(word.y, word.x, word.target, curses.A_UNDERLINE)
else:
stdscr.addstr(word.y, word.x, word.target)
for i, c in enumerate(words[curr_word].input):
if i >= len(words[curr_word].target) or words[curr_word].input[i] != words[curr_word].target[i]:
stdscr.addstr(words[curr_word].y, words[curr_word].x + i, c, curses.color_pair(2) | curses.A_BOLD)
else:
stdscr.addstr(words[curr_word].y, words[curr_word].x + i, c, curses.color_pair(1))
stdscr.move(words[curr_word].y, words[curr_word].x + len(words[curr_word].input))
key = stdscr.getch()
def main(argv):
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument("input")
args = parser.parse_args(argv[1:])
text = open(args.input).read()
curses.wrapper(main_curses, text)
if __name__ == "__main__":
main(sys.argv)

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
import bs4 import bs4
import sys import sys

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
# converts youtube subscriptions export .xml to simple text file # converts youtube subscriptions export .xml to simple text file

View File

@@ -1,4 +1,5 @@
#!/bin/env python3 #!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys import sys
import os import os

View File

@@ -1,3 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests import requests
import json import json
import sys import sys

View File

@@ -1,3 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys import sys
from selenium import webdriver from selenium import webdriver

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests # http requests import requests # http requests
import bs4 # html parser import bs4 # html parser

View File

@@ -1,3 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests, bs4, time import requests, bs4, time
def get_titles(filename, title_type, maxrank): def get_titles(filename, title_type, maxrank):

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
# reads SteamIDs from ./accounts.txt and outputs ban information into ./output.html # reads SteamIDs from ./accounts.txt and outputs ban information into ./output.html

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests import requests
import bs4 import bs4

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests import requests
import bs4 import bs4