{"id":23240491,"url":"https://github.com/jddkcn/kcnlanzoudirectlink","last_synced_at":"2025-08-20T01:32:22.949Z","repository":{"id":262936731,"uuid":"888842528","full_name":"JDDKCN/KCNLanzouDirectLink","owner":"JDDKCN","description":"用于解析蓝奏云直链及文件信息的C#原生实现类库。","archived":false,"fork":false,"pushed_at":"2025-04-03T13:13:22.000Z","size":62,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-17T17:24:28.441Z","etag":null,"topics":["direct","lanzou","net","nuget-package","web"],"latest_commit_sha":null,"homepage":"https://www.nuget.org/packages/KCNLanzouDirectLink/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JDDKCN.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-15T05:33:02.000Z","updated_at":"2025-04-03T13:02:27.000Z","dependencies_parsed_at":"2025-04-03T14:21:43.060Z","dependency_job_id":"bbeb6e8f-3273-4ce8-a07b-7c627214ba6d","html_url":"https://github.com/JDDKCN/KCNLanzouDirectLink","commit_stats":null,"previous_names":["jddkcn/kcnlanzoudirectlink"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/JDDKCN/KCNLanzouDirectLink","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDDKCN%2FKCNLanzouDirectLink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDDKCN%2FKCNLanzouDirectLink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDDKCN%2FKCNLanzouDirectLink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDDKCN%2FKCNLanzouDirectLink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JDDKCN","download_url":"https://codeload.github.com/JDDKCN/KCNLanzouDirectLink/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JDDKCN%2FKCNLanzouDirectLink/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271252419,"owners_count":24726911,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-19T02:00:09.176Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["direct","lanzou","net","nuget-package","web"],"created_at":"2024-12-19T05:12:26.000Z","updated_at":"2025-08-20T01:32:22.944Z","avatar_url":"https://github.com/JDDKCN.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# KCNLanzouDirectLink\n\n[![NuGet](https://img.shields.io/nuget/v/KCNLanzouDirectLink.svg)](https://www.nuget.org/packages/KCNLanzouDirectLink/)\n[![NuGet Downloads](https://img.shields.io/nuget/dt/KCNLanzouDirectLink.svg)](https://www.nuget.org/packages/KCNLanzouDirectLink/)\n\n`KCNLanzouDirectLink` 是一个用于解析蓝奏云分享链接并获取直链的 C# 原生实现类库。它提供了简单的 API 用于获取蓝奏云分享链接的直链，无需登录或第三方工具。\n\n## 项目特点\n\n- 支持解析蓝奏云分享直链 \u0026 加密分享直链。\n- 支持解析分享 \u0026 加密分享链接的文件信息。\n- 支持批量解析。\n- 不使用curl，原生实现所有功能。\n- 提供标准错误处理模式。\n- 完整的实现 Demo，快速上手。\n\n## 支持\n\n本项目支持以下 .NET 版本：\n\n- `.NET 6`、`.NET 7`、`.NET 8`、以及更高版本的 .NET。\n\n\n## 安装\n\n你可以通过 NuGet 包管理器安装 `KCNLanzouDirectLink` 库：\n\n```bash\nInstall-Package KCNLanzouDirectLink\n```\n\n或者通过 .NET CLI：\n\n```bash\ndotnet add package KCNLanzouDirectLink\n```\n\n## 使用示例\n\n获取普通链接的直链\n\n```csharp\nusing KCNLanzouDirectLink;\n\nclass Program\n{\n    static async Task Main(string[] args)\n    {\n        string shareUrl = \"https://syxz.lanzoue.com/qwertyuiopas\";\n        var (state, link) = await KCNLanzouLinkHelper.GetDirectLinkAsync(shareUrl);\n\n        if (state == DownloadState.Success)\n        {\n            Console.WriteLine($\"直链地址: {link}\");\n        }\n        else\n        {\n            Console.WriteLine($\"获取直链失败，状态: {state}\");\n        }\n    }\n}\n```\n\n获取加密链接的直链\n\n```csharp\nusing KCNLanzouDirectLink;\n\nclass Program\n{\n    static async Task Main(string[] args)\n    {\n        string shareUrl = \"https://syxz.lanzoue.com/qwertyuiopas\";\n        string key = \"your_encryption_key\";  \n\n        // 10 代表错误后重试次数。加密链接获取直链不稳定，推荐设置为10次。\n        var (state, linkEncryption) = await KCNLanzouLinkHelper.GetDirectLinkAsync(shareUrl, key, 10);\n\n        if (state == DownloadState.Success)\n        {\n            Console.WriteLine($\"直链地址: {linkEncryption}\");\n        }\n        else\n        {\n            Console.WriteLine($\"获取直链失败，状态: {state}\");\n        }\n    }\n}\n```\n\n批量获取分享链接直链(支持普通/加密链接混合获取)\n\n```csharp\nusing KCNLanzouDirectLink;\n\nclass Program\n{\n    static async Task Main(string[] args)\n    {\n        var urls = new List\u003cTuple\u003cstring, string\u003e\u003e\n        {\n           Tuple.Create(\"https://syxz.lanzoue.com/qwertyuiopas\", string.Empty),\n           Tuple.Create(\"https://syxz.lanzouw.com/abcdefghijkl\", \"your_encryption_key\")\n        };\n\n        // 该方法泛型传参允许实现 string 及 Tuple\u003cstring, string\u003e。\n        var results = await KCNLanzouLinkHelper.GetDirectLinksAsync(urls);\n\n        foreach (var (url, state, link) in results)\n        {\n            if (state == DownloadState.Success)\n            {\n                Console.WriteLine($\"{url} 解析直链地址: {link}\");\n            }\n            else\n            {\n                Console.WriteLine($\"{url} 获取直链失败，状态: {state}\");\n            }\n        }\n    }\n}\n```\n\n获取链接的文件信息\n\n```csharp\nusing KCNLanzouDirectLink;\n\nclass Program\n{\n    static async Task Main(string[] args)\n    {\n        string shareUrl = \"https://syxz.lanzoue.com/qwertyuiopas\";\n        string key = \"your_encryption_key\";  \n\n        // true表示强制指定分享链接为加密链接类型。具体信息请查看方法重载。\n        var (state, fileInfo) = await KCNLanzouLinkHelper.GetFileInfoAsync(true, shareUrl, key); \n\n        if (state == DownloadState.Success)\n        {\n            string message = $\"文件信息解析成功：\\n\" +\n                $\"File info retrieved successfully:\\n\" +\n                $\"文件名称\\\\File Name: {fileInfo.FileName}\\n\" +\n                $\"文件大小\\\\File Size: {fileInfo.Size}\\n\" +\n                $\"上传时间\\\\Upload Time: {fileInfo.UploadTime}\\n\" +\n                $\"上传者\\\\Uploader: {fileInfo.Uploader}\\n\" +\n                $\"运行平台\\\\Platform: {fileInfo.Platform}\\n\" +\n                $\"文件描述\\\\Description: {fileInfo.Description}\";\n\n            Console.WriteLine($\"直链地址: {message}\");\n        }\n        else\n        {\n            Console.WriteLine($\"获取文件信息失败，状态: {state}\");\n        }\n    }\n}\n```\n\n枚举 `DownloadState` 说明\n\n```csharp\npublic enum DownloadState\n{\n    /// \u003csummary\u003e\n    /// 操作成功完成。\n    /// \u003c/summary\u003e\n    Success,\n\n    /// \u003csummary\u003e\n    /// 未提供有效的分享链接。\n    /// \u003c/summary\u003e\n    UrlNotProvided,\n\n    /// \u003csummary\u003e\n    /// 无法获取网页内容。分享链接无效？\n    /// \u003c/summary\u003e\n    HtmlContentNotFound,\n\n    /// \u003csummary\u003e\n    /// 无法解析加密信息。分享链接无效或密钥错误？\n    /// \u003c/summary\u003e\n    PostsignNotFound,\n\n    /// \u003csummary\u003e\n    /// 无法解析中间链接。\n    /// \u003c/summary\u003e\n    IntermediateUrlNotFound,\n\n    /// \u003csummary\u003e\n    /// 无法获取最终的直链地址。\n    /// \u003c/summary\u003e\n    FinalUrlNotFound,\n\n    /// \u003csummary\u003e\n    /// 未知错误，操作未成功完成。\n    /// \u003c/summary\u003e\n    Error\n}\n```\n\n文件信息获取结构类 `LanzouFileInfo` 说明\n\n```csharp\n    public class LanzouFileInfo\n    {\n        /// \u003csummary\u003e\n        /// 文件名称\n        /// \u003c/summary\u003e\n        public string? FileName { get; set; }\n        /// \u003csummary\u003e\n        /// 上传时间\n        /// \u003c/summary\u003e\n        public string? UploadTime { get; set; }\n        /// \u003csummary\u003e\n        /// 文件大小\n        /// \u003c/summary\u003e\n        public string? Size { get; set; }\n        /// \u003csummary\u003e\n        /// 上传者\n        /// \u003c/summary\u003e\n        public string? Uploader { get; set; }\n        /// \u003csummary\u003e\n        /// 运行平台\n        /// \u003c/summary\u003e\n        public string? Platform { get; set; }\n        /// \u003csummary\u003e\n        /// 文件描述\n        /// \u003c/summary\u003e\n        public string? Description { get; set; }\n    }\n```\n\n## Demo\n\n请前往Github存储库查看类库Demo：[https://github.com/JDDKCN/KCNLanzouDirectLink](https://github.com/JDDKCN/KCNLanzouDirectLink)\n\n## 许可协议\n\n该项目使用 [A-GPLv3](https://opensource.org/licenses/AGPL-3.0) 许可协议。\n\n## 贡献\n\n欢迎提出问题、改进建议或直接提交 Pull Request！\n\n## 联系方式\n\n- [前往我的Github](https://github.com/JDDKCN)\n- [前往我的B站首页](https://space.bilibili.com/475547854/)\n- [前往我的Twitter账号](https://twitter.com/2233KCN03)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjddkcn%2Fkcnlanzoudirectlink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjddkcn%2Fkcnlanzoudirectlink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjddkcn%2Fkcnlanzoudirectlink/lists"}