def str2qr_terminal(data, is_send): """ @brief convert string to qrcode matrix and outprint @param data The string """ cm = ConfigManager() file_dir = cm.getpath('qrcode_path') with open(file_dir, 'wb') as f: f.write(data) if is_send: p = multiprocessing.Process(target=send_login_mail, args=(file_dir, )) p.start() scanner = zbar.ImageScanner() scanner.parse_config('enable') pil = Image.open(file_dir).convert('L') width, height = pil.size raw = pil.tobytes() image = zbar.Image(width, height, 'Y800', raw) scanner.scan(image) text = '' for symbol in image: text += symbol.data del image echo('二维码表示地址:%s\n' % text) qr = qrcode.QRCode() qr.border = 1 qr.add_data(text) mat = qr.get_matrix() print_qr(mat)
def send_mail(to_addr, type_name, name): try: host = Constant.send_mail_host port = Constant.send_mail_ssl_port sender = Constant.send_mail_addr pwd = Constant.send_mail_apikey receiver = to_addr msg = MIMEMultipart() text = '发送记录为:%s %s' % (name, type_name) msg.attach(MIMEText(text, 'plain', 'utf-8')) msg['subject'] = 'deepintell测试记录发送' # 设置标题 msg['from'] = sender # 设置发送人 msg['to'] = receiver # 设置接收人 cm = ConfigManager() file_dir = cm.getpath('datafile') file_name = type_name + 'z' + trans_unicode_into_int( trans_coding(name)) + '.csv' att1 = MIMEText( open(file_dir + file_name, 'rb').read(), 'base64', 'utf-8') att1["Content-Type"] = 'application/octet-stream' att1["Content-Disposition"] = 'attachment; filename="%s"' % file_name msg.attach(att1) s = smtplib.SMTP_SSL(host, port) # 使用SSL端口 s.login(sender, pwd) # 登陆邮箱 s.sendmail(sender, receiver, msg.as_string()) # 发送邮件 s.quit() # 关闭链接 print '邮件发送成功\n' except: error(traceback.format_exc()) print '邮件发送失败\n' finally: exit() # 退出子进程
def recover_login_data(self): cm = ConfigManager() # 恢复鉴权参数 self.clientid = int(cm.get('login_data', 'clientid')) self.urlPtwebqq = cm.get('login_data', 'url_ptwebqq') self.ptwebqq = cm.get('login_data', 'ptwebqq') self.vfwebqq = cm.get('login_data', 'vfwebqq') self.uin = int(cm.get('login_data', 'uin')) self.psessionid = cm.get('login_data', 'psessionid') self.hash = cm.get('login_data', 'hash') self.bkn = int(cm.get('login_data', 'bkn')) self.user['qq'] = cm.get('login_data', 'user_qq') self.user['nick'] = cm.get('login_data', 'user_nick') # 恢复cookies file_dir = cm.getpath('cookie') with open(file_dir, 'rb') as f: cookies = requests.utils.cookiejar_from_dict(pickle.load(f)) self.session = requests.session() self.session.cookies = cookies self.session.headers.update({ 'User-Agent': ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9;' ' rv:27.0) Gecko/20100101 Firefox/27.0'), 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }) return True
def __init__(self, msg_db): self.smartqq = None self.msg_db = msg_db cm = ConfigManager() self.data_file = cm.getpath('datafile') if not os.path.exists(self.data_file): os.makedirs(self.data_file) self.msg_col = ''' MsgOrder integer primary key, Time text, FromNick text, ToNick text, content text ''' self.user_type = ['normal', 'group', 'discuss']
def save_login_data(self): cm = ConfigManager() # 保存鉴权参数 cm.set('login_data', 'clientid', self.clientid) cm.set('login_data', 'url_ptwebqq', self.urlPtwebqq) cm.set('login_data', 'ptwebqq', self.ptwebqq) cm.set('login_data', 'vfwebqq', self.vfwebqq) cm.set('login_data', 'uin', self.uin) cm.set('login_data', 'psessionid', self.psessionid) cm.set('login_data', 'hash', self.hash) cm.set('login_data', 'bkn', self.bkn) cm.set('login_data', 'user_qq', self.user['qq']) cm.set('login_data', 'user_nick', self.user['nick']) # 保存cookies file_dir = cm.getpath('cookie') with open(file_dir, 'wb') as f: pickle.dump(requests.utils.dict_from_cookiejar(self.session.cookies), f) return True
from db import SqliteDB from db import MysqlDB from config import ConfigManager from config import Constant from config import Log #--------------------------------------------------- import flask import threading import traceback import os import logging import time #=================================================== cm = ConfigManager() db = SqliteDB(cm.getpath('database')) # db = MysqlDB(cm.mysql()) wechat_msg_processor = WeChatMsgProcessor(db) wechat = WeChat(cm.get('wechat', 'host')) wechat.db = db wechat.bot = Bot() wechat.msg_handler = wechat_msg_processor wechat_msg_processor.wechat = wechat PORT = int(cm.get('setting', 'server_port')) app = flask.Flask(__name__) app.config['UPLOAD_FOLDER'] = cm.getpath('uploaddir') logger = logging.getLogger('werkzeug') log_format_str = Constant.SERVER_LOG_FORMAT formatter = logging.Formatter(log_format_str)
from smartqq.utils import * from qq_handler import QQMsgHandler from qq_handler import Bot from db import SqliteDB from config import ConfigManager from config import Constant from config import Log import traceback import os import sys import logging import time cm = ConfigManager() msg_db = SqliteDB(cm.getpath('database')) qq_msg_handler = QQMsgHandler(msg_db) smartqq = SmartQQ() smartqq.bot = Bot() smartqq.msg_handler = qq_msg_handler qq_msg_handler.smartqq = smartqq logging.getLogger('requests').setLevel(logging.WARNING) logging.getLogger('urllib3').setLevel(logging.WARNING) logging.getLogger('PIL').setLevel(logging.WARNING) while True: try: smartqq.start() except KeyboardInterrupt:
from db import MysqlDB from config import ConfigManager from config import Constant from config import Log #--------------------------------------------------- from flask import Flask, render_template, send_file, jsonify, request import threading import traceback import os import logging import time #=================================================== cm = ConfigManager() db = SqliteDB(cm.getpath('database')) # db = MysqlDB(cm.mysql()) wechat_msg_processor = WeChatMsgProcessor(db) wechat = WeChat(cm.get('wechat', 'host')) wechat.db = db wechat.bot = Bot() wechat.msg_handler = wechat_msg_processor wechat_msg_processor.wechat = wechat PORT = int(cm.get('setting', 'server_port')) app = Flask(__name__, template_folder='flask_templates') app.config['UPLOAD_FOLDER'] = cm.getpath('uploaddir') logger = logging.getLogger('werkzeug') log_format_str = Constant.SERVER_LOG_FORMAT formatter = logging.Formatter(log_format_str)