You've already forked favicon-api-async
25.09.19
This commit is contained in:
@@ -386,8 +386,8 @@ def add_failed_url(domain: str, expire_time: int):
|
||||
new_count = len(failed_urls)
|
||||
|
||||
# 检查是否需要保存到文件(当新增了指定数量的URL或数量是指定阈值的倍数)
|
||||
if new_count % setting.FAILED_URLS_SAVE_THRESHOLD == 0 or (
|
||||
new_count - old_count) >= setting.FAILED_URLS_SAVE_THRESHOLD:
|
||||
if (new_count % setting.FAILED_URLS_SAVE_THRESHOLD == 0
|
||||
or (new_count - old_count) >= setting.FAILED_URLS_SAVE_THRESHOLD):
|
||||
save_failed_urls()
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ from typing import Optional
|
||||
|
||||
import urllib3
|
||||
from fastapi import APIRouter, Request, Query, BackgroundTasks
|
||||
from fastapi.responses import Response
|
||||
from fastapi.responses import Response, FileResponse
|
||||
|
||||
import setting
|
||||
from favicon_app.routes import favicon_service
|
||||
@@ -32,6 +32,8 @@ async def get_favicon(
|
||||
refresh: Optional[str] = Query(None, include_in_schema=False),
|
||||
):
|
||||
"""获取网站图标"""
|
||||
if not url:
|
||||
return FileResponse("templates/index.html")
|
||||
return await favicon_service.get_favicon_handler(request, bg_tasks, url, refresh)
|
||||
|
||||
|
||||
|
||||
2
main.py
2
main.py
@@ -5,6 +5,7 @@ import os
|
||||
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi.responses import Response
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
|
||||
import setting
|
||||
from favicon_app.routes import favicon_router
|
||||
@@ -23,6 +24,7 @@ referer_log_file = setting.referer_log_file
|
||||
|
||||
# fastapi
|
||||
app = FastAPI(title="Favicon API", description="获取网站favicon图标", version="3.0")
|
||||
app.mount("/static", StaticFiles(directory="static"), name="static")
|
||||
app.include_router(favicon_router)
|
||||
|
||||
|
||||
|
||||
2
static/css/app.6e1a9be5bf9dacce170f04018b053469.css
Normal file
2
static/css/app.6e1a9be5bf9dacce170f04018b053469.css
Normal file
File diff suppressed because one or more lines are too long
1
static/css/app.6e1a9be5bf9dacce170f04018b053469.css.map
Normal file
1
static/css/app.6e1a9be5bf9dacce170f04018b053469.css.map
Normal file
File diff suppressed because one or more lines are too long
BIN
static/fonts/element-icons.535877f.woff
Normal file
BIN
static/fonts/element-icons.535877f.woff
Normal file
Binary file not shown.
BIN
static/fonts/element-icons.732389d.ttf
Normal file
BIN
static/fonts/element-icons.732389d.ttf
Normal file
Binary file not shown.
2
static/js/app.c97f95b50095b442df6d.js
Normal file
2
static/js/app.c97f95b50095b442df6d.js
Normal file
@@ -0,0 +1,2 @@
|
||||
webpackJsonp([1],{Lptq:function(e,t){},NHnr:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n("zxxf"),a=n("yebG"),o=(n("Lptq"),{name:"App",data:function(){return{height:600,marginTop:200,year:(new Date).getFullYear(),iconUrl:"",iconImg:"https://api.xinac.net/icon/default",defaultIcon:"https://api.xinac.net/icon/default",placeholder:"https://www.xinac.net",headerLink:"https://api.xinac.net"}},methods:{handle:function(){console.log("表单提交的数据:",this.iconUrl),this.iconUrl?this.iconImg="https://api.xinac.net/icon/?url="+this.iconUrl:this.iconImg=this.defaultIcon},resize:function(){this.height=document.documentElement.clientHeight,this.marginTop=(this.height-300)/2},linkTo:function(){window.location.href=this.headerLink}},mounted:function(){var e=this;this.resize(),window.onresize=function(){e.resize()}}}),l={render:function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("el-container",{style:{height:e.height+"px"}},[n("el-header",[n("h2",{on:{click:e.linkTo}},[e._v(e._s(e.headerLink))])]),e._v(" "),n("el-main",{style:{marginTop:e.marginTop+"px"}},[n("div",[n("el-input",{attrs:{placeholder:e.placeholder,clearable:"",autofocus:""},on:{change:e.handle},model:{value:e.iconUrl,callback:function(t){e.iconUrl=t},expression:"iconUrl"}},[n("template",{attrs:{slot:"prepend"},slot:"prepend"},[e._v("https://api.xinac.net/icon/?url=")]),e._v(" "),n("template",{attrs:{slot:"append"},slot:"append"},[n("el-image",{staticStyle:{width:"32px",height:"32px"},attrs:{src:e.iconImg}})],1)],2)],1)]),e._v(" "),n("el-footer",[e._v("© "+e._s(e.year)+" "),n("a",{attrs:{href:e.placeholder}},[e._v("xinac.net")])])],1)],1)},staticRenderFns:[]};var u=n("lp4z")(o,l,!1,function(e){n("jQJW")},null,null).exports;i.default.config.productionTip=!1,i.default.use(a.Autocomplete),i.default.use(a.Input),i.default.use(a.Select),i.default.use(a.Button),i.default.use(a.ButtonGroup),i.default.use(a.Tooltip),i.default.use(a.Form),i.default.use(a.FormItem),i.default.use(a.Icon),i.default.use(a.Container),i.default.use(a.Header),i.default.use(a.Aside),i.default.use(a.Main),i.default.use(a.Footer),i.default.use(a.Image),new i.default({el:"#app",render:function(e){return e(u)}})},jQJW:function(e,t){}},["NHnr"]);
|
||||
//# sourceMappingURL=app.c97f95b50095b442df6d.js.map
|
||||
1
static/js/app.c97f95b50095b442df6d.js.map
Normal file
1
static/js/app.c97f95b50095b442df6d.js.map
Normal file
File diff suppressed because one or more lines are too long
2
static/js/manifest.3c886754347e2a8c0b4d.js
Normal file
2
static/js/manifest.3c886754347e2a8c0b4d.js
Normal file
@@ -0,0 +1,2 @@
|
||||
!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,c,a){for(var i,u,f,s=0,l=[];s<r.length;s++)u=r[s],t[u]&&l.push(t[u][0]),t[u]=0;for(i in c)Object.prototype.hasOwnProperty.call(c,i)&&(e[i]=c[i]);for(n&&n(r,c,a);l.length;)l.shift()();if(a)for(s=0;s<a.length;s++)f=o(o.s=a[s]);return f};var r={},t={2:0};function o(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,o){n=t[e]=[r,o]});n[2]=r;var c=document.getElementsByTagName("head")[0],a=document.createElement("script");a.type="text/javascript",a.charset="utf-8",a.async=!0,a.timeout=12e4,o.nc&&a.setAttribute("nonce",o.nc),a.src=o.p+"static/js/"+e+"."+{0:"c377031f0b4534916d3a",1:"c97f95b50095b442df6d"}[e]+".js";var i=setTimeout(u,12e4);function u(){a.onerror=a.onload=null,clearTimeout(i);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return a.onerror=a.onload=u,c.appendChild(a),r},o.m=e,o.c=r,o.d=function(e,n,r){o.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,"a",n),n},o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},o.p="/",o.oe=function(e){throw console.error(e),e}}([]);
|
||||
//# sourceMappingURL=manifest.3c886754347e2a8c0b4d.js.map
|
||||
1
static/js/manifest.3c886754347e2a8c0b4d.js.map
Normal file
1
static/js/manifest.3c886754347e2a8c0b4d.js.map
Normal file
File diff suppressed because one or more lines are too long
2
static/js/vendor.c377031f0b4534916d3a.js
Normal file
2
static/js/vendor.c377031f0b4534916d3a.js
Normal file
File diff suppressed because one or more lines are too long
1
static/js/vendor.c377031f0b4534916d3a.js.map
Normal file
1
static/js/vendor.c377031f0b4534916d3a.js.map
Normal file
File diff suppressed because one or more lines are too long
1
templates/index.html
Normal file
1
templates/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>favicon图标获取API</title><link href=/static/css/app.6e1a9be5bf9dacce170f04018b053469.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.3c886754347e2a8c0b4d.js></script><script type=text/javascript src=/static/js/vendor.c377031f0b4534916d3a.js></script><script type=text/javascript src=/static/js/app.c97f95b50095b442df6d.js></script></body></html>
|
||||
Reference in New Issue
Block a user