Exemplo n.º 1
0
        /// <summary>
        /// 转发扫水结果到客户端
        /// </summary>
        /// <param name="sessionId">发送端</param>
        /// <param name="content">扫水结果</param>
        /// <returns></returns>
        public static MQActionVoidResult CollectCompletedToClient(string sessionId, CollectResult content)
        {
            var session = SessionPool.GetClientsGroup(ClientTypeEnum.Client);

            if (session != null)
            {
                foreach (var item in session)
                {
                    if (item.Key == content.ClientSessionID)
                    {
                        MQRouterSendQueue.PushCollectCompleted(item.Key, content);
                        break;
                    }
                }

                return(new MQActionVoidResult()
                {
                    IsOK = true
                });
            }
            else
            {
                return(new MQActionVoidResult()
                {
                    IsOK = false, ErrorMsg = "未找到出货客户端"
                });
            }
        }
Exemplo n.º 2
0
        // DealerReceive数据处理
        private void HandleKeyData_DealerReceive(string cmdText, string actionJsonResult)
        {
            //if (PublicData.ServerParameter == null || PublicData.ServerParameter.IsEmpty())
            //{
            //    MessageBoxEx.Alert($"服务器参数获取失败,无法处理{cmdText}方法");
            //    return;
            //}


            if (cmdText == "PushCollectCompleted") //扫水结果
            {
                //解析扫水结果
                CollectResult collectResult = JsonUtil.Deserialize <CollectResult>(actionJsonResult);
                CollectResultEvent?.Invoke(collectResult);
            }
            else if (cmdText == "PushAddBetCompleted") //下注结果
            {
                //解析下注结果
                BetContentResult betContentResult = JsonUtil.Deserialize <BetContentResult>(actionJsonResult);
                BetContentEvent?.Invoke(betContentResult);
            }
            else if (cmdText == "PushDeleteBetResult") //退码结果
            {
                //解析下注结果
                DeleteBetContentResult betContentResult = JsonUtil.Deserialize <DeleteBetContentResult>(actionJsonResult);
                DeletedBetContentEvent?.Invoke(betContentResult);
            }
            else
            {
                LogUtil.Error($"未处理的DealerReceive消息:cmd:{cmdText}; json:{actionJsonResult}");
            }
        }
Exemplo n.º 3
0
 private void BetNoOddsDataBind(CollectResult item)
 {
     if (item != null)
     {
         oddsList.Add(new OddsEntity(item.Id, item.Platform.ToString(), (decimal)item.Odds, (decimal)item.MaxBetMoney));
     }
     else
     {
         oddsList.Add(new OddsEntity(1, "公司", 965, 9500));
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// Creates the probe execution with his collect result
        /// </summary>
        /// <param name="probeResult">The probe result.</param>
        /// <param name="probe">The probe.</param>
        /// <param name="session">The session.</param>
        /// <returns></returns>
        private ProbeExecution CreateTheProbeExecution(ProbeResult probeResult, SelectedProbe probe)
        {
            CollectResultFactory collectResultFactory = new CollectResultFactory();

            ProbeExecution executionOfCurrentProbe = collectFactory.CreateAProbeExecution(probeResult, probe.Capability.OvalObject);
            CollectResult  probeExecutionResult    = collectResultFactory.CreateCollectResultForTheProbeExecution(probeResult);

            executionOfCurrentProbe.SystemCharacteristics = probeExecutionResult.SystemCharacteristics;

            return(executionOfCurrentProbe);
        }
Exemplo n.º 5
0
        public void Should_be_possible_to_create_a_collectResult_with_the_error_status_for_the_probeExecution()
        {
            CollectResultFactory factory = new CollectResultFactory();

            ProbeResult probeResult = new ProbeResultFactory().CreateProbeResultForRegostryCollectWithError();

            CollectResult collectResult = factory.CreateCollectResultForTheProbeExecution(probeResult);

            Assert.IsNotNull(collectResult);
            Assert.IsNotNull(collectResult.Date, "the date is null");
            Assert.IsTrue(collectResult.HasErrors(), "the collect result is not complete");
        }
Exemplo n.º 6
0
        private static CollectResult SearchCollect(string id)
        {
            var url    = "http://i.y.qq.com/qzone-music/fcg-bin/fcg_ucc_getcdinfo_byids_cp.fcg?type=1&json=1&utf8=1&onlysong=0&nosign=1&disstid=" + id + "&g_tk=5381&loginUin=0&hostUin=0&format=jsonp&inCharset=GB2312&outCharset=utf-8&notice=0&platform=yqq&jsonpCallback=jsonCallback&needNewCode=0";
            var html   = CommonHelper.GetHtmlContent(url);
            var result = new CollectResult
            {
                ErrorCode   = 200,
                ErrorMsg    = "OK",
                CollectId   = id,
                CollectLink = "http://y.qq.com/#type=taoge&id=" + id,
                Songs       = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取歌单信息失败";
                return(result);
            }
            var json = JObject.Parse(html.Replace("jsonCallback(", "").TrimEnd(')'));

            if (json["cdlist"] == null)
            {
                result.ErrorCode = 404;
                result.ErrorMsg  = "请检查歌单ID是否正确";
                return(result);
            }
            try
            {
                var datas = json["cdlist"].First["songlist"];
                result.Songs        = GetListByJson(datas);
                result.CollectName  = json["cdlist"].First["dissname"].ToString();
                result.CollectLogo  = json["cdlist"].First["logo"].ToString();
                result.CollectMaker = json["cdlist"].First["nick"].ToString();
                result.CollectInfo  = json["cdlist"].First["desc"].ToString();
                var tags = json["cdlist"].First["tags"].Aggregate("", (current, t) => current + (t["name"].ToString() + ";"));
                result.Tags     = tags.Trim(';');
                result.SongSize = json["cdlist"].First["cur_song_num"].Value <int>();
                result.Date     =
                    CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["cdlist"].First["ctime"].ToString()))
                    .ToString("yyyy-MM-dd");
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "解析歌单时发生错误";
                return(result);
            }
        }
Exemplo n.º 7
0
        private static CollectResult SearchCollect(string id)
        {
            var url    = "http://api.songlist.ttpod.com/songlists/" + id;
            var html   = CommonHelper.GetHtmlContent(url);
            var result = new CollectResult
            {
                ErrorCode   = 200,
                ErrorMsg    = "OK",
                CollectId   = id,
                CollectLink = "http://h.dongting.com/yule/app/music_songlist.html?id=" + id,
                Songs       = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取歌单信息失败";
                return(result);
            }
            var json = JObject.Parse(html);

            if (string.IsNullOrEmpty(json["songs"]?.ToString()) || json["songs"].ToString() == "null")
            {
                result.ErrorCode = 404;
                result.ErrorMsg  = "请检查歌单ID是否正确";
                return(result);
            }
            try
            {
                var datas = json["songs"];
                result.Songs        = GetListByJson(datas);
                result.CollectName  = json["title"].ToString();
                result.CollectLogo  = json["image"]["pic"].ToString();
                result.CollectMaker = json["owner"]["nick_name"].ToString();
                result.CollectInfo  = json["desc"].ToString();
                var tags = json["tags"].Aggregate("", (current, t) => current + (t["tag_name"].ToString() + ";"));
                result.Tags     = tags.Trim(';');
                result.SongSize = json["song_count"].Value <int>();
                result.Date     =
                    CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["created_time"].ToString()) / 1000)
                    .ToString("yyyy-MM-dd");
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "解析歌单时发生错误";
                return(result);
            }
        }
Exemplo n.º 8
0
        private CollectResult SearchCollect(string id, int page, int size)
        {
            var url    = "http://m.kugou.com/plist/list/?specialid=" + id + "&page=" + page + "&plat=2&json=true";
            var html   = CommonHelper.GetHtmlContent(url);
            var result = new CollectResult
            {
                ErrorCode   = 200,
                ErrorMsg    = "OK",
                CollectId   = id,
                CollectLink = "",
                Songs       = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取歌单信息失败";
                return(result);
            }
            var json = JObject.Parse(html);

            if (json["list"]["list"]["total"].ToString() == "0")
            {
                result.ErrorCode = 404;
                result.ErrorMsg  = "请检查歌单ID是否正确";
                return(result);
            }
            try
            {
                var datas = json["list"]["list"]["info"];
                result.Songs = GetListByJson(datas);

                result.CollectName  = json["info"]["list"]["specialname"].ToString();
                result.CollectLogo  = json["info"]["list"]["imgurl"].ToString().Replace("{size}", "480");
                result.CollectMaker = json["info"]["list"]["nickname"].ToString();
                result.CollectInfo  = json["info"]["list"]["intro"].ToString();
                var tags = json["info"]["list"]["tags"].Aggregate("", (current, t) => current + (t["tagname"].ToString() + ";"));
                result.Tags     = tags.Trim(';');
                result.SongSize = json["info"]["list"]["songcount"].Value <int>();
                result.Date     = json["info"]["list"]["publishtime"].ToString().Substring(0, 10);
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "解析歌单时发生错误";
                return(result);
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// 收到扫水结果
        /// </summary>
        /// <param name="content">扫水结果</param>
        private void CollectResultEvent(CollectResult content)
        {
            CollectInformation ci = new CollectInformation();

            ci.CollectPlatform  = content.Platform;
            ci.CollectSessionID = content.CollectSessionID;
            ci.MaxBetMoney      = content.MaxBetMoney;
            ci.Number           = content.Number;
            var count = BetProcessPool.SetBetProcessCollect(content.Id, ci);

            //如果扫水完成
            if (count == 0)
            {
                var colls = BetProcessPool.GetCollectByID(content.Id);
                if (null != colls)
                {
                    //分析扫水结果
                    //->暂缺

                    //开始下注
                    foreach (CollectInformation item in colls)
                    {
                        //设置分配好的下注平台
                        BetProcessPool.AddBetListItemInBetProcess(content.Id, item.CollectPlatform);

                        Task.Run(() => {
                            BetContent bet            = new BetContent();
                            bet.Id                    = content.Id;
                            bet.BetPlatformEnum       = item.CollectPlatform;
                            bet.BuyerSessionID        = content.BuyerSessionID;
                            bet.ClientSessionID       = content.ClientSessionID;
                            bet.InputType             = 1; //号码类型
                            bet.Money                 = 1; // 分配的金额
                            bet.Number                = item.Number;
                            MQActionVoidResult result = PublicData.RequestSocket.RequestSendReceive <MQActionVoidResult>(IdKeyData.Create(PublicData.SessionId, "Bet/AddBet", bet));
                            if (null != result && result.IsOK)
                            {
                                //记录命令发送成功
                            }
                            else
                            {
                                //记录命令发送失败
                            }
                        });
                    }
                }
            }
        }
Exemplo n.º 10
0
        private static CollectResult SearchCollect(string id)
        {
            var url    = "http://tingapi.ting.baidu.com/v1/restserver/ting?from=android&version=5.6.5.6&method=baidu.ting.diy.gedanInfo&format=json&listid=" + id;
            var html   = CommonHelper.GetHtmlContent(url);
            var result = new CollectResult
            {
                ErrorCode   = 200,
                ErrorMsg    = "OK",
                CollectId   = id,
                CollectLink = "http://music.baidu.com/songlist/" + id,
                Songs       = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取歌单信息失败";
                return(result);
            }
            var json = JObject.Parse(html);

            if (json["error_code"].ToString() != "22000")
            {
                result.ErrorCode = 404;
                result.ErrorMsg  = "请检查歌单ID是否正确";
                return(result);
            }
            try
            {
                var datas = json["content"];
                result.Songs       = GetListByJson(datas);
                result.CollectName = json["title"].ToString();
                result.CollectLogo = json["pic_500"].ToString();
                result.CollectInfo = json["desc"].ToString();
                result.Tags        = json["tag"].ToString();
                result.SongSize    = result.Songs.Count;
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "解析歌单时发生错误";
                return(result);
            }
        }
Exemplo n.º 11
0
        private static CollectResult SearchCollect(string id, int page, int size)
        {
            var text = "{\"id\":\"" + id + "\",\"n\":" + size + ",\"offset\":" + (page - 1) * size + ",\"limit\":" + size +
                       ",\"total\":true}";
            var html   = GetEncHtml("http://music.163.com/weapi/v3/playlist/detail?csrf_token=", text);
            var result = new CollectResult
            {
                ErrorCode   = 200,
                ErrorMsg    = "OK",
                CollectId   = id,
                CollectLink = "http://music.163.com/#/playlist?id=" + id,
                Songs       = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "null")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取源代码失败";
                return(result);
            }
            try
            {
                var json = JObject.Parse(html);
                result.Songs       = GetListByJToken(json, true);
                result.CollectInfo = json["playlist"]["description"].ToString();
                result.CollectName = json["playlist"]["name"].ToString();
                result.Page        = page;
                result.SongSize    = json["playlist"]["trackCount"].Value <int>();
                result.Date        =
                    CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["playlist"]["createTime"].ToString()) / 1000)
                    .ToString("yyyy-MM-dd");
                var picId       = json["playlist"]["coverImgId"].ToString();
                var encryptPath = EncryptId(picId);
                result.CollectLogo  = $"http://p4.music.126.net/{encryptPath}/{picId}.jpg";
                result.CollectMaker = json["playlist"]["creator"]["nickname"].ToString();
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "歌单解析失败";
                return(result);
            }
        }
Exemplo n.º 12
0
        private static CollectResult SearchCollect(string id, int page, int size)
        {
            var url = "http://nplserver.kuwo.cn/pl.svc?op=getlistinfo&pid=" + id + "&pn=" + (page - 1) + "&rn=" + size +
                      "&encode=utf-8&keyset=pl2012&identity=kuwo";
            var html   = CommonHelper.GetHtmlContent(url, 0, null, false);
            var result = new CollectResult
            {
                ErrorCode   = 200,
                ErrorMsg    = "OK",
                CollectId   = id,
                CollectLink = "",
                Songs       = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html) || html == "{}")
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取歌单信息失败";
                return(result);
            }
            var json = JObject.Parse(html);

            try
            {
                result.Songs = GetSongsByToken(json["musiclist"]);

                result.CollectName  = json["title"].ToString();
                result.CollectLogo  = json["pic"].ToString();
                result.CollectMaker = json["uname"].ToString();
                result.CollectInfo  = json["info"].ToString();
                result.Tags         = "";
                result.SongSize     = json["total"].Value <int>();
                result.Date         = CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["abstime"])).ToString("yyyy-MM-dd");
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "解析歌单时发生错误";
                return(result);
            }
        }
Exemplo n.º 13
0
        private CollectResult Collect(XRoadLogsDb targetDb, long fromIdInclusive, int limit)
        {
            var collectResult = new CollectResult();

            var logsReadResult = _xRoadDbReader.Read(targetDb, fromIdInclusive, limit);

            if (!logsReadResult.Any()) //assert logs present
            {
                throw new ApplicationException();
            }

            var xRoadRequests = _logsProcessor.Process(logsReadResult);

            _requestStore.AddRangeAsync(xRoadRequests).WaitAndUnwrapException();

            collectResult.Count        = logsReadResult.Count;
            collectResult.ParsedCount  = xRoadRequests.Count;
            collectResult.LastRecordId = logsReadResult.LastRecordId;

            return(collectResult);
        }
Exemplo n.º 14
0
        private void CollectProcess(Collect collect, bool isClient)
        {
            CollectResult coll = new CollectResult();

            coll.ErrorMessage = "";
            coll.MaxBetMoney  = 300;
            coll.Odds         = 7000;
            coll.ResultState  = ResultStatus.Success;

            //var result = adp.SeekWater(content.Number);
            //if (result != null)
            //{
            //    coll.ErrorMessage = "";
            //    coll.MaxBetMoney = result.Amount;
            //    coll.Odds = result.Odds;
            //    coll.ResultState = ResultStatus.Success;
            //}
            //else
            //{
            //    coll.ErrorMessage = "查询赔率失败";
            //    coll.MaxBetMoney = 0;
            //    coll.Odds = 0;
            //    coll.ResultState = ResultStatus.Failure;
            //}
            coll.Id              = collect.Id;
            coll.BuyerSessionID  = collect.BuyerSessionID;
            coll.ClientSessionID = collect.ClientSessionID;
            coll.Domain          = "www.dfv168.com";
            coll.Number          = collect.Number;
            var rs = PublicData.RequestSocket.RequestSendReceive <MQActionVoidResult>(IdKeyData.Create(PublicData.SessionId, "Collect/CollectCompletedToClient", coll));
            //IList<Task> taskList = new List<Task>();

            //foreach (var item in PublicData.CurrentPlatforms)
            //{
            //    var task = Task.Run(() =>
            //    {
            //        if (item.Value != null)
            //        {
            //            //初始化登录
            //            if (item.Value.LoginToken == null)
            //            {
            //                item.Value.Login(new Model.Web.UserLogin() { Domain = "www.dfv168.com", LoginName = "kf001", Password = "******" });
            //                // .Initialize(new LoginModel() { Loginname = "kf001", Password = "******" }, false);
            //            }

            //            var query = item.Value.CollectNumber(collect);

            //             PublicData.RequestSocket.RequestSendReceive<MQActionVoidResult>(IdKeyData.Create(PublicData.SessionId, "Collect/CollectCompletedToClient", query));

            //            if (query != null)
            //            {
            //                query.CollectSessionID = PublicData.SessionId;
            //                MQActionVoidResult result;

            //                if (isClient)
            //                {
            //                    result = PublicData.RequestSocket.RequestSendReceive<MQActionVoidResult>(IdKeyData.Create(PublicData.SessionId, "Collect/CollectCompletedToClient", query));
            //                }
            //                else
            //                {
            //                    result = PublicData.RequestSocket.RequestSendReceive<MQActionVoidResult>(IdKeyData.Create(PublicData.SessionId, "Collect/CollectCompleted", query));
            //                }

            //                if (result != null && result.IsOK)
            //                {
            //                    //记录成功
            //                }
            //                else
            //                {
            //                    //记录失败
            //                }
            //            }
            //        }
            //    });
            //    taskList.Add(task);
            //}

            //Task.WaitAll(taskList.ToArray());

            //string xxx = "";
        }
Exemplo n.º 15
0
        private CollectResult SearchCollect(string id)
        {
            var url = "http://api.xiami.com/web?v=2.0&app_key=1&id=188126468&type=collectId&r=collect/detail";
            var html = CommonHelper.GetHtmlContent(url, 1, new Dictionary<string, string>
            {
                {"Referer", "http://m.xiami.com/"}
            });
            var result = new CollectResult
            {
                ErrorCode = 200,
                ErrorMsg = "OK",
                CollectId = id,
                CollectLink = "http://www.xiami.com/collect/"+id,
                Page = 1,
                Songs = new List<SongResult>()
            };
            if (string.IsNullOrEmpty(html))
            {
                result.ErrorCode = 300;
                result.ErrorMsg = "获取歌单信息失败";
                return result;
            }
            try
            {
                var json = JObject.Parse(html);
                var datas = json["data"]["songs"];
                result.CollectName = json["data"]["collect_name"].ToString();
                result.CollectLogo = json["data"]["logo"].ToString().Replace("_1.", "_4.");
                result.SongSize = json["data"]["songs_count"].Value<int>();
                result.Date = CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["data"]["gmt_create"].ToString())).ToString("yyyy-MM-dd");
                result.CollectMaker = json["data"]["user_name"].ToString();
                result.Tags = json["data"]["tags"].First?.ToString();
                foreach (JToken j in datas)
                {
                    if (j["song_id"].ToString() == "0")
                    {
                        return null;
                    }
                    var song = new SongResult
                    {
                        SongId = j["song_id"].ToString(),
                        SongName = j["song_name"].ToString(),
                        SongSubName = "",

                        ArtistId = j["artist_id"].ToString(),
                        ArtistName = j["singers"].ToString(),
                        ArtistSubName = "",

                        AlbumId = j["album_id"].ToString(),
                        AlbumName = j["album_name"].ToString(),
                        AlbumSubName = "",
                        AlbumArtist = j["artist_name"].ToString(),

                        Length = CommonHelper.NumToTime(j["length"].ToString()),
                        Size = "",
                        BitRate = "320K",

                        FlacUrl = "",
                        ApeUrl = "",
                        WavUrl = "",
                        SqUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),
                        HqUrl = CommonHelper.GetSongUrl("xm", "192", j["song_id"].ToString(), "mp3"),
                        LqUrl = j["listen_file"].ToString(),
                        CopyUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),

                        PicUrl = j["album_logo"].ToString().Replace("_1.", "_4."),
                        LrcUrl = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "lrc"),
                        TrcUrl = "",
                        KrcUrl = "",

                        MvId = j["mv_id"]?.ToString(),
                        MvHdUrl = "",
                        MvLdUrl = "",

                        Language = "",
                        Company = "",
                        Year = "",
                        Disc = "1",
                        TrackNum = "",
                        Type = "xm"
                    };
                    if (string.IsNullOrEmpty(song.LqUrl))
                    {
                        song.LqUrl = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "mp3");
                    }
                    if (!string.IsNullOrEmpty(song.MvId))
                    {
                        if (song.MvId != "0")
                        {
                            song.MvHdUrl = CommonHelper.GetSongUrl("xm", "hd", song.SongId, "mp4");
                            song.MvLdUrl = CommonHelper.GetSongUrl("xm", "ld", song.SongId, "mp4");
                        }
                    }
                    result.Songs.Add(song);
                }
                return result;
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg = "解析歌单出现异常";
                return result;
            }
        }
Exemplo n.º 16
0
 private static CollectResult SearchCollect(string id)
 {
     var url = "http://api.songlist.ttpod.com/songlists/" + id;
     var html = CommonHelper.GetHtmlContent(url);
     var result = new CollectResult
     {
         ErrorCode = 200,
         ErrorMsg = "OK",
         CollectId = id,
         CollectLink = "http://h.dongting.com/yule/app/music_songlist.html?id="+id,
         Songs = new List<SongResult>()
     };
     if (string.IsNullOrEmpty(html) || html == "null")
     {
         result.ErrorCode = 300;
         result.ErrorMsg = "获取歌单信息失败";
         return result;
     }
     var json = JObject.Parse(html);
     if (string.IsNullOrEmpty(json["songs"]?.ToString()) || json["songs"].ToString() == "null")
     {
         result.ErrorCode = 404;
         result.ErrorMsg = "请检查歌单ID是否正确";
         return result;
     }
     try
     {
         var datas = json["songs"];
         result.Songs = GetListByJson(datas);
         result.CollectName = json["title"].ToString();
         result.CollectLogo = json["image"]["pic"].ToString();
         result.CollectMaker = json["owner"]["nick_name"].ToString();
         result.CollectInfo = json["desc"].ToString();
         var tags = json["tags"].Aggregate("", (current, t) => current + (t["tag_name"].ToString() + ";"));
         result.Tags = tags.Trim(';');
         result.SongSize = json["song_count"].Value<int>();
         result.Date =
             CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["created_time"].ToString()) / 1000)
                 .ToString("yyyy-MM-dd");
         return result;
     }
     catch (Exception ex)
     {
         CommonHelper.AddLog(ex);
         result.ErrorCode = 500;
         result.ErrorMsg = "解析歌单时发生错误";
         return result;
     }
 }
Exemplo n.º 17
0
 public void AddRewardInfo(CollectResult info)
 {
     m_rewardResultQueue.Enqueue(info);
 }
Exemplo n.º 18
0
        private CollectResult SearchCollect(string id)
        {
            var url  = "http://api.xiami.com/web?v=2.0&app_key=1&id=188126468&type=collectId&r=collect/detail";
            var html = CommonHelper.GetHtmlContent(url, 1, new Dictionary <string, string>
            {
                { "Referer", "http://m.xiami.com/" }
            });
            var result = new CollectResult
            {
                ErrorCode   = 200,
                ErrorMsg    = "OK",
                CollectId   = id,
                CollectLink = "http://www.xiami.com/collect/" + id,
                Page        = 1,
                Songs       = new List <SongResult>()
            };

            if (string.IsNullOrEmpty(html))
            {
                result.ErrorCode = 300;
                result.ErrorMsg  = "获取歌单信息失败";
                return(result);
            }
            try
            {
                var json  = JObject.Parse(html);
                var datas = json["data"]["songs"];
                result.CollectName  = json["data"]["collect_name"].ToString();
                result.CollectLogo  = json["data"]["logo"].ToString().Replace("_1.", "_4.");
                result.SongSize     = json["data"]["songs_count"].Value <int>();
                result.Date         = CommonHelper.UnixTimestampToDateTime(Convert.ToInt64(json["data"]["gmt_create"].ToString())).ToString("yyyy-MM-dd");
                result.CollectMaker = json["data"]["user_name"].ToString();
                result.Tags         = json["data"]["tags"].First?.ToString();
                foreach (JToken j in datas)
                {
                    if (j["song_id"].ToString() == "0")
                    {
                        return(null);
                    }
                    var song = new SongResult
                    {
                        SongId      = j["song_id"].ToString(),
                        SongName    = j["song_name"].ToString(),
                        SongSubName = "",

                        ArtistId      = j["artist_id"].ToString(),
                        ArtistName    = j["singers"].ToString(),
                        ArtistSubName = "",

                        AlbumId      = j["album_id"].ToString(),
                        AlbumName    = j["album_name"].ToString(),
                        AlbumSubName = "",
                        AlbumArtist  = j["artist_name"].ToString(),

                        Length  = CommonHelper.NumToTime(j["length"].ToString()),
                        Size    = "",
                        BitRate = "320K",

                        FlacUrl = "",
                        ApeUrl  = "",
                        WavUrl  = "",
                        SqUrl   = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),
                        HqUrl   = CommonHelper.GetSongUrl("xm", "192", j["song_id"].ToString(), "mp3"),
                        LqUrl   = j["listen_file"].ToString(),
                        CopyUrl = CommonHelper.GetSongUrl("xm", "320", j["song_id"].ToString(), "mp3"),

                        PicUrl = j["album_logo"].ToString().Replace("_1.", "_4."),
                        LrcUrl = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "lrc"),
                        TrcUrl = "",
                        KrcUrl = "",

                        MvId    = j["mv_id"]?.ToString(),
                        MvHdUrl = "",
                        MvLdUrl = "",

                        Language = "",
                        Company  = "",
                        Year     = "",
                        Disc     = "1",
                        TrackNum = "",
                        Type     = "xm"
                    };
                    if (string.IsNullOrEmpty(song.LqUrl))
                    {
                        song.LqUrl = CommonHelper.GetSongUrl("xm", "128", j["song_id"].ToString(), "mp3");
                    }
                    if (!string.IsNullOrEmpty(song.MvId))
                    {
                        if (song.MvId != "0")
                        {
                            song.MvHdUrl = CommonHelper.GetSongUrl("xm", "hd", song.SongId, "mp4");
                            song.MvLdUrl = CommonHelper.GetSongUrl("xm", "ld", song.SongId, "mp4");
                        }
                    }
                    result.Songs.Add(song);
                }
                return(result);
            }
            catch (Exception ex)
            {
                CommonHelper.AddLog(ex);
                result.ErrorCode = 500;
                result.ErrorMsg  = "解析歌单出现异常";
                return(result);
            }
        }