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
|
import io import json import random import time
import requests from flask import (Flask, flash, redirect, render_template, request,send_from_directory, url_for) from flask_redis import FlaskRedis from PIL import Image, ImageDraw, ImageFont from user_agents import parse
app = Flask(__name__) app.config['REDIS_URL'] = "redis://:dogcatdog@127.0.0.1:6542/0" rc = FlaskRedis(app, decode_responses=True) basdog = Image.open('bd.png', 'r')
def get_number(): dog_number = rc.incr('dogg') return dog_number
def rndColor2(): return (random.randint(1, 144), random.randint(1, 120), random.randint(1, 100))
def get_ip_info(dogip): canshu = {'ip': dogip, 'type': 'json'} r = requests.get('https://ip.shanshan-business.com/api.php', params=canshu) resd = (r.content.decode('utf8')) res = json.loads(resd[1:]) if res['code'] != 0: fu = [' ', ' '] return fu dog_location = res['data']['location'] dog_ip_fw = '{} - {}'.format(res['data']['ip']['start'], res['data']['ip']['end']) return [dog_location, dog_ip_fw]
def dog_pic(ip, refer, ua): """ docstring """ [dog_location, dog_ip_fw] = get_ip_info(ip) dog_uap = parse(str(ua)) dog_os = dog_uap.get_os() dog_browser = dog_uap.get_browser() dog_device = dog_uap.get_device() dog_num = get_number() dog_text_1 = '只争朝夕,不负韶华。 IP段 : {}'.format(dog_ip_fw) dog_text_2 = 'IP地址: {} {}'.format(ip, dog_location) dog_text_3 = '{}'.format(refer) dog_text_4 = '浏览器: {} OS: {} 设备: {}'.format( dog_browser, dog_os, dog_device) dog_text_5 = '已被访问{}次 北京时间:{}'.format(dog_num, time.ctime()) dog_text_6 = '为庆祝有记录以来访问量已经突破十万次,本签名图即将改版!' image = basdog.copy() font1 = ImageFont.truetype('/home/yu/.local/share/fonts/仿宋_GB2312.ttf', 14) font2 = ImageFont.truetype('/home/yu/.local/share/fonts/仿宋_GB2312.ttf', 20) draw = ImageDraw.Draw(image) draw.text((10, 30), dog_text_1, font=font2, fill=(255, 0, 0)) draw.text((10, 70), dog_text_2, font=font2, fill=(0, 0, 0)) draw.text((10, 110), dog_text_3, font=font1, fill=rndColor2()) draw.text((10, 150), dog_text_4, font=font2, fill=rndColor2()) draw.text((10, 180), dog_text_5, font=font2, fill=rndColor2()) draw.text((10, 210), dog_text_6, font=font1, fill=rndColor2()) buf = io.BytesIO() image.save(buf, 'jpeg') image.close() buf_str = buf.getvalue() response = app.make_response(buf_str) response.headers['Content-Type'] = 'image/jpeg' return response
@app.route('/') def index(): dog_ip = request.remote_addr dog_ua = request.user_agent dog_uap = parse(str(dog_ua)) dog_os = dog_uap.get_os() dog_browser = dog_uap.get_browser() dog_device = dog_uap.get_device() dog_refer = request.referrer [dog_location, dog_ip_fw] = get_ip_info(dog_ip) dog_num = get_number() dog_text = '只争朝夕 不负韶华 <br>{} {} <br>Hits: {}<br>浏览器: {} OS: {} 设备: {}<br>{}<br>{}\n'.format(dog_ip, dog_location, dog_num, dog_browser, dog_os, dog_device, dog_refer, dog_ip_fw) return dog_text
@app.route('/img.jpg') def img(): return dog_pic(str(request.remote_addr), str(request.referrer), request.user_agent)
if __name__ == "__main__": app.run(debug=True)
|