コード例 #1
0
        private void AsyncPlayFilesWorker(object sender, DoWorkEventArgs e)
        {
            var songs = (Collection <ApiAudioSong>)e.Argument;

            if (songs == null)
            {
                return;
            }
            if (!_parent.IsConnected())
            {
                return;
            }

            _parent.JsonCommand("AudioPlaylist.Clear", null);
            var i    = 0;
            var args = new JsonObject();

            foreach (var apiAudioSong in songs)
            {
                if (((BackgroundWorker)sender).CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }
                args["songid"] = apiAudioSong.IdSong;
                _parent.JsonCommand("AudioPlaylist.Add", args);
                if (i != 0)
                {
                    continue;
                }
                _parent.JsonCommand("AudioPlaylist.Play", null);
                i++;
            }
        }
コード例 #2
0
 public bool Download(string fileName, string destination)
 {
     if (!_parent.IsConnected())
     {
         return(false);
     }
     try
     {
         using (var client = new WebClient())
         {
             var credentials = _parent.GetCredentials();
             if (credentials != null)
             {
                 client.Credentials = credentials;
             }
             client.DownloadFile(_parent.GetDownloadPath(fileName), destination);
         }
         _parent.Log("DOWNLOAD : " + fileName);
         return(true);
     }
     catch (WebException e)
     {
         _parent.Log("ERROR - DOWNLOAD : " + _parent.GetDownloadPath(fileName) + " " + e.Message);
     }
     return(false);
 }
コード例 #3
0
        public void PlayMovie(ApiMovie video)
        {
            if (video == null)
            {
                return;
            }
            if (!_parent.IsConnected())
            {
                return;
            }

            var args = new JsonObject();

            args["movieid"] = video.IdMovie;
            _parent.AsyncJsonCommand("XBMC.Play", args);
        }
コード例 #4
0
ファイル: Xbmc.Player.cs プロジェクト: vageesh79/FrontView
        public void RefreshNowPlaying()
        {
            lock (Locker)
            {
                if (_parent.MpcLoaded)
                {
                    var result  = _parent.MpcHcRemote.GetStatus();
                    var result2 = new ArrayList();
                    MpcHcRemote.ParseCSVFields(result2, result);
                    var data = (string[])result2.ToArray(typeof(string));
                    if (data.Length > 6)
                    {
                        _nowPlaying.MediaType = "Video";
                        _nowPlaying.Title     = "Media Player Classic";
                        _nowPlaying.Time      = new TimeSpan(0, 0, 0, Convert.ToInt32("0" + data[2]) / 1000);
                        _nowPlaying.Duration  = new TimeSpan(0, 0, 0, Convert.ToInt32("0" + data[4]) / 1000);
                        var percent = Math.Floor(100.0 * Convert.ToInt32("0" + data[2], CultureInfo.InvariantCulture) / Convert.ToInt32("0" + data[4], CultureInfo.InvariantCulture));
                        if (Double.IsNaN(percent))
                        {
                            percent = 0;
                        }
                        _nowPlaying.Volume   = Convert.ToInt32("0" + data[7], CultureInfo.InvariantCulture);
                        _nowPlaying.IsMuted  = data[6] == "1";
                        _nowPlaying.Progress = (int)percent;
                    }
                }
                else
                {
                    if (!_parent.IsConnected())
                    {
                        _nowPlaying.FileName = "";
                        _nowPlaying.Title    = "";
                        return;
                    }

                    var infos = (JsonObject)_parent.JsonCommand("System.GetInfoLabels", new[]
                    {
                        "MusicPlayer.Title",
                        "MusicPlayer.Album",
                        "MusicPlayer.Artist",
                        "MusicPlayer.Property(Artist_Description)",
                        "MusicPlayer.Genre",
                        "MusicPlayer.Year",
                        "MusicPlayer.TrackNumber",
                        "MusicPlayer.Codec",
                        "Player.Time",
                        "Player.Duration",
                        "Player.Volume",
                        "Player.Filenameandpath",
                        "VideoPlayer.Title",
                        "VideoPlayer.TVShowTitle",
                        "VideoPlayer.Genre",
                        "VideoPlayer.Director",
                        "VideoPlayer.Year",
                        "VideoPlayer.Rating",
                        "VideoPlayer.Tagline",
                        "VideoPlayer.Studio",
                        "VideoPlayer.Plot",
                        "VideoPlayer.Season",
                        "VideoPlayer.Episode",
                        "VideoPlayer.VideoCodec"
                    });

                    if (infos == null)
                    {
                        return;
                    }
                    JsonObject infos2 = null;
                    _nowPlaying.FileName = infos["Player.Filenameandpath"].ToString();

                    if (!String.IsNullOrEmpty(infos["VideoPlayer.TVShowTitle"].ToString()))
                    {
                        _nowPlaying.MediaType = "TvShow";
                    }
                    else if (!String.IsNullOrEmpty(infos["MusicPlayer.Title"].ToString()))
                    {
                        _nowPlaying.MediaType = "Audio";
                    }
                    else if (!String.IsNullOrEmpty(infos["VideoPlayer.Title"].ToString()))
                    {
                        _nowPlaying.MediaType = "Movie";
                    }
                    else
                    {
                        _nowPlaying.MediaType = "Unknown";
                        _nowPlaying.Title     = "";
                        _nowPlaying.IsPlaying = false;
                        _nowPlaying.IsPaused  = false;
                        _nowPlaying.Duration  = new TimeSpan();
                        _nowPlaying.Time      = new TimeSpan();
                    }

                    if (_nowPlaying.MediaType == "Movie" || _nowPlaying.MediaType == "TvShow")
                    {
                        infos2                    = (JsonObject)_parent.JsonCommand("VideoPlayer.GetTime", null);
                        _nowPlaying.Genre         = infos["VideoPlayer.Genre"].ToString();
                        _nowPlaying.Title         = infos["VideoPlayer.Title"].ToString();
                        _nowPlaying.Year          = Convert.ToInt32("0" + infos["VideoPlayer.Year"]);
                        _nowPlaying.SeasonNumber  = Convert.ToInt32("0" + infos["VideoPlayer.Season"]);
                        _nowPlaying.EpisodeNumber = Convert.ToInt32("0" + infos["VideoPlayer.Episode"]);
                        _nowPlaying.ShowTitle     = infos["VideoPlayer.TVShowTitle"].ToString();
                        _nowPlaying.Plot          = infos["VideoPlayer.Plot"].ToString();
                        _nowPlaying.Director      = infos["VideoPlayer.Director"].ToString();
                        _nowPlaying.Studio        = infos["VideoPlayer.Studio"].ToString();
                        _nowPlaying.Tagline       = infos["VideoPlayer.Tagline"].ToString();
                        _nowPlaying.Rating        = infos["VideoPlayer.Rating"].ToString();
                        if (_nowPlaying.FileName.StartsWith("stack://", StringComparison.OrdinalIgnoreCase))
                        {
                            var temp = _nowPlaying.FileName.Split(new[] { " , " }, StringSplitOptions.None);
                            var hash = Xbmc.Hash(temp[0].Replace("stack://", ""));
                            _nowPlaying.ThumbURL  = @"special://profile/Thumbnails/Video/" + hash[0] + "/" + hash + ".tbn";
                            _nowPlaying.FanartURL = @"special://profile/Thumbnails/Video/Fanart/" + Xbmc.Hash(_nowPlaying.FileName) + ".tbn";
                        }
                        else
                        {
                            var hash = Xbmc.Hash(_nowPlaying.FileName);
                            _nowPlaying.ThumbURL  = @"special://profile/Thumbnails/Video/" + hash[0] + "/" + hash + ".tbn";
                            _nowPlaying.FanartURL = @"special://profile/Thumbnails/Video/Fanart/" + hash + ".tbn";
                        }
                    }
                    if (_nowPlaying.MediaType == "Audio")
                    {
                        infos2             = (JsonObject)_parent.JsonCommand("AudioPlayer.GetTime", null);
                        _nowPlaying.Genre  = infos["MusicPlayer.Genre"].ToString();
                        _nowPlaying.Title  = infos["MusicPlayer.Title"].ToString();
                        _nowPlaying.Year   = Convert.ToInt32("0" + infos["MusicPlayer.Year"]);
                        _nowPlaying.Track  = Convert.ToInt32("0" + infos["MusicPlayer.TrackNumber"]);
                        _nowPlaying.Artist = infos["MusicPlayer.Artist"].ToString();
                        _nowPlaying.Album  = infos["MusicPlayer.Album"].ToString();
                        var hash = Xbmc.Hash(_nowPlaying.Album + _nowPlaying.Artist);
                        _nowPlaying.ThumbURL  = @"special://profile/Thumbnails/Music/" + hash[0] + "/" + hash + ".tbn";
                        _nowPlaying.FanartURL = @"special://profile/Thumbnails/Music/Fanart/" + hash + ".tbn";
                    }

                    if (infos2 != null)
                    {
                        _nowPlaying.IsPaused  = (bool)infos2["paused"];
                        _nowPlaying.IsPlaying = !(bool)infos2["paused"] && (bool)infos2["playing"];
                        _nowPlaying.Time      = new TimeSpan(0, 0, 0, Convert.ToInt32("0" + infos2["time"]));
                        _nowPlaying.Duration  = new TimeSpan(0, 0, 0, Convert.ToInt32("0" + infos2["total"]));
                    }

                    var percent = Math.Floor(100.0 * _nowPlaying.Time.TotalSeconds / _nowPlaying.Duration.TotalSeconds);
                    if (Double.IsNaN(percent))
                    {
                        percent = 0;
                    }
                    _nowPlaying.Progress = (int)percent;

                    var vol = (1 - Convert.ToDouble("0" + infos["Player.Volume"].ToString().Replace(" dB", "").Replace("-", "").Replace(".", ",")) / 60) * 100;

                    _nowPlaying.Volume  = (int)vol;
                    _nowPlaying.IsMuted = (vol == 0);

                    _parent.MpcLoaded = _nowPlaying.Duration == new TimeSpan(0, 0, 0, 1);
                }
            }
        }
コード例 #5
0
 public void ToggleMute()
 {
     if (_parent.MpcLoaded)
     {
         _parent.MpcHcRemote.ToggleMute();
     }
     else
     if (_parent.IsConnected())
     {
         _parent.AsyncJsonCommand("XBMC.ToggleMute", null);
     }
 }