-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathhandler.py
134 lines (101 loc) · 3.1 KB
/
handler.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import praw
import time
import json
import random
import boto3
import os
import math
from lark import Lark, Transformer, Tree, Token, Visitor
def everyfifteenseconds(evt, context):
start = time.time()
while True:
tusapboutsmedestrozan(evt, context)
time.sleep(15)
duration = time.time() - start
if duration > 45.0:
break
class PoemTransformer(Transformer):
def __init__(self) -> None:
super().__init__()
def transform(self, tree: Tree):
return super().transform(tree)
def character(self, t):
t[0].value = "%s\u0336" % t[0].value
return Tree('strokecharacter', t)
def strokecharacter(self, t):
t[0].value = '▓'
return Tree('bloque', t)
def separator(self, t):
return Tree('separator', t)
def bloque(self, t):
return Tree('bloque', t)
def transformar(poema, veces):
grammar = '''
start: (strokecharacter | bloque | character | separator )*
separator: "," | " " | "." | "\\n" | "\\t"
strokecharacter: /\w\u0336/
character: /\w/
bloque: "▓"
'''
random.seed(0)
l = Lark(grammar, keep_all_tokens=True)
r = l.parse(poema)
chars = [ c for c in r.find_data('character') ]
i = 0
while i < veces:
position = random.randint(0, len(r.children) - 1)
if r.children[position].data in [ 'separator' ]:
continue
transformer = PoemTransformer()
r.children[position] = transformer.transform(r.children[position])
i+=1
poema = ""
r= r.copy()
for i in r.scan_values(lambda x: isinstance(x, Token)):
poema += i.value
return poema
def tusapboutsmedestrozan(evt, context):
s3 = boto3.client('s3')
data = s3.get_object(Bucket="tusapboutsmedestrozan", Key="post_url")
post_url = data['Body'].read().encode('utf-8')
# credenciales en praw.ini, no versionado
# se necesita un archivo praw.ini con client_id, client_secret, password, username, user_agent
reddit = praw.Reddit()
poema = """
Tus apbouts me destrozan.
Tus comentarios
tus daunvouts
también.
La materia es secreto.
El número
una distancia irresoluble.
Somos una criptografía mutua.
Colgados de una nube de muerte
nos escroleamos a nosotros mismos.
Le damos efecinco
a la soledad.
"""
s = reddit.submission(url=post_url)
marcas = s.num_comments + abs(s.score) # + (time.time() - s.created_utc) // 60 - 20
poema = transformar(poema, marcas)
s.edit(poema + "\n\n\nhttps://github.com/nmercado1986/tusapboutsmedestrozan\n\n\n(https://instagram.com/chingologram)[@Chingologram]")
# Función de prueba para correr en línea de comandos
if __name__ == "__main__":
poema = """
Tus apbouts me destrozan.
Tus comentarios
tus posts
tus daunvouts
también.
La materia es secreto.
El número
una distancia irresoluble.
Somos una criptografía mutua,
colgados de una nube de muerte
nos escroleamos a nosotros mismos.
Le damos efecinco
a la soledad.
"""
for i in range(1, 1000):
print(i)
print(transformar(poema, i))