Compare commits
No commits in common. '66c4546783199a873f0afb08a89078c9d75d60bc' and '4a7d600ec17a075e2f78a71270dd79c3b874c606' have entirely different histories.
66c4546783
...
4a7d600ec1
19 changed files with 2 additions and 513 deletions
@ -1,21 +0,0 @@ |
|||||||
import argparse,os |
|
||||||
|
|
||||||
arguments=argparse.ArgumentParser(description="GeoBC unzipper/sorter/renamer") |
|
||||||
arguments.add_argument("required", help="Required elements", nargs="*") #nargs=number of arguments |
|
||||||
arguments.add_argument("-o", help="Optional elements") |
|
||||||
arguments.add_argument("--alternate", help="This is supposedly a flag", action="store_true") |
|
||||||
arguments.add_argument("-f", "--file", help="Which files to process instead") |
|
||||||
#Don't forget to pass the arguments into another variable |
|
||||||
test=arguments.parse_args() |
|
||||||
print(test.required) |
|
||||||
if test.o: |
|
||||||
print(test.o) |
|
||||||
if test.alternate: |
|
||||||
print(test.alternate) |
|
||||||
if test.file: |
|
||||||
print(test.file) |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,29 +0,0 @@ |
|||||||
def deco(func): |
|
||||||
def wrapper(*args, **kwargs): |
|
||||||
func(*args, **kwargs) |
|
||||||
wrapper.count+=1 |
|
||||||
wrapper.count=0 |
|
||||||
return wrapper |
|
||||||
|
|
||||||
def deco2(func): |
|
||||||
def wrapper(*args, **kwargs): |
|
||||||
print(args) |
|
||||||
def fname(*args): |
|
||||||
print('args',args) |
|
||||||
|
|
||||||
return fname |
|
||||||
|
|
||||||
@deco2 |
|
||||||
def fname(arg): |
|
||||||
print(arg) |
|
||||||
|
|
||||||
|
|
||||||
@deco |
|
||||||
def main(arg): |
|
||||||
print(arg) |
|
||||||
|
|
||||||
for item in range(3): |
|
||||||
main(item) |
|
||||||
print('count', main.count) |
|
||||||
|
|
||||||
fname('test') |
|
@ -1,38 +0,0 @@ |
|||||||
from random import randint |
|
||||||
#this is the decorator |
|
||||||
def decor(func): #takes a function as an argument |
|
||||||
def x(z): # z = arguments passed from function that was decorated |
|
||||||
print('now with decoration') #extra shit from the decorator |
|
||||||
func(z) #run that function |
|
||||||
return x #return the decorator function |
|
||||||
|
|
||||||
@decor #invoke the decorator |
|
||||||
def z(number): |
|
||||||
print(number) |
|
||||||
|
|
||||||
z(3) |
|
||||||
|
|
||||||
|
|
||||||
#this is the functional equivalent |
|
||||||
|
|
||||||
def decor2(func): |
|
||||||
def x(z): |
|
||||||
print('also with decoration') |
|
||||||
func(z) |
|
||||||
return x |
|
||||||
|
|
||||||
def q(number): |
|
||||||
print(number) |
|
||||||
|
|
||||||
zz=decor2(q) |
|
||||||
zz(3) |
|
||||||
|
|
||||||
|
|
||||||
##another example |
|
||||||
|
|
||||||
@decor |
|
||||||
def othershite(thing): |
|
||||||
x=randint(1,100) |
|
||||||
print(f'here is some other shite and a random number({x}) plus {thing}') |
|
||||||
|
|
||||||
othershite('piztak') |
|
@ -1,31 +0,0 @@ |
|||||||
#import numpy as np |
|
||||||
#import time |
|
||||||
import math |
|
||||||
from math import tan as qe |
|
||||||
|
|
||||||
def deco(func): |
|
||||||
def wrapper(y): |
|
||||||
ang = y *2 *math.pi/360 |
|
||||||
return func(ang) |
|
||||||
return wrapper #You need two returns! So confusing! |
|
||||||
|
|
||||||
|
|
||||||
def test(number): |
|
||||||
return number |
|
||||||
|
|
||||||
@deco |
|
||||||
def test2(number): |
|
||||||
return number |
|
||||||
|
|
||||||
|
|
||||||
print('undecorated') |
|
||||||
print(test(45)) |
|
||||||
print('decorated') |
|
||||||
print(test2(45)) |
|
||||||
print('math.tan') |
|
||||||
print(qe(45)) |
|
||||||
print('math.tan decorated') |
|
||||||
test3=deco(qe) |
|
||||||
print(type(test3)) |
|
||||||
print(test3(45)) |
|
||||||
print(math.tan(45)) |
|
@ -1,77 +0,0 @@ |
|||||||
#! /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 |
|
||||||
import smtplib |
|
||||||
from email.message import EmailMessage as Em |
|
||||||
#https://stackoverflow.com/questions/16683732/python-smtplib-security |
|
||||||
|
|
||||||
import requests |
|
||||||
from bs4 import BeautifulSoup as bs |
|
||||||
|
|
||||||
def emailer(usr, pwd, mailserv, port, msg): |
|
||||||
server = smtplib.SMTP(mailserv, port) |
|
||||||
server.ehlo() |
|
||||||
server.starttls() |
|
||||||
server.ehlo() |
|
||||||
server.login(usr,pwd) |
|
||||||
server.sendmail(msg['From'], msg['To'], msg.as_string()) |
|
||||||
server.close() |
|
||||||
|
|
||||||
def tester(url): |
|
||||||
try: |
|
||||||
s=requests.Session() |
|
||||||
checker=s.get(url) |
|
||||||
if not checker.ok: |
|
||||||
returncode = checker.status_code |
|
||||||
#returns integer of server status code https://www.w3.org/Protocols/HTTP/HTRESP.html |
|
||||||
print(returncode) |
|
||||||
soup = bs(page.text, 'html.parser') |
|
||||||
|
|
||||||
if returncode != 200 and str(returncode).startswith('2'): |
|
||||||
content = '{} returned status which is not code 200 (OK): {}'.format(URL, returncode) |
|
||||||
|
|
||||||
elif str(returncode).startswith('3'): |
|
||||||
content = '{} returned a redirect status: {}/'.format(URL, returncode) |
|
||||||
|
|
||||||
elif str(returncode).startswith('4'): |
|
||||||
content = '{} returned a not found status: {}.'.format(URL, returncode) |
|
||||||
|
|
||||||
elif str(returncode).startswith('5'): |
|
||||||
content = '{} returned an internal error: {}.'.format(URL, returncode) |
|
||||||
|
|
||||||
elif str(soup.title) != titletest: |
|
||||||
content = '{} title string has changed. Possible hacking attempt.'.format(URL) |
|
||||||
else: |
|
||||||
content = 'OK' |
|
||||||
return content |
|
||||||
|
|
||||||
|
|
||||||
except: |
|
||||||
content = 'Server {} appears to be down.'.format(URL) |
|
||||||
return content |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__': |
|
||||||
|
|
||||||
|
|
||||||
USER = 'user@example.invalid' |
|
||||||
PASS = 'passwordabc123notreally' |
|
||||||
MAILSERVER = 'smtp.example.invalid' |
|
||||||
PORT = 587 |
|
||||||
URL='https://example.invalid' |
|
||||||
message = Em() |
|
||||||
message['Subject'] = '{} status warning'.format(URL) |
|
||||||
message['From'] = user |
|
||||||
message['To'] = 'recipient1@example.invalid, recipient2@example.invalid' |
|
||||||
titletest='<title>Website Title</title>' |
|
||||||
|
|
||||||
try: |
|
||||||
content=tester(URL) |
|
||||||
except: |
|
||||||
content = 'Server {} appears to be down.'.format(URL) |
|
||||||
#pass |
|
||||||
|
|
||||||
message.set_content(content) |
|
||||||
|
|
||||||
if content !='OK': |
|
||||||
emailer(USER, PASS, MAILSERVER, PORT, message) |
|
@ -1,17 +0,0 @@ |
|||||||
import requests as r |
|
||||||
from bs4 import BeautifulSoup as bs |
|
||||||
import pypub |
|
||||||
import os |
|
||||||
|
|
||||||
#page = r.get('http://gutenberg.net.au/ebooks06/0600811h.html') |
|
||||||
#pagetext=page.text |
|
||||||
#cleanpage=pypub.clean( pagetext ) |
|
||||||
|
|
||||||
book= pypub.Epub('Book Title', creator="Robert E Howard", publisher='Project Gutenberg Australia') |
|
||||||
|
|
||||||
#xchapterone = pypub.ChapterFactory(cleanpage) |
|
||||||
z= pypub.create_chapter_from_url('http://gutenberg.net.au/ebooks06/0600811h.html') |
|
||||||
|
|
||||||
book.add_chapter(z) |
|
||||||
|
|
||||||
book.create_epub( os.getcwd() ) |
|
@ -1,65 +0,0 @@ |
|||||||
class _GetCh: |
|
||||||
def __init__(self): |
|
||||||
try: |
|
||||||
self.impl = _GetChWindows() |
|
||||||
except ImportError: |
|
||||||
try: |
|
||||||
self.impl = _GetChMacCarbon() |
|
||||||
except ImportError: |
|
||||||
self.impl = _GetChUnix() |
|
||||||
def __call__(self): |
|
||||||
return self.impl() |
|
||||||
|
|
||||||
class _GetChWindows: |
|
||||||
def __init__(self): |
|
||||||
import msvcrt |
|
||||||
def __call__(self): |
|
||||||
import msvcrt |
|
||||||
if msvcrt.kbhit(): |
|
||||||
while msvcrt.kbhit(): |
|
||||||
ch = msvcrt.getch() |
|
||||||
while ch in b'\x00\xe0': |
|
||||||
msvcrt.getch() |
|
||||||
ch = msvcrt.getch() |
|
||||||
return ord( ch.decode() ) |
|
||||||
else: |
|
||||||
return -1 |
|
||||||
|
|
||||||
class _GetChMacCarbon: |
|
||||||
def __init__(self): |
|
||||||
import Carbon |
|
||||||
Carbon.Evt |
|
||||||
def __call__(self): |
|
||||||
import Carbon |
|
||||||
if Carbon.Evt.EventAvail(0x0008)[0]==0: # 0x0008 is the keyDownMask |
|
||||||
return "" |
|
||||||
else: |
|
||||||
(what,msg,when,where,mod)=Carbon.Evt.GetNextEvent(0x0008)[1] |
|
||||||
return msg & 0x000000FF |
|
||||||
|
|
||||||
class _GetChUnix: |
|
||||||
def __init__(self): |
|
||||||
import tty, sys, termios # import termios now or else you'll get the Unix |
|
||||||
# version on the Mac |
|
||||||
def __call__(self): |
|
||||||
import sys, tty, termios |
|
||||||
fd = sys.stdin.fileno() |
|
||||||
old_settings = termios.tcgetattr(fd) |
|
||||||
try: |
|
||||||
tty.setraw(sys.stdin.fileno()) |
|
||||||
ch = sys.stdin.read(1) |
|
||||||
finally: |
|
||||||
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) |
|
||||||
return ord(ch) |
|
||||||
|
|
||||||
if __name__ == '__main__': |
|
||||||
|
|
||||||
InKey = _GetCh() |
|
||||||
|
|
||||||
print( "Press Ctrl-C to exit" ) |
|
||||||
|
|
||||||
c = InKey() |
|
||||||
while c != 3: |
|
||||||
if c >= 0: |
|
||||||
print( c ) |
|
||||||
c = InKey() |
|
@ -1,13 +0,0 @@ |
|||||||
import requests |
|
||||||
from bs4 import BeautifulSoup |
|
||||||
import urllib.parse |
|
||||||
''' From https://stackoverflow.com/questions/42002336/using-python-requests-module-to-login-on-an-wordpress-based-website''' |
|
||||||
|
|
||||||
if __name__=="__main__": |
|
||||||
s=requests.Session() |
|
||||||
link="http://example.invalid/wp-login" |
|
||||||
initial=s.get(link) |
|
||||||
|
|
||||||
login_data={"log":"individual@example.invalid","pwd":"passwordgoeshere",'rememberme':'forever','redirect_to':'http://example.invalid/dash/', 'redirect_to_automatic': '1'} |
|
||||||
page_login=s.post(link, data=login_data) |
|
||||||
print(page_login) |
|
@ -1,4 +0,0 @@ |
|||||||
hostname="smtp.example.invalid" |
|
||||||
portno=465 |
|
||||||
username='user@example.invalid' |
|
||||||
password='' |
|
@ -1,43 +0,0 @@ |
|||||||
import smtplib |
|
||||||
from mailinfo import * |
|
||||||
from email.mime.multipart import MIMEMultipart |
|
||||||
from email.mime.text import MIMEText |
|
||||||
|
|
||||||
print(username, hostname, portno) |
|
||||||
|
|
||||||
server=smtplib.SMTP_SSL(host=hostname,port=portno) |
|
||||||
server.set_debuglevel(1) |
|
||||||
#server.starttls() |
|
||||||
server.ehlo() |
|
||||||
server.login(username,password) |
|
||||||
|
|
||||||
message=MIMEMultipart() |
|
||||||
message['From']=username |
|
||||||
message['To']='6045618656@sms.rogers.com' |
|
||||||
message['Subject']="I can python" |
|
||||||
body="Sending a text message via command script." |
|
||||||
|
|
||||||
message.attach(MIMEText(body,'plain')) |
|
||||||
|
|
||||||
server.send_message(message) |
|
||||||
|
|
||||||
server.quit() |
|
||||||
|
|
||||||
|
|
||||||
''' |
|
||||||
Bell: [10-digit phone number]@txt.bell.ca |
|
||||||
Chatr: [10-digit phone number]@sms.rogers.com (rogers was PCS, now SMS) |
|
||||||
Eastlink: [10-digit phone number]@txt.eastlink.ca |
|
||||||
Fido: [10-digit phone number]@fido.ca |
|
||||||
Freedom: [10-digit phone number]@txt.freedommobile.ca |
|
||||||
Koodo Mobile: [10-digit phone number]@msg.koodomobile.com |
|
||||||
MTS: [10-digit phone number]@text.mtsmobility.com |
|
||||||
PC Mobile: [10-digit phone number]@mobiletxt.ca |
|
||||||
Public Mobile: [10-digit phone number]@msg.telus.com |
|
||||||
Rogers: [10-digit phone number]@pcs.rogers.com |
|
||||||
Sasktel: [10-digit phone number]@sms.sasktel.com |
|
||||||
Solo Mobile: [10-digit phone number]@txt.bell.ca |
|
||||||
TBayTel: [10-digit phone number]@pcs.rogers.com |
|
||||||
TELUS: [10-digit phone number]@msg.telus.com |
|
||||||
Virgin Mobile: [10-digit phone number]@vmobile.ca |
|
||||||
''' |
|
@ -1,10 +0,0 @@ |
|||||||
from sys import argv |
|
||||||
import codecs |
|
||||||
|
|
||||||
name, codec=argv |
|
||||||
|
|
||||||
#f = codecs.open("example.html", 'r', 'cp1140') |
|
||||||
f = codecs.open("example.html", 'r', codec) |
|
||||||
u = f.read() # now the contents have been transformed to a Unicode string |
|
||||||
out = codecs.open("example_u.html", 'w', 'utf-8') |
|
||||||
out.write(u) # and now the contents have been output as UTF-8 |
|
@ -1,19 +0,0 @@ |
|||||||
import model, view |
|
||||||
|
|
||||||
class Controller(object): |
|
||||||
"""docstring for Controller.""" |
|
||||||
def __init__(self, model, view): |
|
||||||
super(Controller, self).__init__() |
|
||||||
self.model = model |
|
||||||
self.view = view |
|
||||||
|
|
||||||
def update(self, *args): |
|
||||||
self.model.added(*args) |
|
||||||
self.view.updated(args) |
|
||||||
|
|
||||||
def expunge(self, *args): |
|
||||||
self.model.removed(*args) |
|
||||||
self.view.deleted(list(args)) |
|
||||||
|
|
||||||
def display(self): |
|
||||||
self.view.displayed(self.model.var) |
|
@ -1,15 +0,0 @@ |
|||||||
class Model(object): |
|
||||||
"""docstring for Model.""" |
|
||||||
def __init__(self, *args): |
|
||||||
self.var = list(args) |
|
||||||
|
|
||||||
def added(self, *args): |
|
||||||
self.var = self.var+ list(args) |
|
||||||
|
|
||||||
|
|
||||||
def removed(self, *args): |
|
||||||
for item in args: |
|
||||||
self.var.remove(item) |
|
||||||
|
|
||||||
if __name__ == '__main__': |
|
||||||
x=Model('paulasda') |
|
@ -1,11 +0,0 @@ |
|||||||
import model, view, controller |
|
||||||
|
|
||||||
bp=['alpha', 'gamma', 'Deutschland', 'failure'] |
|
||||||
v=view.View() |
|
||||||
m=model.Model('initial','population') |
|
||||||
c=controller.Controller(m,v) |
|
||||||
|
|
||||||
c.update(bp) |
|
||||||
c.expunge(bp) |
|
||||||
c.update('This', 'works') |
|
||||||
c.display() |
|
@ -1,21 +0,0 @@ |
|||||||
class View(object): |
|
||||||
"""docstring for View.""" |
|
||||||
__instance = None |
|
||||||
def __init__(self): |
|
||||||
super(View, self).__init__() |
|
||||||
if View.__instance !=None: |
|
||||||
raise Exception('not a thing') |
|
||||||
else: |
|
||||||
View.__instance = self |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def updated(ls): |
|
||||||
print(f'added {list(*ls)}') |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def deleted(ls): |
|
||||||
print(f'deleted {list(ls)}') |
|
||||||
|
|
||||||
@staticmethod |
|
||||||
def displayed(ls): |
|
||||||
print(f'contents {list(ls)}') |
|
@ -1,31 +0,0 @@ |
|||||||
import svgwrite |
|
||||||
from svgwrite import cm,mm |
|
||||||
from math import cos,sin,pi |
|
||||||
''' |
|
||||||
https://stackoverflow.com/questions/13006601/setting-default-units-in-svg-python-svgwrite |
|
||||||
''' |
|
||||||
|
|
||||||
|
|
||||||
drawring = svgwrite.Drawing('test.svg', profile='tiny', size=('30cm', '30cm'), viewBox=('0 0 30 30')) |
|
||||||
|
|
||||||
''' You need size and viewBox. Why I don't know, also formatting is insane''' |
|
||||||
|
|
||||||
def polycoord(sides,radius,cenx=0,ceny=0,unit='cm',angle=0, *args, **kwargs): |
|
||||||
x=[] |
|
||||||
y=[] |
|
||||||
for n in range(sides): |
|
||||||
x.append( str((radius *cos(2*pi*n/sides + 2*pi*angle) + cenx))) |
|
||||||
y.append( str((radius *sin(2*pi*n/sides + 2*pi*angle) + ceny))) |
|
||||||
z=list(zip(x,y)) |
|
||||||
return z |
|
||||||
|
|
||||||
coords=polycoord(sides=4, radius=2, angle=45, cenx=7, ceny=7) |
|
||||||
if __name__ == '__main__': |
|
||||||
hex=drawring.polygon( points=polycoord(sides=6, radius=1, cenx=2, ceny=3), fill="blue", id="hex") |
|
||||||
square=drawring.polygon(points=polycoord(sides=4, radius=3, cenx=10, ceny=10, angle=30), fill="yellow", id="square") |
|
||||||
pentagon=drawring.polygon(points=polycoord(sides=5, radius=7, cenx=15, ceny=15, angle=20), fill="none", stroke="black", stroke_width="0.2 ", id="pentagon") |
|
||||||
|
|
||||||
drawring.add(square) |
|
||||||
drawring.add(hex) |
|
||||||
drawring.add(pentagon) |
|
||||||
drawring.save() |
|
@ -1,16 +0,0 @@ |
|||||||
Cartesian coordinates for regular polygons: |
|
||||||
|
|
||||||
https://stackoverflow.com/questions/7198144/how-to-draw-a-n-sided-regular-polygon-in-cartesian-coordinates |
|
||||||
|
|
||||||
|
|
||||||
Let's assume you want to draw an N-sided polygon of radius r, centred at (0,0). Then the n vertices are given by: |
|
||||||
|
|
||||||
x[n] = r * cos(2*pi*n/N) |
|
||||||
y[n] = r * sin(2*pi*n/N) |
|
||||||
|
|
||||||
where 0 <= n < N. Note that cos and sin here are working in radians, not degrees (this is pretty common in most programming languages). |
|
||||||
|
|
||||||
If you want a different centre, then just add the coordinates of the centre point to each (x[n], y[n]). If you want a different orientation, you just need to add a constant angle. So the general form is: |
|
||||||
|
|
||||||
x[n] = r * cos(2*pi*n/N + theta) + x_centre |
|
||||||
y[n] = r * sin(2*pi*n/N + theta) + y_centre |
|
@ -1,46 +0,0 @@ |
|||||||
import svgwrite |
|
||||||
from svgwrite import cm,mm |
|
||||||
from math import cos,sin,pi |
|
||||||
''' |
|
||||||
https://stackoverflow.com/questions/13006601/setting-default-units-in-svg-python-svgwrite |
|
||||||
''' |
|
||||||
|
|
||||||
|
|
||||||
drawring = svgwrite.Drawing('test.svg', profile='tiny', size=('17cm', '13cm'), viewBox=('0 0 17 13')) |
|
||||||
|
|
||||||
''' You need size and viewBox. Why I don't know, also formatting is insane''' |
|
||||||
|
|
||||||
x=[] |
|
||||||
y=[] |
|
||||||
N=6 |
|
||||||
r=2 |
|
||||||
print(cm) |
|
||||||
for n in range(N): |
|
||||||
x.append( (r * cos(2*pi*n/N)+7) ) |
|
||||||
y.append( (r * sin(2*pi*n/N)+7) ) |
|
||||||
|
|
||||||
z=list(zip(x,y)) |
|
||||||
|
|
||||||
def polycoord(sides,radius,cenx=0,ceny=0,unit='cm'): |
|
||||||
x=[] |
|
||||||
y=[] |
|
||||||
for n in range(sides): |
|
||||||
x.append( str((r *cos(2*pi*n/sides)+(sides+1))) + cenx) |
|
||||||
y.append( str((r *sin(2*pi*n/sides)+(sides+1))) + ceny) |
|
||||||
z=list(zip(x,y)) |
|
||||||
return z |
|
||||||
''' |
|
||||||
print(x,y) |
|
||||||
print(z) |
|
||||||
point=list(zip([xp*cm for xp in x],[yp*cm for yp in y])) |
|
||||||
print(point) |
|
||||||
''' |
|
||||||
hex=drawring.polygon(points=z, stroke='green',fill='yellow', id='hex1',stroke_width='.1') |
|
||||||
|
|
||||||
''' |
|
||||||
hex=drawring.polygon(points=[(9,7),(8, 8.732050807568877),(6,8.732050807568879),(5, 7),(6, 5.267949192431123),(8, 5.267949192431123)] ,stroke='green',id='hex1',stroke_width=3) |
|
||||||
''' |
|
||||||
|
|
||||||
|
|
||||||
drawring.add(hex) |
|
||||||
drawring.save() |
|
@ -1,7 +1,3 @@ |
|||||||
##Useful code snippets |
# gist |
||||||
|
|
||||||
These are some potentially useful code snippets. Some may be out of date, but there you are. |
Potentially useful code snippets |
||||||
|
|
||||||
Mostly for Python and C++/Arduino. I'm not a very good programmer, so don't be expecting miracles here. |
|
||||||
|
|
||||||
Also, **remember to anonymize** |
|
Loading…
Reference in new issue