Ejemplo n.º 1
0
        private async void BangumiListGridView_ItemClick(object sender, ItemClickEventArgs e)
        {
            var info = e.ClickedItem as BangumiViewModel;

            if (info.SeasonId == 0)
            {
                var list  = BangumiListGridView.ItemsSource as ObservableCollection <BangumiViewModel>;
                var count = list.Count - 1;

                async Task NoticeNoMore()
                {
                    var dialog = new NoticeDialog("提示", "已经没有更多了");
                    await dialog.ShowAsync();
                }

                if ((count < 15) || (count % 15 != 0))
                {
                    await NoticeNoMore();

                    return;
                }
                var newList = await BiliFavHelper.GetFavBangumiMasterListAsync((count / 15) + 1, Settings.Uid, Settings.SESSDATA);

                if (newList == null)
                {
                    await NoticeNoMore();

                    return;
                }
                var toAddList = new List <BangumiViewModel>();
                list.Remove(list.Last());
                foreach (var bangumi in newList)
                {
                    var model = new BangumiViewModel()
                    {
                        Title    = bangumi.Title,
                        SeasonId = bangumi.SeasonId
                    };
                    try
                    {
                        model.CoverImg = new BitmapImage(new Uri(bangumi.CoverUrl));
                    }
                    catch (Exception ex)
                    {
                        _logger.Info(ex, ex.Message);
                    }
                    toAddList.Add(model);
                }
                toAddList.ForEach(b => list.Add(b));
                list.Add(new BangumiViewModel()
                {
                    Title    = "加载更多",
                    SeasonId = 0,
                    //CoverImg = ???
                });
            }
            else
            {
                var master = await BiliBangumiHelper.GetBangumiMasterAsync(info.SeasonId, Settings.SESSDATA);

                NavigationHelper.NavigateToPage(ContentPage.Search);
                SearchPage.Current.HandleMaster <BiliBangumiMasterResultPage, BiliBangumiMaster>(master);
            }
        }
        private async void SearchBtn_Click(object sender, RoutedEventArgs e)
        {
            var searchContent = SearchTextBox.Text;

            if (string.IsNullOrWhiteSpace(searchContent))
            {
                return;
            }

            var result = AnalyzeUrl(searchContent);

            if (string.IsNullOrWhiteSpace(result.Item2))//输入了无效的url
            {
                ShowNoticeFlyout("输入了无效的url");
                return;
            }
            SearchProgress();
            try
            {
                switch (result.Item1)
                {
                case UrlType.Bv:
                    var video1 = await BiliVideoHelper.GetVideoMasterAsync(result.Item2, Settings.SESSDATA);

                    SearchPage.Current.HandleMaster <BiliVideoMasterResultPage, BiliVideoMaster>(video1);
                    Reset();
                    break;

                case UrlType.Av:
                    var video2 = await BiliVideoHelper.GetVideoMasterAsync(long.Parse(result.Item2), Settings.SESSDATA);

                    SearchPage.Current.HandleMaster <BiliVideoMasterResultPage, BiliVideoMaster>(video2);
                    Reset();
                    break;

                case UrlType.Ep:
                    var bangumi1 = await BiliBangumiHelper.GetBangumiMasterAsync(long.Parse(result.Item2), Settings.SESSDATA, null);

                    SearchPage.Current.HandleMaster <BiliBangumiMasterResultPage, BiliBangumiMaster>(bangumi1);
                    Reset();
                    break;

                case UrlType.Ss:
                    var bangumi2 = await BiliBangumiHelper.GetBangumiMasterAsync(long.Parse(result.Item2), Settings.SESSDATA);

                    SearchPage.Current.HandleMaster <BiliBangumiMasterResultPage, BiliBangumiMaster>(bangumi2);
                    Reset();
                    break;

                case UrlType.Mc:
                    var manga = await BiliMangaHelper.GetMangaMasterAsync(long.Parse(result.Item2), Settings.SESSDATA);

                    SearchPage.Current.HandleMaster <BiliMangaMasterResultPage, BiliMangaMaster>(manga);
                    Reset();
                    break;

                case UrlType.Error:
                    Reset();
                    break;

                default:
                    Reset();
                    break;
                }
            }
            catch (Exception ex)
            {
                Reset();
                if (ex is VideoNotFoundException or ArgumentException
                    or UnauthorizedAccessException or ParsingVideoException)
                {
                    ShowNoticeFlyout(ex.Message);
                }