From 2b14716cbeea5d57eef2ec16c86bbeade70fe350 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=A6=E6=83=B3=E6=A9=A1=E7=9A=AE=E6=93=A6?= Date: Tue, 10 Jan 2023 10:27:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=8E=E4=B8=BA=E4=BA=91=E7=A4=BE=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/__init__.py | 12 +- app/apis/index.py | 22 +- app/csdn/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 131 bytes app/csdn/__pycache__/index.cpython-36.pyc | Bin 0 -> 3135 bytes app/file/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 131 bytes app/file/__pycache__/index.cpython-36.pyc | Bin 0 -> 790 bytes app/hw/__init__.py | 0 app/hw/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 129 bytes app/hw/__pycache__/index.cpython-36.pyc | Bin 0 -> 956 bytes app/hw/index.py | 26 + app/model.py | 14 + .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 133 bytes app/school/__pycache__/index.cpython-36.pyc | Bin 0 -> 4061 bytes app/slow/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 131 bytes app/slow/__pycache__/index.cpython-36.pyc | Bin 0 -> 1742 bytes app/static/images/qrcode.png | Bin 0 -> 27923 bytes app/templates/common/nav.html | 5 +- app/templates/csdn/blogstar.html | 38 +- app/templates/hw/rank.html | 89 + app/user/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 131 bytes app/user/__pycache__/index.cpython-36.pyc | Bin 0 -> 434 bytes db-sqls/score1.sql | 4280 ----------------- "db-sqls/score\345\244\207\344\273\275.sql" | 4277 ---------------- 23 files changed, 194 insertions(+), 8569 deletions(-) create mode 100644 app/csdn/__pycache__/__init__.cpython-36.pyc create mode 100644 app/csdn/__pycache__/index.cpython-36.pyc create mode 100644 app/file/__pycache__/__init__.cpython-36.pyc create mode 100644 app/file/__pycache__/index.cpython-36.pyc create mode 100644 app/hw/__init__.py create mode 100644 app/hw/__pycache__/__init__.cpython-36.pyc create mode 100644 app/hw/__pycache__/index.cpython-36.pyc create mode 100644 app/hw/index.py create mode 100644 app/school/__pycache__/__init__.cpython-36.pyc create mode 100644 app/school/__pycache__/index.cpython-36.pyc create mode 100644 app/slow/__pycache__/__init__.cpython-36.pyc create mode 100644 app/slow/__pycache__/index.cpython-36.pyc create mode 100644 app/static/images/qrcode.png create mode 100644 app/templates/hw/rank.html create mode 100644 app/user/__pycache__/__init__.cpython-36.pyc create mode 100644 app/user/__pycache__/index.cpython-36.pyc delete mode 100644 db-sqls/score1.sql delete mode 100644 "db-sqls/score\345\244\207\344\273\275.sql" diff --git a/app/__init__.py b/app/__init__.py index 9587e77..a6a24f7 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -5,20 +5,19 @@ from .config import BaseConfig # 导入配置文件 # Flask 限流器 from flask_limiter import Limiter -from flask_limiter.util import get_remote_address,get_ipaddr - - - +from flask_limiter.util import get_remote_address, get_ipaddr app = Flask(__name__) app.config.from_object(BaseConfig) # 启用配置 + def get_real_ip(): if request.headers.getlist("X-Forwarded-For"): return request.headers.getlist("X-Forwarded-For")[0] return request.remote_addr + limiter = Limiter(app, key_func=get_real_ip) # limiter = Limiter(app, key_func=get_ipaddr) @@ -37,10 +36,13 @@ from .csdn.index import * from .slow.index import * from .user.index import * from .apis.index import * +from .hw.index import * + app.register_blueprint(s) app.register_blueprint(f) app.register_blueprint(antispider) app.register_blueprint(cs) app.register_blueprint(slow) app.register_blueprint(u) -app.register_blueprint(api) \ No newline at end of file +app.register_blueprint(api) +app.register_blueprint(hw) diff --git a/app/apis/index.py b/app/apis/index.py index 994f1e4..e70e0a5 100644 --- a/app/apis/index.py +++ b/app/apis/index.py @@ -1,4 +1,4 @@ -from flask import Blueprint, send_file +from flask import Blueprint, send_file, jsonify from PIL import Image, ImageDraw, ImageFont import random @@ -63,3 +63,23 @@ def index(): buf.seek(0) return send_file(buf, mimetype='image/png') + + +@api.route('/phone') +def phone(): + def generate_phone_number(): + # 随机生成手机号码的前缀 + prefix = random.choice(['130', '131', '132', '133', '134', '135', '136', '137', '138', '139', + '150', '151', '152', '153', '155', '156', '157', '158', '159', + '180', '181', '182', '183', '184', '185', '186', '187', '188', '189']) + # 随机生成手机号码的后缀 + suffix = ''.join(random.choice(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']) for _ in range(8)) + # 将前缀和后缀组合起来,生成手机号码 + return prefix + suffix + + phone_number = generate_phone_number() + phone = { + 'phone': phone_number + } + + return jsonify(phone) diff --git a/app/csdn/__pycache__/__init__.cpython-36.pyc b/app/csdn/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a37ae4b333e336b9e3ad663f9b98a3b4588ae254 GIT binary patch literal 131 zcmXr!<>d7&-72cU$l1qxBDC);*nmQZTt;5u^TqSLRR29-lY8t?m0n1HVLN2r7toWnl zlA0Y_B0&~u6&G-7*)nRoX<9^R5jP16C`OaCj_trePCfS2!<-6Kq|8eT6zC# zQBA2uEu|5(sbCAF0-mnf!D1*CD(We{7*2(YkyHfi0T#5oiqTZm!-VYaVk{LSiba`j z^{_CDtg5NF)w`mk60FNgFnvt1;)OmIT_LQS#a>lbNUGnn^nfMKdOgd4XGwsikM(<& zK}KejLSY@7fgbWqjl9QjW$`H2}E0!ygMD}pYVHQsdt5~*8VI?)G zIVF*nn(45#R7)IGVJ(X`g@7?*NQK+!GPmaQ%Q9$YME2;@kv(0Q?s`e*|O~ z3ocMVd=`5Fupz+S^kMafU|$Ao7_gf@Y~&%>rvclwK-UOQ_|VaZpo4(!_R!-#bZkGg zBLUmvVGBNNd|&JaV0%66H6J#yFZQQ^?enmo_^|!^VqXO8fQS934?DOo_DR4V04(K0 zKJ3tb*yU&H%A|5;w4v73LX;^BVHovY)C=A0b1MX%o@I|XlzqOgrejW!J&OGrT|D^G z{WAfGIrarW9B62whaIddbxp+CW2+k6k;kW{RyMO1CvXt|^K}qQIa3%Ww~T73Vl?l( z+Pr$b`TCpxy0dPKnMMu{_P36V92viN_e%5EZ?=Dbt^L~%$41QY_Aekn8-rAI5HFl= zp8M10?Q1-OmLQ1c`PHpIyw_HDp4Tqovxd(J^uP6X>*|fx>c-~Hi(4DNY`uTAjd!Fn z0Almj<>tlptt;!`L;a)oo0o31F={1>L(i|a{&=_b+AFQ!yw?tGTQ_grYX13p>sPn# zt$f_ZIaPq$lzVsAwr+m_ahe5g%S?p1a<>b4hBW$45syuU>tlx$(Q!wHvM1*L{Y~kA4n@nmRl@-2MxMsU?sd zc39w8P84mRC9UFGTLFU(qC5OL5UzQ z33n+kaw!dUj(O(>h-82tL_H2d5=)W_e+<-j6+Qypr^C-bGh42TT**nh5YNVuX??iNjwfL(mRyHyR;_p&cR* zG_V=aqT~@8r3u2n3UO-sh+{47VOTtixDt!EZKxt%=q)5fUtPsbZ)ly5in=xlr4qKk zpY_1@53snm{fTKw#Q%jCIc}0ig&b=>M`q!JC=Q?)0#WRWpkuMwHpLt>Wc_TZwkTfQzW+pOt&hdwzCdjTc&|JK+ zS*5O=(Ho>rF4INe`p!YaBbTI-9y=~oURv5UdPnfn$QWMGOsQBNKZAiVYEY>i!gIHK zG>?thrHpC2sTEC;gGJegwxX>~FK5IhDEFu(|8H~?`m3y?@*2xib^^jpbL1QJFNzYN^1VhSotGV=4{ ziwiPSQj6jXauO@ki}FkJQeqMd3S!bSb5djC<1_OzOXB183My}L*yQG?l;)(`flMj} GVg>;4$RJn% literal 0 HcmV?d00001 diff --git a/app/file/__pycache__/index.cpython-36.pyc b/app/file/__pycache__/index.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4cba6fa4b66ed8aff752507f2c071a5dfb73cbcb GIT binary patch literal 790 zcmZuuy>8nu5GE`b zkJe0ig-*R=>oh|M@Ob==yzlP2QK!@V{P=7AKnZyu&sG5bJJ`7ZBZ#0WQFK8STQG`u z26u1aQ6j1Eq%V9C+4s&3@BLgqH2)rpZiAx&(h(&@^|%HJfZECY@Q#G8dlV{POnxhWZ6 zuQAziF>pS>&O5LDDe0a(yBR;tp zPiEt(m`$e_X9M6YJFZLcj(y^A|Fs*zh#(S!djI=2s8bapj$hkw%duF(d}^9-g6wKk zoIQ2pVqjhrx%-zM-XHlf*E2S!x1(%eR>#?gCr9~O;LoFG6>QQ~eq~Tp(M=V=XsmRCyFv~AeUU1BqcTyX@-0px$EJF;&AMJc=-2)L+WN0J literal 0 HcmV?d00001 diff --git a/app/hw/__init__.py b/app/hw/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/hw/__pycache__/__init__.cpython-36.pyc b/app/hw/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..315a8854a4f2aa6d89badde2396dd1b8d669afa4 GIT binary patch literal 129 zcmXr!<>h*sx+|Fh2p)q77+?f49Dul(1xTbY1T$zd`mJOr0tq9CUwZCVF$I++8Tonf z#RZuusYUSxIf<3&Mfs(9DKUu!1u+@rG4b)4d6^~g@p=W7w>WHa^HWN5Qtd$I6az5> E0H)<1jQ{`u literal 0 HcmV?d00001 diff --git a/app/hw/__pycache__/index.cpython-36.pyc b/app/hw/__pycache__/index.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e2e9c45399e4a6bcb1855cdcaa2364d6d6fbe770 GIT binary patch literal 956 zcmYjOO>fjX6pfva$)qzKT0ZnZZxJCO5kM`J9YRk}@DQv3^$8)ON|77iX)?8w!FHHV z)vksuNc;?zEFV9`+qdE`u;Mz?1(AGw@3nn%&bbfAn&~Q+N0XY}UKo;7dX-#1R*6_mmt-{d2 ziLsFe0j2qYHhB0jdeO1BP-8^-p{3R0)ZeWZm?oVP#azL(KCuxiP5l8*!(GLi0|nbDblhC0s48JPtu@0^;D(=%!!?tk)8S@81o+nPywC!MNR zrni%ee96mJ%HmM8M+NIl)v9|g))z@pH`DfB*>;V&UGpquI@RkARmT=kr^%uM1?l=t zsQ~RLOf4Z5^)aM3_wMgK+`a$c*3IPk{;M~y(F0%d2w##1n5#e`7KFSU(; zGxha*VIu{)6Gm-e?W?E$!0qSV=Z_BNOH|$zdS1J^;!u}I3N`ZsHlH6=(V}FHk2&~p++wDk;__fToetHP!wv@9R$2CO)t}i$l5^9p%?cXTz6OF c$JnqF@E5^MJ7;2gg^b9b$bCdNNkn4*7q#92v;Y7A literal 0 HcmV?d00001 diff --git a/app/hw/index.py b/app/hw/index.py new file mode 100644 index 0000000..1083b83 --- /dev/null +++ b/app/hw/index.py @@ -0,0 +1,26 @@ +import math + +from flask import Blueprint, jsonify, request +from flask import render_template +from sqlalchemy import not_, and_, or_, text, select + +from ..model import HuaWei # 导入上级模块 +from app import db + +hw = Blueprint('hw', __name__, url_prefix='/hw') +nav = dict(); +nav['hw'] = 'active' + + +@hw.route('/rank') +def new_star_list(): + sql = text("""select * from ( +select ydcomm_blog_author,blogs_author_info,count(id) as s from huawei +where blogs_create_time like "2023/01%" +GROUP BY blogs_author_info +) b +ORDER BY b.s desc""") + + result = db.engine.execute(sql) + data = result.fetchall() + return render_template('hw/rank.html', data=data, nav=nav) diff --git a/app/model.py b/app/model.py index 6e13233..87af477 100644 --- a/app/model.py +++ b/app/model.py @@ -60,3 +60,17 @@ class Csdn(db.Model, EntityBase): ip = db.Column(db.String(255)) url = db.Column(db.String(255)) + + +class HuaWei(db.Model, EntityBase): + """ + 表名,字段名 + """ + __tablename__ = "huawei" + id = db.Column(db.Integer, primary_key=True) + blog_id = db.Column(db.Integer) + href = db.Column(db.String(20)) + blogs_author_info = db.Column(db.BigInteger) + + ydcomm_blog_author = db.Column(db.String(30)) + blogs_create_time = db.Column(db.String(30)) diff --git a/app/school/__pycache__/__init__.cpython-36.pyc b/app/school/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..895f1886c6a846bead00f8d982aedb283b0725dc GIT binary patch literal 133 zcmXr!<>i|6cX=`c5IhDEFu(|8H~?`m3y?@*2xib^^jpbL1QJFNzl_|iVhSotGV=4{ ziwiPSQj6jXauO@ki}FkJQeqMd3Sx?rGxGCuV&da7^D;}~jhg{;m!EEcCyQCthHh#x>4Dt(?ADnW?c}*45i6 z8+hxX*|5r1!!Fy6OgY17tpUs_JLsF-3f)GwoK?6Tjx=)R9MgP@XZ%s_aQCuN&hsoE z+0)8n{0TnF^Lwm3?&s?he5}j(IG@2z zM-_4$$O(Q@AyW!D1>`h8rI2F^c?if1e@G$I3i%9>hxsE4DJtX)kVp9$g&bGNV_oLw z>L>VTG4nVt(F}Aw$=QlldUBtPx?D1(`&8KWBM~$cnW@LEX0X03Gs3^v_T!|)DG8?9D|UM370LE;N(#|qjp=HeK5wk^U+B>eSYt4f>bNAAnw z`39c&Z)iGj;k0Ux!CC5WbQs=n&9B{EJ<;l{!#X;*i`oes0KLqjMs1N=2YpD`Wa4?w zcF_ao5=L`HZPOAjroG)hf>E|VKY};Dw5f|9a~*hYQEN`)JyJ|{Qs11UeVD0fyT;a; zL|0#cWX_IhUHxh8h5WABG3rLg>@ucZ{OfnLj)5Jckgdba`Su^^#54Fk=hcFymjtcm z%qLghy#CQ^y=yPs{N1JAt3TNP?VoyAUcT}Awce}OdT;-{cj<%Pm0#??a^?C5Z~x=t zAN4+b@8(~w_I~vnn*HJB-j!=g+(P6DuQ3yOHGg5|`p0kdF8w|gf-MmE$r~>XFH2g9 z7cR`;8#gZh@y7T64C(2#@RPP^E~vpiLP`_V>`$UuF1gZ$|6Z)nN2J^Ix01A*tF{Gb z(H~`%@N~v$cw7DDw5bvYJHE8k0%^C_*JD4CSv4cPX3ZA}Z%vF-GeONLHF;{rs39%H zQ8Xn}nhh`6kY?2nLTRbZ()OYVR+b$ly|q?X8zl?g(!@zjd^-2c!fLdg zY_yt{I0}f;;PZA(wAxL+3Q4OedshR{eQP$_mf7b99wX)A^Jp~3W;WA@{*E!la=ODz z=IA-*P#>eLKCPQNct_IQ@MBuKzOH^W; zhFHQ3XvXy-LZEJ;XQ-Zy)n?NKIZX8WE2pOBB#RI9ps*x8 zR`A4R?HWSog`Cnv>uNvIFPbZ<`6$klR)q)Eq@+uI_VdyZt?wzzrp+nr{xrK7260kt zHKL_&lSqNUG61bg~p|f$Y86qkcGsyw5o7Y zlG>59l$J_4((uBtWQpT|#2IRc0g7M!uZc$pCHLP}QcnDbHcMC#lVLQ&R?c(SX}Ay0 zW1<9f$C^`G(hB;~u}nP5eUG7&XbD_bH#qW1SBC?%#O#nGSYmO?XXa(f2G(+_D{*0G zBIVm$%D0WAfm|vc$4tqV2C}iBFG$l9wOAT8KT(V3)F_c#?XbqlR26i1zm~F)rpXmU<-atnGucqS&`=)DFX>h2kmvc;kR|?{TL8Mvfdwt@MS~4xERH zFJN5G`pv4?{$J^FqJM}~*uannj&Xk^kz7Is>L!~ou(|a3km?p|> z!X50$s>El(;g-rM?odXdy9_jzZW1(bKlU2YzjDy?<~#4-c=zSrDfa7qD5n8~zp#YWSG6)Gd7|ec35PzCvGG zq{Sx5k(ns9tEwi4=prZ70aS$d6Wh{-4XpNE$yCQtkbLz6PRH7nGJz z^XWEFIwhv?5?`W*E}G(NXr#3sdhw_j0`a0+f=6wd^D#e(Coe*?8Uhj{=1 literal 0 HcmV?d00001 diff --git a/app/slow/__pycache__/__init__.cpython-36.pyc b/app/slow/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..700167e1c28606a6cae85cb5eda46a2bb2326b28 GIT binary patch literal 131 zcmXr!<>hj9+my@z1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnF9Ub0n1afZjQqU# z;)2YS)S~!;oW#oXqWsdll$gYVf|%l*{PLLi_{_Y_lK6PNg34PQHo5sJr8%i~Ad`xL Gm;nHfMIWvJ literal 0 HcmV?d00001 diff --git a/app/slow/__pycache__/index.cpython-36.pyc b/app/slow/__pycache__/index.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..46f7f8f6198049837db3f5b655ec57c725edd5a0 GIT binary patch literal 1742 zcmZ`(TT>KA6rSte08!KgV{YcYCdvXD*_4&a(&=C6T z&j;PN{S5P*+4E}v`zv^~zhNK@VHHNgnN!#lCvhoW;!}bou;}B#CrToCjk;9AyQWqNIhvF`$!|T_mcypi5#T%A##|!Mqa0OGdV)uAV;bFCV30& zx2gROd6yg`?@{}G@&Wmfd_?V!$tU0squm>nf^r}kBFFPA`ILNinaQ(K9rc_5&q>lk zJ@te=$Alv;P{c{BKpV#rxFk=9LrQp=GUmscJ4Qt|t^ZPaH%8E5n@;(-p?EIDI1DC2JYt{07Fr3vz>)QRWU<&DY zN|x$XS&`$K9Mco<=I_p=vhj3I3Z*hXCBT`>%7za}+}WGXts!GSn61%hJ4Vq8QJks; z;Vw?wr8RqC)_GQhI4Y%?ogi?twJ>CDJu&LhoGe;}rOMW5b$pcO1ZYt}i_o0fYjE~& zcbumM`_W@-e$p-$-0ABt%gF=72x2I|Zr;y+binbfCy;-i5 zik@h%Ca?!rs*^WfBydJI+*_CJ;)+vvU^G%aIz9)24#1~1ISM{|a@{FxTX)7iEnZ+a zhBDO3VvXFZl#6@oW9LWg!5L4ifn{r9)7mP#tAjhzcbow#no0+1g;-wl0O83DhP}F2 zc{+!liFxO)r;9VPVb48=&DPjB#e%~Wf!8R89Yw4rjC+qPFH_u}9D=+sTu*V_W6du) zYqQS6GrLr(Za%Swr*>qCo(6oZD^;B?EiXf5caExeNRJ}|JrujB7VaYP1Vk^?&pA+AG(Ur~VeVKGj%O#kv)dKv&e|l45!w?*za#4vK~(;yRqR%0UjD#1Pqq>u1Z{!!@z>Y=~123_+3qa`uXHywsDDsz>pY}Zr e0qzh45McN59E*P+w=>t?Up3d({cjElP2#@}H-XLo literal 0 HcmV?d00001 diff --git a/app/static/images/qrcode.png b/app/static/images/qrcode.png new file mode 100644 index 0000000000000000000000000000000000000000..1f44466e4eb9eb45da045fa16f994ce2d03e2f61 GIT binary patch literal 27923 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�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 literal 0 HcmV?d00001 diff --git a/app/templates/common/nav.html b/app/templates/common/nav.html index c563764..03374ee 100644 --- a/app/templates/common/nav.html +++ b/app/templates/common/nav.html @@ -16,7 +16,7 @@ - + @@ -28,6 +28,9 @@ +