master
jinql 2025-09-19 15:52:55 +08:00
parent b8b10048c3
commit 1b9a50ec71
14 changed files with 20 additions and 3 deletions

View File

@ -386,8 +386,8 @@ def add_failed_url(domain: str, expire_time: int):
new_count = len(failed_urls) new_count = len(failed_urls)
# 检查是否需要保存到文件当新增了指定数量的URL或数量是指定阈值的倍数 # 检查是否需要保存到文件当新增了指定数量的URL或数量是指定阈值的倍数
if new_count % setting.FAILED_URLS_SAVE_THRESHOLD == 0 or ( if (new_count % setting.FAILED_URLS_SAVE_THRESHOLD == 0
new_count - old_count) >= setting.FAILED_URLS_SAVE_THRESHOLD: or (new_count - old_count) >= setting.FAILED_URLS_SAVE_THRESHOLD):
save_failed_urls() save_failed_urls()

View File

@ -6,7 +6,7 @@ from typing import Optional
import urllib3 import urllib3
from fastapi import APIRouter, Request, Query, BackgroundTasks from fastapi import APIRouter, Request, Query, BackgroundTasks
from fastapi.responses import Response from fastapi.responses import Response, FileResponse
import setting import setting
from favicon_app.routes import favicon_service from favicon_app.routes import favicon_service
@ -32,6 +32,8 @@ async def get_favicon(
refresh: Optional[str] = Query(None, include_in_schema=False), 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) return await favicon_service.get_favicon_handler(request, bg_tasks, url, refresh)

View File

@ -5,6 +5,7 @@ import os
from fastapi import FastAPI, Request from fastapi import FastAPI, Request
from fastapi.responses import Response from fastapi.responses import Response
from fastapi.staticfiles import StaticFiles
import setting import setting
from favicon_app.routes import favicon_router from favicon_app.routes import favicon_router
@ -23,6 +24,7 @@ referer_log_file = setting.referer_log_file
# fastapi # fastapi
app = FastAPI(title="Favicon API", description="获取网站favicon图标", version="3.0") app = FastAPI(title="Favicon API", description="获取网站favicon图标", version="3.0")
app.mount("/static", StaticFiles(directory="static"), name="static")
app.include_router(favicon_router) app.include_router(favicon_router)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

View 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

File diff suppressed because one or more lines are too long

View 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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
templates/index.html Normal file
View 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>