コード例 #1
0
ファイル: HohoemaPlaylist.cs プロジェクト: TaoziDB/Hohoema
        public void PlayDone(PlaylistItem item, bool canPlayNext = false)
        {
            // 次送りが出来る場合は次へ
            if (canPlayNext && (Player?.CanGoNext ?? false))
            {
                Player.GoNext();
            }
            else if (canPlayNext)
            {
                if (PlaylistSettings.PlaylistEndAction == PlaylistEndAction.ChangeIntoSplit)
                {
                    if (PlayerDisplayType == PlayerDisplayType.PrimaryView)
                    {
                        PlayerDisplayType = PlayerDisplayType.PrimaryWithSmall;
                    }
                }
                else if (PlaylistSettings.PlaylistEndAction == PlaylistEndAction.CloseIfPlayWithCurrentWindow)
                {
                    IsDisplayMainViewPlayer = false;
                }
            }

            // あとで見るプレイリストの場合、再生後に
            // アイテムを削除する
            if (CurrentPlaylist == DefaultPlaylist)
            {
                DefaultPlaylist.Remove(item);
            }
        }
コード例 #2
0
        public void PlayDone(PlaylistItem item, bool canPlayNext = false)
        {
            // 次送りが出来る場合は次へ
            if (canPlayNext && (Player?.CanGoNext ?? false))
            {
                Player.GoNext();
            }
            else if (canPlayNext)
            {
                if (PlayerViewManager.IsPlayerShowWithPrimaryView)
                {
                    switch (PlaylistSettings.PlaylistEndAction)
                    {
                    case PlaylistEndAction.ChangeIntoSplit:
                        PlayerViewManager.IsPlayerSmallWindowModeEnabled = true;
                        break;

                    case PlaylistEndAction.CloseIfPlayWithCurrentWindow:
                        PlayerViewManager.ClosePlayer();
                        break;
                    }
                }
            }

            // あとで見るプレイリストの場合、再生後に
            // アイテムを削除する
            if (CurrentPlaylist == DefaultPlaylist)
            {
                DefaultPlaylist.RemoveMylistItem(item.ContentId);
            }
        }
コード例 #3
0
        public void PlayDone(PlaylistItem item, bool canPlayNext = false)
        {
            // 次送りが出来る場合は次へ
            if (canPlayNext && (Player?.CanGoNext ?? false))
            {
                Player.GoNext();
            }
            else if (canPlayNext)
            {
                if (PlaylistSettings.PlaylistEndAction == PlaylistEndAction.ChangeIntoSplit)
                {
                    IsPlayerFloatingModeEnable = true;
                }
                else if (PlaylistSettings.PlaylistEndAction == PlaylistEndAction.CloseIfPlayWithCurrentWindow)
                {
                    IsDisplayPlayer = false;
                }
            }

            // あとで見るプレイリストの場合、再生後に
            // アイテムを削除する
            if (CurrentPlaylist == DefaultPlaylist)
            {
                DefaultPlaylist.Remove(item);
            }

            ResetMediaPlayerCommand();
        }
コード例 #4
0
        public void AddWatchAfterPlaylist(string contentId)
        {
            if (!NiconicoRegex.IsVideoId(contentId) && !int.TryParse(contentId, out var temp))
            {
                return;
            }

            var result = DefaultPlaylist.AddMylistItem(contentId, ContentInsertPosition.Tail);
        }
コード例 #5
0
ファイル: HohoemaPlaylist.cs プロジェクト: TaoziDB/Hohoema
        // あとで見るプレイリストを通じての再生をサポート
        // プレイリストが空だった場合、その場で再生を開始
        public void PlayVideo(string contentId, string title = "", NicoVideoQuality?quality = null)
        {
            if (!NiconicoRegex.IsVideoId(contentId) && !int.TryParse(contentId, out var temp))
            {
                return;
            }

            var newItem = DefaultPlaylist.AddVideo(contentId, title, ContentInsertPosition.Head);

            Play(newItem);
        }
コード例 #6
0
ファイル: HohoemaPlaylist.cs プロジェクト: TaoziDB/Hohoema
        public void PlayVideo(IVideoContent video)
        {
            if (!(NiconicoRegex.IsVideoId(video.Id) || video.Id.All(x => '0' <= x && x <= '9')))
            {
                return;
            }

            var item = DefaultPlaylist.PlaylistItems.FirstOrDefault(x => x.Type == PlaylistItemType.Video && x.ContentId == video.Id)
                       ?? DefaultPlaylist.AddVideo(video.Id, video.Label, ContentInsertPosition.Head);

            Play(item);
        }
コード例 #7
0
        public void PlayVideo(IVideoContent video)
        {
            if (!(NiconicoRegex.IsVideoId(video.Id) || video.Id.All(x => '0' <= x && x <= '9')))
            {
                return;
            }

            DefaultPlaylist.AddMylistItem(video.Id, ContentInsertPosition.Head);

            Play(new QualityVideoPlaylistItem()
            {
                ContentId = video.Id,
                Owner     = video.OnwerPlaylist ?? DefaultPlaylist,
                Title     = video.Label,
                Type      = PlaylistItemType.Video,
            });
        }
コード例 #8
0
        // あとで見るプレイリストを通じての再生をサポート
        // プレイリストが空だった場合、その場で再生を開始
        public void PlayVideo(string contentId, string title = "", NicoVideoQuality?quality = null)
        {
            if (!NiconicoRegex.IsVideoId(contentId) && !int.TryParse(contentId, out var temp))
            {
                return;
            }

            var result = DefaultPlaylist.AddMylistItem(contentId, ContentInsertPosition.Head);

            Play(new QualityVideoPlaylistItem()
            {
                ContentId = contentId,
                Owner     = DefaultPlaylist,
                Title     = title,
                Type      = PlaylistItemType.Video,
                Quality   = quality
            });
        }
コード例 #9
0
ファイル: HohoemaPlaylist.cs プロジェクト: TaoziDB/Hohoema
        public void PlayVideoWithPlaylist(IVideoContent video)
        {
            if (!(NiconicoRegex.IsVideoId(video.Id) || video.Id.All(x => '0' <= x && x <= '9')))
            {
                return;
            }

            if (video.Playlist != null)
            {
                var playlistItem = video.Playlist.PlaylistItems.FirstOrDefault(x => x.ContentId == video.Id);
                if (playlistItem != null)
                {
                    Play(playlistItem);
                }
            }
            else
            {
                var newItem = DefaultPlaylist.AddVideo(video.Id, video.Label, ContentInsertPosition.Head);
                Play(newItem);
            }
        }
コード例 #10
0
        // あとで見るプレイリストを通じての再生をサポート
        // プレイリストが空だった場合、その場で再生を開始
        public void PlayVideo(string contentId, string title = "", NicoVideoQuality?quality = null)
        {
            var newItem = DefaultPlaylist.AddVideo(contentId, title, ContentInsertPosition.Head);

            Play(newItem);
        }
コード例 #11
0
        public async Task Load()
        {
            var files = await HohoemaApp.GetSyncRoamingData(PlaylistsSaveFolder);

            // ファイルがない場合
            if (files.Count == 0)
            {
                // デフォルトプレイリストを作成
                MakeDefaultPlaylist();
                CurrentPlaylist = DefaultPlaylist;

                return;
            }


            // 古いデータを解放
            foreach (var playlist in _Playlists)
            {
                playlist.Dispose();
            }

            _PlaylistFileAccessorMap.Clear();
            _Playlists.Clear();
            DefaultPlaylist = null;


            // 読み込み
            List <LocalMylist> loadedItem = new List <LocalMylist>();

            foreach (var file in files)
            {
                var playlistFileAccessor = new FileAccessor <LocalMylist>(PlaylistsSaveFolder, file.Name);
                var playlist             = await playlistFileAccessor.Load();

                if (playlist != null)
                {
                    playlist.HohoemaPlaylist = this;

                    // 重複登録されている場合、ファイルの日付が古いほうを削除
                    // (本来はリネームのミスがないようにするべき)
                    if (_PlaylistFileAccessorMap.ContainsKey(playlist.Id))
                    {
                        var prevFileAccessor = _PlaylistFileAccessorMap[playlist.Id];

                        var prevFile = await prevFileAccessor.TryGetFile();

                        var prevFileProp = await prevFile.GetBasicPropertiesAsync();

                        var fileProp = await file.GetBasicPropertiesAsync();

                        if (prevFileProp.DateModified < fileProp.DateModified)
                        {
                            await prevFileAccessor.Delete(StorageDeleteOption.PermanentDelete);

                            _PlaylistFileAccessorMap.Remove(playlist.Id);

                            _PlaylistFileAccessorMap.Add(playlist.Id, playlistFileAccessor);
                            loadedItem.Add(playlist);
                        }
                        else
                        {
                            await HohoemaApp.RoamingDataRemoved(file);

                            await file.DeleteAsync();
                        }
                    }
                    else
                    {
                        _PlaylistFileAccessorMap.Add(playlist.Id, playlistFileAccessor);
                        loadedItem.Add(playlist);
                    }
                }

                if (playlist.Id == WatchAfterPlaylistId)
                {
                    DefaultPlaylist = playlist;
                }
            }

            loadedItem.Sort((x, y) => x.SortIndex - y.SortIndex);

            foreach (var sortedPlaylist in loadedItem)
            {
                _Playlists.Add(sortedPlaylist);
            }


            // デフォルトプレイリストが削除されていた場合に対応
            if (DefaultPlaylist == null)
            {
                MakeDefaultPlaylist();
            }

            // Live Item は削除
            foreach (var i in DefaultPlaylist.PlaylistItems.Where(x => x.ContentId.StartsWith("lv")).ToArray())
            {
                DefaultPlaylist.Remove(i);
            }
        }