Exemple #1
0
        public bool RemoveFeedSource(Database.Feed target, Database.Bookmark feedSource)
        {
            var ensureFeed = GetFeedGroup(target.Id);

            if (ensureFeed != null)
            {
                var targetFeedSource = ensureFeed.Sources.FirstOrDefault(x => x.Id == feedSource.Id);
                if (ensureFeed.Sources.Remove(targetFeedSource))
                {
                    UpdateFeedGroup(ensureFeed);

                    FeedSourceRemoved?.Invoke(this, new FeedSourceRemovedEventArgs()
                    {
                        Feed     = ensureFeed,
                        Bookmark = feedSource,
                    });

                    return(true);
                }
            }

            return(false);
        }
Exemple #2
0
        private async Task <IEnumerable <Database.NicoVideo> > GetItems(Database.Bookmark source)
        {
            var contentProvider = HohoemaApp.ContentProvider;

            switch (source.BookmarkType)
            {
            case Database.BookmarkType.User:
            {
                var items = await contentProvider.GetUserVideos(uint.Parse(source.Content), 1);

                return(items.Items.Select(x =>
                    {
                        var nicoVideo = Database.NicoVideoDb.Get(x.VideoId);
                        nicoVideo.Title = x.Title;
                        nicoVideo.ThumbnailUrl = x.ThumbnailUrl.OriginalString;
                        nicoVideo.PostedAt = x.SubmitTime;
                        nicoVideo.Length = x.Length;
                        return nicoVideo;
                    }
                                          ));
            }

            case Database.BookmarkType.Mylist:
            {
                var items = await contentProvider.GetMylistGroupVideo(source.Content, 0, 30);

                return(items.MylistVideoInfoItems.Select(x =>
                    {
                        var nicoVideo = Database.NicoVideoDb.Get(x.Video.Id);
                        nicoVideo.Title = x.Video.Title;
                        nicoVideo.ThumbnailUrl = x.Video.ThumbnailUrl.OriginalString;
                        nicoVideo.PostedAt = x.Video.FirstRetrieve;
                        nicoVideo.Length = x.Video.Length;
                        nicoVideo.IsDeleted = x.Video.IsDeleted;
                        nicoVideo.DescriptionWithHtml = x.Video.Description;
                        nicoVideo.MylistCount = (int)x.Video.MylistCount;
                        nicoVideo.CommentCount = (int)x.Thread.GetCommentCount();
                        nicoVideo.ViewCount = (int)x.Video.ViewCount;
                        return nicoVideo;
                    }));
            }

            case Database.BookmarkType.SearchWithTag:
            {
                var items = await contentProvider.GetTagSearch(source.Content, 0, 30);

                return(items.VideoInfoItems.Select(x =>
                    {
                        var nicoVideo = Database.NicoVideoDb.Get(x.Video.Id);
                        nicoVideo.Title = x.Video.Title;
                        nicoVideo.ThumbnailUrl = x.Video.ThumbnailUrl.OriginalString;
                        nicoVideo.PostedAt = x.Video.FirstRetrieve;
                        nicoVideo.Length = x.Video.Length;
                        nicoVideo.IsDeleted = x.Video.IsDeleted;
                        nicoVideo.DescriptionWithHtml = x.Video.Description;
                        nicoVideo.MylistCount = (int)x.Video.MylistCount;
                        nicoVideo.CommentCount = (int)x.Thread.GetCommentCount();
                        nicoVideo.ViewCount = (int)x.Video.ViewCount;
                        return nicoVideo;
                    }));
            }

            case Database.BookmarkType.SearchWithKeyword:
            {
                var items = await contentProvider.GetKeywordSearch(source.Content, 0, 30);

                return(items.VideoInfoItems.Select(x =>
                    {
                        var nicoVideo = Database.NicoVideoDb.Get(x.Video.Id);
                        nicoVideo.Title = x.Video.Title;
                        nicoVideo.ThumbnailUrl = x.Video.ThumbnailUrl.OriginalString;
                        nicoVideo.PostedAt = x.Video.FirstRetrieve;
                        nicoVideo.Length = x.Video.Length;
                        nicoVideo.IsDeleted = x.Video.IsDeleted;
                        nicoVideo.DescriptionWithHtml = x.Video.Description;
                        nicoVideo.MylistCount = (int)x.Video.MylistCount;
                        nicoVideo.CommentCount = (int)x.Thread.GetCommentCount();
                        nicoVideo.ViewCount = (int)x.Video.ViewCount;
                        return nicoVideo;
                    }));
            }

            default:
                return(null);
            }
        }
 public FeedVideoInfoControlViewModel(Database.NicoVideo nicoVideo, Database.Bookmark sourceBookmark)
     : base(nicoVideo)
 {
     SourceBookmark = sourceBookmark;
 }
        protected override async void Execute(object parameter)
        {
            Database.Bookmark bookmark = null;

            if (parameter is Database.Bookmark)
            {
                bookmark = parameter as Database.Bookmark;
            }
            else if (parameter is Models.FollowItemInfo)
            {
                var followInfo = parameter as Models.FollowItemInfo;
                bookmark = new Database.Bookmark()
                {
                    Label        = followInfo.Name,
                    BookmarkType = Models.FeedManager.FollowItemTypeConvertToFeedSourceType(followInfo.FollowItemType),
                    Content      = followInfo.Id
                };
            }
            else if (parameter is Interfaces.IVideoContent)
            {
                var videoInfo = parameter as Interfaces.IVideoContent;

                if (videoInfo.OwnerUserId == null)
                {
                    System.Diagnostics.Debug.WriteLine("フィード登録失敗、動画投稿者の情報がありません。");
                    return;
                }
                var hohoemaApp = App.Current.Container.Resolve <Models.HohoemaApp>();

                var userInfo = await hohoemaApp.ContentProvider.GetUserInfo(videoInfo.OwnerUserId);

                if (userInfo != null)
                {
                    bookmark = new Database.Bookmark()
                    {
                        Label        = userInfo.Nickname,
                        BookmarkType = Database.BookmarkType.User,
                        Content      = videoInfo.OwnerUserId
                    };
                }
            }

            if (bookmark != null)
            {
                var hohoemaApp = App.Current.Container.Resolve <Models.HohoemaApp>();

                if (hohoemaApp.FeedManager.GetAllFeedGroup()
                    .Where(x => x.Sources.Any())
                    .Select(x => x.Sources.First())
                    .Any(x => x.BookmarkType == bookmark.BookmarkType && x.Content == bookmark.Content))
                {
                    return;
                }

                var feedGroup = hohoemaApp.FeedManager.AddFeedGroup(bookmark.Label, bookmark);

                if (feedGroup != null)
                {
                    // 通知
                    (App.Current as App).PublishInAppNotification(
                        Models.InAppNotificationPayload.CreateReadOnlyNotification(
                            $"{feedGroup.Label} を新着チェック対象として追加しました"
                            )
                        );
                }
            }
        }