diff --git a/api/router.go b/api/router.go index f8a791e..015b9d2 100644 --- a/api/router.go +++ b/api/router.go @@ -22,16 +22,20 @@ func setupRouter() { router.GET("/clash/proxies", func(c *gin.Context) { proxyTypes := c.DefaultQuery("type", "") text := "" - if proxyTypes == "all" || proxyTypes == "" { + if proxyTypes == "" { text = cache.GetString("clashproxies") if text == "" { - proxies := cache.GetProxies() + proxies := cache.GetProxies("proxies") clash := provider.Clash{Proxies: proxies} text = clash.Provide() cache.SetString("clashproxies", text) } + } else if proxyTypes == "all" { + proxies := cache.GetProxies("allproxies") + clash := provider.Clash{Proxies: proxies, Types: proxyTypes} + text = clash.Provide() } else { - proxies := cache.GetProxies() + proxies := cache.GetProxies("proxies") clash := provider.Clash{Proxies: proxies, Types: proxyTypes} text = clash.Provide() } @@ -40,7 +44,7 @@ func setupRouter() { router.GET("/surge/proxies", func(c *gin.Context) { text := cache.GetString("surgeproxies") if text == "" { - proxies := cache.GetProxies() + proxies := cache.GetProxies("proxies") surge := provider.Surge{Proxies: proxies} text = surge.Provide() cache.SetString("surgeproxies", text) diff --git a/app/cache/cache.go b/app/cache/cache.go index 27beba2..8b49289 100644 --- a/app/cache/cache.go +++ b/app/cache/cache.go @@ -10,8 +10,8 @@ import ( var c = cache.New(cache.NoExpiration, 10*time.Minute) -func GetProxies() proxy.ProxyList { - result, found := c.Get("proxies") +func GetProxies(key string) proxy.ProxyList { + result, found := c.Get(key) if found { log.Println(len(result.(proxy.ProxyList))) return result.(proxy.ProxyList) @@ -20,8 +20,8 @@ func GetProxies() proxy.ProxyList { return nil } -func SetProxies(proxies proxy.ProxyList) { - c.Set("proxies", proxies, cache.NoExpiration) +func SetProxies(key string, proxies proxy.ProxyList) { + c.Set(key, proxies, cache.NoExpiration) } func SetString(key, value string) { diff --git a/app/task.go b/app/task.go index b63ae53..dba91f4 100644 --- a/app/task.go +++ b/app/task.go @@ -26,7 +26,7 @@ func CrawlGo() { wg.Add(1) go g.Get2Chan(pc, wg) } - proxies := cache.GetProxies() + proxies := cache.GetProxies("proxies") go func() { wg.Wait() close(pc) @@ -36,15 +36,20 @@ func CrawlGo() { proxies = append(proxies, node) } } + // 节点去重 proxies = proxies.Deduplication() log.Println("CrawlGo node count:", len(proxies)) + proxies.NameAddCounrty().Sort().NameAddIndex() + cache.SetProxies("allproxies", proxies) + + // 可用性检测 proxies = proxy.CleanProxies(provider.Clash{Proxies: proxies}.CleanProxies()) log.Println("CrawlGo clash useable node count:", len(proxies)) // 排序和重命名 proxies.NameAddCounrty().Sort().NameAddIndex() + cache.SetProxies("proxies", proxies) - cache.SetProxies(proxies) cache.SetString("clashproxies", provider.Clash{Proxies: proxies}.Provide()) cache.SetString("surgeproxies", provider.Surge{Proxies: proxies}.Provide()) }