feat: 兼容nuget

This commit is contained in:
橙子
2024-09-18 22:17:45 +08:00
parent 8c7afa2e7a
commit ae163167b6

View File

@@ -8,20 +8,18 @@ namespace Yi.Abp.Tool.Domain
public class NugetCrawlerManager : ITransientDependency public class NugetCrawlerManager : ITransientDependency
{ {
private const string NugetVersionUrl = "https://www.nuget.org/packages/Yi.Abp.Tool#versions-body-tab"; private const string NugetVersionUrl = "https://www.nuget.org/packages/Yi.Abp.Tool#versions-body-tab";
public NugetCrawlerManager(IDistributedCache<NugetResult> cache) public NugetCrawlerManager(IDistributedCache<NugetResult> cache)
{ {
//缓存设置1分钟获取一次结果 //缓存设置1分钟获取一次结果
this.NugetResult = cache.GetOrAdd("NugetResult", () => this.NugetResult = cache.GetOrAdd("NugetResult", () => { return InitData(); }, () =>
{ {
return InitData(); var options = new DistributedCacheEntryOptions();
}, () => options.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(1);
{ return options;
var options = new DistributedCacheEntryOptions(); })!;
options.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(1);
return options;
})!;
} }
private HtmlDocument HtmlDoc { get; set; } private HtmlDocument HtmlDoc { get; set; }
private NugetResult NugetResult { get; set; } = new NugetResult(); private NugetResult NugetResult { get; set; } = new NugetResult();
@@ -56,11 +54,12 @@ namespace Yi.Abp.Tool.Domain
foreach (var tr in trDoc) foreach (var tr in trDoc)
{ {
var version = tr.ChildNodes.Where(x => x.Name == "td").First().ChildNodes.Where(x => x.Name == "a").First().GetAttributes("title").First().Value; var version = tr.ChildNodes.Where(x => x.Name == "td").First().ChildNodes.Where(x => x.Name == "a")
.First().GetAttributes("title").First().Value;
versions.Add(version); versions.Add(version);
} }
return versions; return versions;
} }
@@ -70,8 +69,17 @@ namespace Yi.Abp.Tool.Domain
/// <returns></returns> /// <returns></returns>
private long GetDownloadNumber() private long GetDownloadNumber()
{ {
var spanDoc = HtmlDoc.DocumentNode.SelectNodes("//*[@id=\"skippedToContent\"]/section/div/aside/div[1]/div[2]/div[1]/span[2]"); var spanDoc =
HtmlDoc.DocumentNode.SelectNodes(
"//*[@id=\"skippedToContent\"]/section/div/aside/div[1]/div[2]/div[1]/span[2]");
var downLoadNumber = spanDoc.First().InnerText; var downLoadNumber = spanDoc.First().InnerText;
if (downLoadNumber.Contains("K"))
{
downLoadNumber = downLoadNumber.TrimEnd('K');
return (long)Math.Round(decimal.Parse(downLoadNumber) * 1000);
}
return long.Parse(downLoadNumber); return long.Parse(downLoadNumber);
} }
} }
@@ -82,4 +90,4 @@ namespace Yi.Abp.Tool.Domain
public long DownloadNumber { get; set; } public long DownloadNumber { get; set; }
public List<string> Versions { get; set; } public List<string> Versions { get; set; }
} }
} }