コード例 #1
0
ファイル: XbmcHttp.Player.cs プロジェクト: kronic/Yatse2
        public ApiCurrently NowPlaying(bool checkNewMedia)
        {
            var nowPlaying = new ApiCurrently();

            // TODO : Correct implementation
            return(nowPlaying);
        }
コード例 #2
0
        public void RefreshNowPlaying()
        {
            lock (Locker)
            {
                if (!_parent.IsConnected())
                {
                    return;
                }

                var infos = _parent.Command("GetCurrentlyPlaying");
                if (infos == null)
                {
                    return;
                }

                _currentInfo.Clear();

                foreach (var info in infos)
                {
                    var splitIndex = info.IndexOf(':') + 1;
                    if (splitIndex <= 2)
                    {
                        continue;
                    }
                    var key   = info.Substring(0, splitIndex - 1).Replace(" ", "").ToLower(CultureInfo.InvariantCulture);
                    var value = info.Substring(splitIndex, info.Length - splitIndex);
                    _currentInfo.Add(key, value);
                }
                if (GetInfo("thumb") != null)
                {
                    var thumbparts = GetInfo("thumb").Split('/');
                    var hash       = thumbparts[thumbparts.Length - 1].Trim().Replace(".tbn", "");
                    _currentInfo.Add("fanart", GetInfo("thumb").Replace("/" + hash[0] + "/", "/Fanart/"));
                }


                string[] aVolume   = null;
                string[] aProgress = null;

                if (GetInfo("playstatus") != null)
                {
                    aVolume = _parent.Command("GetVolume");
                    if (aVolume == null)
                    {
                        return;
                    }
                    aProgress = _parent.Command("GetPercentage");
                    if (aProgress == null)
                    {
                        return;
                    }
                }

                try
                {
                    _volume = aVolume != null?Convert.ToInt32("0" + aVolume[0], CultureInfo.InvariantCulture) : 0;
                }
                catch (Exception)
                {
                    _volume = 0;
                }

                _volume = Math.Min(100, _volume);
                try
                {
                    _progress = aProgress != null?Convert.ToInt32("0" + aProgress[0], CultureInfo.InvariantCulture) : 1;
                }
                catch (Exception)
                {
                    _progress = 1;
                }
                _progress = Math.Min(99, _progress);


                var nowPlaying = new ApiCurrently
                {
                    IsPlaying  = (GetInfo("playstatus") == "Playing") ? true : false,
                    IsPaused   = (GetInfo("playstatus") == "Paused") ? true : false,
                    IsNewMedia = _isNewMedia,
                    IsMuted    = (_volume == 0) ? true : false
                };

                if (GetInfo("showtitle") != null)
                {
                    nowPlaying.MediaType = "TvShow";
                }
                else if (GetInfo("title") != null)
                {
                    if (GetInfo("type") == "Audio")
                    {
                        nowPlaying.MediaType = "Audio";
                    }
                    if (GetInfo("type") == "Video")
                    {
                        nowPlaying.MediaType = "Movie";
                    }
                }
                else
                {
                    nowPlaying.MediaType = "Unknown";
                }

                nowPlaying.FileName = GetInfo("filename");
                nowPlaying.Title    = GetInfo("title");
                nowPlaying.Artist   = GetInfo("artist");
                nowPlaying.Album    = GetInfo("album");
                try
                {
                    nowPlaying.Year = Convert.ToInt32("0" + GetInfo("year"), CultureInfo.InvariantCulture);
                }
                catch
                {
                    nowPlaying.Year = 0;
                }
                try
                {
                    nowPlaying.Track = Convert.ToInt32("0" + GetInfo("track"), CultureInfo.InvariantCulture);
                }
                catch
                {
                    nowPlaying.Track = 0;
                }
                try
                {
                    nowPlaying.SeasonNumber = Convert.ToInt32("0" + GetInfo("season"), CultureInfo.InvariantCulture);
                }
                catch
                {
                    nowPlaying.SeasonNumber = 0;
                }
                try
                {
                    nowPlaying.EpisodeNumber = Convert.ToInt32("0" + GetInfo("episode"), CultureInfo.InvariantCulture);
                }
                catch
                {
                    nowPlaying.EpisodeNumber = 0;
                }

                nowPlaying.Genre     = GetInfo("genre");
                nowPlaying.ThumbURL  = GetInfo("thumb");
                nowPlaying.FanartURL = GetInfo("fanart");
                nowPlaying.ShowTitle = GetInfo("showtitle");
                nowPlaying.Plot      = GetInfo("plot");
                nowPlaying.Director  = GetInfo("director");
                nowPlaying.Volume    = GetVolume();
                nowPlaying.Progress  = GetProgress();

                nowPlaying.Studio  = GetInfo("studio");
                nowPlaying.Tagline = GetInfo("tagline");
                nowPlaying.Rating  = GetInfo("rating");

                var time = GetInfo("time");
                if (!string.IsNullOrEmpty(time))
                {
                    var splittime = time.Split(':');
                    switch (splittime.Length)
                    {
                    case 1:
                        nowPlaying.Time = new TimeSpan(0, 0, 0,
                                                       Convert.ToInt32("0" + splittime[0], CultureInfo.InvariantCulture));
                        break;

                    case 2:
                        nowPlaying.Time = new TimeSpan(0, 0,
                                                       Convert.ToInt32("0" + splittime[0], CultureInfo.InvariantCulture),
                                                       Convert.ToInt32("0" + splittime[1], CultureInfo.InvariantCulture));
                        break;

                    case 3:
                        nowPlaying.Time = new TimeSpan(0,
                                                       Convert.ToInt32("0" + splittime[0], CultureInfo.InvariantCulture),
                                                       Convert.ToInt32("0" + splittime[1], CultureInfo.InvariantCulture),
                                                       Convert.ToInt32("0" + splittime[2], CultureInfo.InvariantCulture));
                        break;

                    default:
                        nowPlaying.Time = new TimeSpan(0);
                        break;
                    }
                }

                var duration = GetInfo("duration");
                if (duration != null)
                {
                    var splitduration = duration.Split(':');
                    switch (splitduration.Length)
                    {
                    case 1:
                        nowPlaying.Duration = new TimeSpan(0, 0, 0,
                                                           Convert.ToInt32("0" + splitduration[0],
                                                                           CultureInfo.InvariantCulture));
                        break;

                    case 2:
                        nowPlaying.Duration = new TimeSpan(0, 0,
                                                           Convert.ToInt32("0" + splitduration[0],
                                                                           CultureInfo.InvariantCulture),
                                                           Convert.ToInt32("0" + splitduration[1],
                                                                           CultureInfo.InvariantCulture));
                        break;

                    case 3:
                        nowPlaying.Duration = new TimeSpan(0,
                                                           Convert.ToInt32("0" + splitduration[0],
                                                                           CultureInfo.InvariantCulture),
                                                           Convert.ToInt32("0" + splitduration[1],
                                                                           CultureInfo.InvariantCulture),
                                                           Convert.ToInt32("0" + splitduration[2],
                                                                           CultureInfo.InvariantCulture));
                        break;

                    default:
                        nowPlaying.Duration = new TimeSpan(0);
                        break;
                    }
                }

                var firstaired = GetInfo("firstaired");
                if (firstaired != null)
                {
                    var splitaired = firstaired.Split('-');
                    if (splitaired.Length > 1)
                    {
                        nowPlaying.FirstAired =
                            new DateTime(Convert.ToInt32("0" + splitaired[0], CultureInfo.InvariantCulture),
                                         Convert.ToInt32("0" + splitaired[1], CultureInfo.InvariantCulture),
                                         Convert.ToInt32("0" + splitaired[2], CultureInfo.InvariantCulture));
                    }
                }
                _nowPlaying = nowPlaying;
            }
        }