120 lines
5.0 KiB
Python
120 lines
5.0 KiB
Python
|
# coding: utf8
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
from config import *
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
# Flask / Server
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
from waitress import serve
|
||
|
from flask import Flask, redirect, url_for, render_template, request, session,jsonify,send_file
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
# MongoDB
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
import pymongo
|
||
|
from pymongo import MongoClient
|
||
|
from bson.objectid import ObjectId
|
||
|
import json
|
||
|
import simplejson
|
||
|
import urllib
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
# email
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
from email.mime.multipart import MIMEMultipart
|
||
|
from email.mime.text import MIMEText
|
||
|
import smtplib
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
# API
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
from datetime import datetime, timedelta
|
||
|
from random import randint
|
||
|
import pyqrcodeng
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
# genérico
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
from math import radians, cos, sin, asin, sqrt, acos,ceil,floor
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
import os
|
||
|
import glob
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
# API
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
import re
|
||
|
import base64
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
# Ranking
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
import threading
|
||
|
import time
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
# IA
|
||
|
#------------------------------------------------------------------------------------------------------------------------------
|
||
|
import matplotlib
|
||
|
matplotlib.use('Agg')
|
||
|
import matplotlib.pyplot as plt
|
||
|
import numpy as np
|
||
|
from random import random
|
||
|
# from sklearn.metrics import accuracy_score
|
||
|
from scipy.io.wavfile import write
|
||
|
import _pickle as pkl
|
||
|
|
||
|
def stringToBase64(s):
|
||
|
return base64.b64encode(s.encode('utf-8'))
|
||
|
def base64ToString(b):
|
||
|
try:
|
||
|
return base64.b64decode(b).decode('utf-8')
|
||
|
except ValueError:
|
||
|
return base64.b64decode(b).decode('ISO-8859-1').encode('utf8').decode('utf8')
|
||
|
|
||
|
def RANDON_CODES(number_of_codes=1,not_can_do=[],digits=50):
|
||
|
m = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
|
||
|
codigos_gedados = []
|
||
|
while len(codigos_gedados)<number_of_codes:
|
||
|
nao_encontrado = True
|
||
|
codigo = ""
|
||
|
while nao_encontrado:
|
||
|
for i in range(0,digits):
|
||
|
codigo+= m[randint(0,len(m)-1)]
|
||
|
if codigo in not_can_do:
|
||
|
codigo = ""
|
||
|
else:
|
||
|
codigos_gedados.append(codigo)
|
||
|
not_can_do.append(codigo)
|
||
|
nao_encontrado = False
|
||
|
return codigos_gedados
|
||
|
def EMAIL(to,subject,body):
|
||
|
try:
|
||
|
me = GMAIL_USER
|
||
|
you = to
|
||
|
# Create message container - the correct MIME type is multipart/alternative.
|
||
|
msg = MIMEMultipart('alternative')
|
||
|
msg['Subject'] =subject
|
||
|
msg['From'] = me
|
||
|
msg['To'] = you
|
||
|
# Create the body of the message (a plain-text and an HTML version).
|
||
|
text = ""
|
||
|
html = body
|
||
|
# Record the MIME types of both parts - text/plain and text/html.
|
||
|
#part1 = MIMEText(text, 'plain')
|
||
|
part2 = MIMEText(html, 'html')
|
||
|
# Attach parts into message container.
|
||
|
# According to RFC 2046, the last part of a multipart message, in this case
|
||
|
# the HTML message, is best and preferred.
|
||
|
#msg.attach(part1)
|
||
|
msg.attach(part2)
|
||
|
# Send the message via local SMTP server.
|
||
|
mail = smtplib.SMTP(GMAIL_SERVER, GMAIL_PORT)
|
||
|
mail.ehlo()
|
||
|
mail.starttls()
|
||
|
mail.login(GMAIL_USER, GMAIL_PASSWORD)
|
||
|
try:
|
||
|
mail.sendmail(me, you, msg.as_string())
|
||
|
mail.quit()
|
||
|
return True
|
||
|
except Exception as e:
|
||
|
return False
|
||
|
else:
|
||
|
return True
|
||
|
except Exception as e:
|
||
|
return False
|
||
|
else:
|
||
|
return True
|