Skip to content

Rainbow-SPY/UAPI-SDK-csharp

Repository files navigation

UAPI C# SDK 社区版

介绍

一个深度集成 UApi 的C# SDK, 由社区制作, 旨在为了更好的体验而诞生.

贡献者:

License / 许可证

Copyright (©) AxT-Team & UApi, Developer: Rainbow-SPY. All content is protected by copyright.

This project is licensed under AGPL-3.0 + Attribution + Non-Commercial terms.

  • You must:
    • Keep original author attribution and repository link.
    • Open-source any modified versions under AGPL-3.0.
  • You cannot:
    • Use this code (or derivatives) for commercial purposes.
  • See LICENSE for full terms.

版权所有 (©) AxT-Team & UApi,开发者:Rainbow-SPY,所有内容均受版权保护。

本项目采用 AGPL-3.0 + 署名 + 非商业附加条款 许可协议。

  • 您必须
    • 保留原始作者署名及仓库链接。
    • 任何修改后的版本必须以 AGPL-3.0 协议开源。
  • 您不得
    • 将此代码(或衍生作品)用于商业用途。
  • 完整条款参见 LICENSE

目录

  1. 社交类请求
    1. bilibili 相关请求
      1. 请求bilibili热榜
      2. 获取指定UP的所有稿件信息
      3. 获取指定UP的直播间信息
      4. 获取指定用户的公开账户数据
      5. 获取指定视频的详细数据
      6. 获取指定视频的评论区数据
    2. QQ 相关请求
      1. 获取QQ群相关信息
      2. 获取QQ用户相关信息
  2. 游戏功能性请求
    1. 获取Epic Games每日免费游戏
    2. 获取 Minecraft 玩家历史昵称
    3. 获取 Minecraft 服务器状态
    4. 获取 Minecraft 玩家信息
    5. 获取 Steam 个人用户的公开数据
  3. 网络类请求
    1. 获取本机的公网IP地址
  4. 杂项
    1. 热榜请求
      1. 请求bilibili热榜
      2. 请求网易云音乐热榜
    2. 天气请求
    3. 获取全球时区时间
    4. 获取手机号码的归属地信息
    5. 获取一组随机数字
    6. 获取程序员历史上的今天的事件
    7. 转换 Unix 时间戳
    8. 通过快递单号识别快递公司
    9. 查询农历时间
    10. 获取支持的快递公司列表
    11. 查询快递物流信息
    12. 计算两个日期之间的差值

社交类请求

bilibili 相关请求

请求 bilibili 热门排行榜

转到 热榜请求 - 请求 bilibili热榜


获取指定UP的所有稿件信息

var request = await UAPI.bilibili.GetArchives(string mid,
            ArchivesSearchType orderby = ArchivesSearchType.Pubdate,
            string keywords = "",
            int ps = 20, int pn = 1)
  • 参数选项:
    • mid: 指定要查询的用户UID(mid)

    • orderby: 指定以何种查询方式, 默认为 Pubdate. 可供使用的枚举有:

      枚举值 注释
      Pubdate 以最新发布顺序排列
      Views 以播放量排列
    • keywords: 指定一个关键字作为查找内容并返回与之相关的内容, 默认为空.

    • ps: 指定每页的稿件数量, 默认 20.

    • pn: 指定一个页码并返回指定页码的稿件信息, 默认为 1.

  • 返回类型: Task <UAPI.bilibili.ArchiveType>
  • 返回值: ArchiveType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.bilibili.BilibiliServiceError: bilibili API 上游服务异常, 这可能是他们的服务暂时中断.
  • 属性列表: 详见 bilibili.GetArchives.md

获取指定UP的直播间信息

var request = await UAPI.bilibili.GetLiveRoomStatus.AsID(string mid);
            = await UAPI.bilibili.GetLiveRoomStatus.AsLiveroomID(string room_id);
  • 参数选项:
    • mid: 指定要查询的用户UID(mid)
    • room_id: 指定要查询的直播间ID, 和上述参数 mid 选其一即可.
  • 返回类型: Task <UAPI.bilibili.LiveRoomType>
  • 返回值: LiveRoomType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.bilibili.BilibiliServiceError: bilibili API 上游服务异常, 这可能是他们的服务暂时中断.

获取指定用户的账户数据

var request = await UAPI.bilibili.GetUserData(string mid);
  • 参数选项:
    • mid: 指定要查询的用户UID(mid)
  • 返回类型: Task <UAPI.bilibili.UserType>
  • 返回值: UserType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.bilibili.BilibiliServiceError: bilibili API 上游服务异常, 这可能是他们的服务暂时中断.

获取指定视频的详细数据

var request = await UAPI.bilibili.GetVideoData(string video_id, BiliVideoIDType IDType)
  • 参数选项:
    • mid: 指定要查询的用户UID(mid)

    • IDType: 指定查询视频的ID格式, 可供使用的枚举如下:

      枚举值 注释
      AID 视频的AV号 (aid)
      BVID 视频的BV号 (bvid)
  • 返回类型: Task <UAPI.bilibili.VideoType>
  • 返回值: VideoType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.bilibili.BilibiliServiceError: bilibili API 上游服务异常, 这可能是他们的服务暂时中断.

获取指定视频的评论区数据

var request = await UAPI.bilibili.GetRepliesList(string oid, string sort = "0", int ps = 20, int pn = 1)
  • 参数选项:
    • oid: 指定要查询的目标评论区的ID。对于视频,这通常就是它的 aid/bvid.
    • sort: 指定查询视频的排序方式。支持 0/time(按时间)1/like(按点赞)2/reply(按回复数)3/hot/hottest/最热(按最热)。默认为0/time
    • ps: 每页获取的评论数量,范围是120。默认为 20
    • pn: 要获取的页码,从1开始。默认为 1
  • 返回类型: Task <UAPI.bilibili.RepliesListType>
  • 返回值: RepliesListType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.bilibili.BilibiliServiceError: bilibili API 上游服务异常, 这可能是他们的服务暂时中断.

QQ 相关请求

获取QQ群相关信息

var request = await UAPI.QQ.GetGroupData(string group_id);
  • 参数选项:
    • group_id: 指定要查询的群ID
  • 返回类型: Task <UAPI.QQ.GroupType>
  • 返回值: GroupType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.QQ.QQServiceError(): QQ 上游服务异常, 这可能是他们的服务暂时中断.

获取QQ用户相关信息

var request = await UAPI.QQ.GetUserData(string qq);
  • 参数选项:
    • qq: 指定要查询的用户QQ号
  • 返回类型: Task <UAPI.QQ.UserType>
  • 返回值: UserType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.QQ.QQServiceError(): QQ 上游服务异常, 这可能是他们的服务暂时中断.

获取 Github 仓库信息

var request = await UAPI.github.GetReposData(string owner_and_repo)
  • 参数选项:
    • owner_and_repo: 指定要查询的用户+仓库, 例: "torvalds/linux"
  • 返回类型: Task <UAPI.github.ReposType>
  • 返回值: ReposType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.github.GithubAPIServiceError(): Github 上游服务异常, 这可能是他们的服务暂时中断.

游戏功能性请求

获取Epic Games每日免费游戏

var request = await UAPI.EpicGames.GetDataJson();
  • 返回类型: Task <UAPI.EpicGames.EpicType>
  • 返回值: EpicType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.EpicGames.EpicGamesServerError: Epic Games 上游 API 服务异常

Note

所有 Minecraft 相关被请求查询的用户必须均为正版, 否则没有官方数据会返回 404StatusCode .

获取 Minecraft 玩家历史昵称

var request = await UAPI.minecraft.GetHistoryName(string _param, SearchType searchType);
  • 参数选项:
    • _param: 指定要查询的用户UUID或昵称

    • searchType: 指定查询的查找方式, 可供使用的枚举如下:

      枚举值 注释
      UUID 以UUID查找
      Name 以昵称查找
  • 返回类型: Task <UAPI.bilibili.HistoryType>
  • 返回值: HistoryType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.minecraft.MojangAPIServiceError: Mojang API 上游服务异常, 这可能是他们的服务暂时中断.

获取 Minecraft 服务器状态

var request = await UAPI.minecraft.GetServerStatus(string server, int port = 25565);
  • 参数选项:
    • server: 指定要查询的服务器地址
    • port: 指定查询的服务器的端口, 默认为 25565.
  • 返回类型: Task <UAPI.minecraft.ServerType>
  • 返回值: ServerType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.minecraft.MojangAPIServiceError: Mojang API 上游服务异常, 这可能是他们的服务暂时中断.

获取 Minecraft 玩家信息

var request = await UAPI.minecraft.GetUserData(string username)
  • 参数选项:
    • username: 指定要查询的用户名
  • 返回类型: Task <UAPI.minectaft.UserType>
  • 返回值: UserType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.minecraft.MojangAPIServiceError: Mojang API 上游服务异常, 这可能是他们的服务暂时中断.

获取 Steam 个人用户的公开数据

var request = await UAPI.Steam.GetUserData(string SteamID, string key);
  • 参数选项:

    • SteamID: 指定要查询的用户ID, 有多重枚举类型的ID可供选择, 如下:

      ID类型 正则表达式格式 示例
      STEAM_ID Regex: ^STEAM_[0-5]:[01]:\d+$ STEAM_1:1:728234856
      STEAM_ID3 Regex: ^\[U:1:([0-9]+)\]$ [U:1:1456469713]
      STEAM_ID32 Regex: ^[0-9]{1,16}$ 1456469713
      STEAM_ID64 Regex: ^7656[0-9]*$ 76561199416735441
      Link Regex: https://steamcommunity.com/* https://steamcommunity.com/id/Rainbow-SPY
    • key: Steam Web API 所需要的 Key , 这是一个可选参数,如果提供,它将覆盖API供应商提供的全局Key。这为你提供了更大的灵活性,但请务必注意Key的保密,不要在前端暴露。

  • 返回类型: Task <UAPI.Steam.SteamType>

  • 返回值: SteamType 对象

  • 异常:

    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.Steam.SteamServiceError: Steam Web API 上游服务异常, 这可能是他们的服务暂时中断.

网络类请求

获取本机的公网IP地址

var request = await UAPI.Network.GetMyIP(bool commercial = false);
  • 参数选项:
    • commercial: 指定是否使用商业级的数据源, 默认为 false
  • 返回类型: Task <UAPI.Network.IPType>
  • 返回值: IPType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • HttpRequestException: 引发的异常的基类 HttpClientHttpMessageHandler 类 , 使用此异常通常是这个接口没有上游服务, 多数异常来源于服务器和连接过程.

杂项

热榜请求

请求 Bilibili 热榜

var request = await UAPI.hotboard.GetBilibiliHotboard();
  • 返回类型: Task <UAPI.hotboard.bilibiliType>
  • 返回值: bilibiliType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • Hotboard.HotboardUpstreamServiceError(): 上游服务异常, 这可能是他们的服务暂时中断.

请求网易云音乐热榜

var request = await UAPI.hotboard.GetNeteaseMusicHotboard();
  • 返回类型: Task <UAPI.hotboard.NeteaseType>
  • 返回值: NeteaseType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • Hotboard.HotboardUpstreamServiceError: 上游服务异常, 这可能是他们的服务暂时中断.

天气请求

var request = await UAPI.Weather.GetWeatherDataJson(string city,
                    bool extended = false, bool indices = false,
                    bool forecast = false, bool hourly = false,
                    bool minutely = false);
    		= await UAPI.Weather.GetWeatherDataJson(int adcode, 
                    bool extended = false, bool indices = false, 
                    bool forecast = false, bool hourly = false,
                    bool minutely = false);
  • 参数选项:
    • city: 指定要查询天气的城市
    • adcode: 指定要查询天气的城市的高德地图的6位数字城市编码
    • extended: 是否返回扩展气象字段(体感温度、能见度、气压、紫外线指数、空气质量、降水量、云量), 默认为 false
    • indices: 是否返回生活指数(穿衣、紫外线、洗车、晾晒、空调、感冒、运动、舒适度), 默认为 false
    • forecast: 是否返回预报数据(当日最高/最低气温及未来3天天气预报), 默认为 false
    • hourly: 是否返回逐小时预报 (24小时),含温度、天气、风向风速、湿度、降水概率等
    • minutely:是否返回分钟级降水预报 (仅国内城市),每5分钟一个数据点,共24个
  • 返回类型: Task <UAPI.Weather.WeatherType>
  • 返回值: WeatherType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.Weather.WeatherServiceError(): 天气供应商的上游服务不可用, 这可能是他们的服务暂时中断

获取全球指定时区的当地时间

var request = await UAPI.misc.GetWorldTime(string region);
  • 参数选项:

    • region: 指定要查询天气的城市, 格式为 七大洲之一/地区直接输入地区

      例: Asia/Shanghai, America/New_York, Tokyo

  • 返回类型: Task <UAPI.misc.WorldTimeType>

  • 返回值: WorldTimeType 对象

  • 异常:

    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.General.UAPIUnknowException: 未知的异常

因为这个接口没有什么所谓的上游, 因此也不会报出其他异常.


获取手机号码的归属地信息

var request = await UAPI.misc.GetPhoneInfo(string phoneNumber);
  • 参数选项:
    • phoneNumber: 指定要查询的中国大陆的11位手机号码
  • 返回类型: Task <UAPI.misc.PhoneInfoType>
  • 返回值: PhoneInfoType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.General.UAPIUnknowException: 未知的异常

获取一组随机数字

var request = await UAPI.misc.GetRandomNumberList(int min = 0, int max = 0, int count = 0,bool allow_repeat = false, bool allow_decimal = false, int decimal_places = 0);
  • 参数选项:
    • min: 生成随机数的最小值(包含)。
    • max: 生成随机数的最大值(包含)。
    • count: 需要生成的随机数的数量。
    • allow_repeat: 是否允许生成的多个数字中出现重复值。
    • allow_decimal: 是否生成小(浮点)数。如果为 false,则只生成整数。
    • decimal_places: 如果 allow_decimal=true,这里可以指定小数的位数。
  • 返回类型: Task <UAPI.misc.RandomNumberType>
  • 返回值: RandomNumberType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.General.UAPIUnknowException(): 未知异常

获取程序员历史上的今天的事件

var request = await UAPI.misc.GetProgrammerHistoryToday();
  • 返回类型: Task <UAPI.misc.HistoryTodayType>
  • 返回值: HistoryTodayType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.General.UAPIUnknowException: 未知的异常

转换 Unix 时间戳

var request = await UAPI.misc.CovertTimestamp(string ts);
  • 参数选项:
    • ts : Unix 时间戳, 支持10位(秒)或13位(毫秒)。
  • 返回类型: Task <UAPI.misc.TimestampType>
  • 返回值: TimestampType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.General.UAPIUnknowException: 未知的异常

通过快递单号识别快递公司

var request = await UAPI.misc.DetectTrackingCarrier(string tracking_number);
  • 参数选项:
    • tracking_number: 快递单号
  • 返回类型: Task <UAPI.misc.DetectedCarrierType>
  • 返回值: DetectedCarrierType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.General.UAPIUnknowException: 未知的异常

查询农历时间

var request = await UAPI.misc.GetLunarTime(string ts = "", string timezone = "Asia/Shanghai")
  • 参数选项:
    • ts: Unix 时间戳,支持 10 位秒级或 13 位毫秒级。默认以当前时间。
    • timezone: 时区名称。支持 IANA 时区(如 Asia/Shanghai)和别名(ShanghaiBeijing)。默认 Asia/Shanghai
  • 返回类型: Task <UAPI.misc.LunarTimeType>
  • 返回值: LunarTimeType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.General.UAPIUnknowException: 未知的异常

获取支持的快递公司列表

var request = await UAPI.misc.GetTrackingCarriers();
  • 返回类型: Task <UAPI.misc.CarriersType>
  • 返回值: CarriersType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.General.UAPIUnknowException: 未知的异常

查询快递物流信息

var request = await UAPI.misc.GetTrackingInfo(string tracking_number, string carrier_code = "",string phone = "");
  • 参数列表
    • tracking_number: 快递单号,通常是一串10-20位的数字或字母数字组合。
    • carrier_code: 快递公司编码(可选)。不填写时系统会自动识别,填写后可加快查询速度。
    • phone: 收件人手机尾号,4位数字(可选)。部分快递公司需要验证手机尾号才能查询详细物流信息。
  • 返回类型: Task <UAPI.misc.TrackingInfoType>
  • 返回值: TrackingInfoType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.General.UAPIUnknowException: 未知的异常

计算两个日期之间的差值

var request = await UAPI.misc.PostDateDiff(string start_date, string end_date,string format = "YYYY-MM-DD");
  • 参数列表
    • start_date: 开始时间/日期
    • end_date: 结束时间/日期
    • format: 时间格式, 默认为 YYYY-MM-DD
  • 返回类型: Task <UAPI.misc.DateDiffType>
  • 返回值: DateDiffType 对象
  • 异常:
    • IException.General.UAPIServerDown: 请求源服务器发生错误
    • UnauthorizedAccessException: 未经授权的请求操作
    • IException.General.UAPIUnknowException: 未知的异常

开发环境

  • IDE

    • IntelliJ JetBrains Rider

      • 系统要求
        • Windows 10 版本1809 或更高版本
        • 64 位操作系统, 基于 x64 的处理器
        • .NET Framework 4.7.2 或更高版本
        • 在 Windows 上不得禁用强名称跳过功能
    • Visual Studio 2026

      • 系统要求

        • Windows 11 版本 21H2 或更高版本:家庭版、专业版、专业教育版、专业工作站版、企业版和教育版
        • Windows 10 版本 1909 或更高版本:家庭版、专业版、教育版和企业版。
        • 64 位操作系统, 基于 x64 的处理器
      • 工作负荷

        • 桌面应用和移动应用
          • .NET 桌面开发
  • 编译语言

    • C# .NET Framework 4.7.2
  • 依赖项

    • 第三方程序集

      • AntdUI

        用于依赖项 Rox.Runtimes 的 Reporter 窗体渲染, 防止出现未知的异常

      • Newtonsoft.Json

        用于 Json 反序列化解析

      • Rox.Runtimes

        用于输出日志、引用字符串常量等

      • Rox.Text

        用于压缩 Json .后续会集成移除

    • 来自 Microsoft 的 NuGet 包扩展

      • System.Buffers

      • System.Diagnostics.DiagnosticSource

      • System.Memory

      • System.Numerics.Vectors

      • System.Runtime.CompilerServices.Unsafe

      • System.Net.Http


Copyright (C) Rainbow-SPY & AxT-Team & UAPI 2019-2026 , All rights reserved.

About

深度集成 UApi 的社区版 C# SDK, 集成了大多数热门常用接口

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Contributors

Languages