public async Task <DplayerWebResult> Get([FromQuery] BiliBiliQuery query) { HttpContext.Request.Headers["Accept"] = "application/json"; var result = await Bilibili.GetDanmuAsync(query); return(new DplayerWebResult(result.ToDanmuDataBases().ToArray())); }
/// <summary> /// 获取B站弹幕 /// </summary> /// <param name="query"></param> /// <returns></returns> public async Task <DanmuDataBiliBili> GetDanmuAsync(BiliBiliQuery query) { query = await CheckCid(query); return(query.Cid == 0 ? new DanmuDataBiliBili() : query.Date.Length == 0 || !_canGetHistory ? new DanmuDataBiliBili(await GetDanmuRawByCidAsync(query.Cid)) : await GetDanmuAsync(query.Cid, query.Date)); }
/// <summary> /// 获取B站弹幕 /// </summary> /// <param name="query"></param> /// <returns></returns> public async Task <BaseDanmuData[]> GetDanmuAsync(BiliBiliQuery query) { query = await CheckCid(query); return(await _caching.GetAsync($"{nameof(GetDanmuAsync)}{query.Cid}", async() => query.Cid == 0 ?null : _canGetHistory && query.Date.Length != 0 ?await GetDanmuAsync(query.Cid, query.Date) : new BiliBiliDanmuData(await GetDanmuRawAsync( $"/x/v1/dm/list.so?oid={query.Cid}")).ToBaseDanmuDatas().ToArray(), TimeSpan.FromHours(_setting.DanmuCacheTime))); }
/// <summary> /// 获取B站弹幕 /// </summary> /// <param name="query"></param> /// <returns></returns> public async Task <DanmuDataBiliBili> GetDanmuAsync(BiliBiliQuery query) { query = await CheckCid(query); return(await _cache.GetOrCreateCacheAsync($"{nameof(GetDanmuAsync)}{query.Cid}", TimeSpan.FromHours(_setting.DanmuCacheTime), TimeSpan.FromHours(_setting.DanmuCacheTime * 4), async() => query.Cid == 0 ?new DanmuDataBiliBili() : _canGetHistory && query.Date.Length != 0 ?await GetDanmuAsync(query.Cid, query.Date) : new DanmuDataBiliBili(await GetDanmuRawAsync( $"https://api.bilibili.com/x/v1/dm/list.so?oid={query.Cid}")))); }
public async Task <dynamic> Get([FromQuery] BiliBiliQuery query, string format) { var danmu = await Bilibili.GetDanmuAsync(query); if (!string.IsNullOrEmpty(format) && format.Equals("json")) { return(new WebResult <IEnumerable <ArtPlayerDanmuData> >(danmu .Select(s => (ArtPlayerDanmuData)s))); } if (string.IsNullOrEmpty(format)) { HttpContext.Request.Headers["Accept"] = "application/xml"; } return(danmu); }
/// <summary> /// 检查Cid /// </summary> /// <param name="query"></param> /// <returns></returns> public async Task <BiliBiliQuery> CheckCid(BiliBiliQuery query) { if (query.Cid == 0) { query.P = query.P == 0 ? 1 : query.P; if (query.Aid != 0) { query.Cid = await GetCidAsync(query.Aid, query.P); } else if (!string.IsNullOrEmpty(query.Bvid)) { query.Cid = await GetCidAsync(query.Bvid, query.P); } } return(query); }
public async Task <dynamic> Get([FromQuery] BiliBiliQuery query, string format) { if (query.Date.Length == 0 && !(!string.IsNullOrEmpty(format) && format.Equals("json"))) { HttpContext.Response.ContentType = "application/xml; charset=utf-8"; return(await Bilibili.GetDanmuRawByQueryAsync(query)); } var danmu = await Bilibili.GetDanmuAsync(query); if (!string.IsNullOrEmpty(format) && format.Equals("json")) { return(new WebResult <IEnumerable <BaseDanmuData> >(danmu.ToDanmuDataBases())); } if (string.IsNullOrEmpty(format)) { HttpContext.Request.Headers["Accept"] = "application/xml"; } return(danmu); }
/// <summary> /// 通过Query获取弹幕 /// </summary> /// <param name="query"></param> /// <returns></returns> public async Task <Stream> GetDanmuRawByQueryAsync(BiliBiliQuery query) { query = await CheckCid(query); return(await GetDanmuRawByCidAsync(query.Cid)); }