Beispiel #1
0
 /// <summary>
 ///     Generates the skip filename for a media item.
 /// </summary>
 private string SkipFileNameFromMedia(PlayOnVideo media)
 {
     var temp = String.Format("{0} - {1}.playpass.skip", media.Series, media.MediaTitle);
     var re = new Regex("[<>:\"/\\|?*]");
     temp = re.Replace(temp, "_").TrimStart(' ', '-');
     return Path.Combine(_skipFilePath, temp);
 }
Beispiel #2
0
 public bool CanQueueMedia(PlayOnVideo media, out string message)
 {
     var retValue = false;
     if (_queueList.MediaInList(media))
         message = "Already recorded or skipped.";
     else if (QueueCountLimit > 0 && QueueCountLimit <= _queuedCount)
         message = "Queue limit reached.";
     else if (QueueDurationLimit.Ticks > 0 && QueueDurationLimit <= _queuedDuration.Add(RunTimeToTimeSpan(media.RunTime)))
         message = "Queue duration limit reached.";
     else
     {
         message = "";
         retValue = true;
     }
     return retValue;
 }
Beispiel #3
0
        /// <summary>
        ///     Attempts to queue this video item in PlayLater and indicates the result.
        /// </summary>
        public PlayOnConstants.QueueVideoResult QueueMedia(PlayOnVideo media)
        {
            if (media.PlayLaterUrl == "")
            {
                return(PlayOnConstants.QueueVideoResult.PlayLaterNotFound);
            }
            var doc     = XmlRequest(media.PlayLaterUrl);
            var success = (Util.GetNodeInnerText(doc.SelectSingleNode("result/status")) == "true");
            var message = Util.GetNodeInnerText(doc.SelectSingleNode("result/msg"));

            if (success)
            {
                return(PlayOnConstants.QueueVideoResult.Success);
            }
            if (message.IndexOf("already", StringComparison.Ordinal) > -1)
            {
                return(PlayOnConstants.QueueVideoResult.AlreadyInQueue);
            }
            return(PlayOnConstants.QueueVideoResult.Failed);
        }
Beispiel #4
0
        /// <summary>
        /// Returns a PlayOnItem based on the data in an XmlNode.
        /// </summary>
        public PlayOnItem GetItem(XmlNode Node)
        {
            string     NodeType = Util.GetNodeAttributeValue(Node, "type");
            PlayOnItem NewItem;

            if (Node.Name == "catalog")
            {
                NewItem = new PlayOnCatalog(this);
            }
            else if (NodeType == "folder")
            {
                NewItem = new PlayOnFolder(this);
            }
            else if (NodeType == "video")
            {
                NewItem = new PlayOnVideo(this);
            }
            else
            {
                throw new Exception(String.Format("Unhandled node type: {0}", NodeType));
            }
            NewItem.LoadFromNode(Node);
            return(NewItem);
        }
Beispiel #5
0
        /// <summary>
        ///     Returns a PlayOnItem based on the data in an XmlNode.
        /// </summary>
        private PlayOnItem GetItem(XmlNode node)
        {
            var        nodeType = Util.GetNodeAttributeValue(node, "type");
            PlayOnItem newItem;

            if (node.Name == "catalog")
            {
                newItem = new PlayOnCatalog(this);
            }
            else if (nodeType == "folder")
            {
                newItem = new PlayOnFolder(this);
            }
            else if (nodeType == "video")
            {
                newItem = new PlayOnVideo(this);
            }
            else
            {
                throw new Exception(String.Format("Unhandled node type: {0}", nodeType));
            }
            newItem.LoadFromNode(node);
            return(newItem);
        }
Beispiel #6
0
 /// <summary>
 ///     Returns a PlayOnItem based on the data in an XmlNode.
 /// </summary>
 private PlayOnItem GetItem(XmlNode node)
 {
     var nodeType = Util.GetNodeAttributeValue(node, "type");
     PlayOnItem newItem;
     if (node.Name == "catalog")
         newItem = new PlayOnCatalog(this);
     else if (nodeType == "folder")
         newItem = new PlayOnFolder(this);
     else if (nodeType == "video")
         newItem = new PlayOnVideo(this);
     else
         throw new Exception(String.Format("Unhandled node type: {0}", nodeType));
     newItem.LoadFromNode(node);
     return newItem;
 }
Beispiel #7
0
 /// <summary>
 ///     Attempts to queue this video item in PlayLater and indicates the result.
 /// </summary>
 public PlayOnConstants.QueueVideoResult QueueMedia(PlayOnVideo media)
 {
     if (media.PlayLaterUrl == "")
         return PlayOnConstants.QueueVideoResult.PlayLaterNotFound;
     var doc = XmlRequest(media.PlayLaterUrl);
     var success = (Util.GetNodeInnerText(doc.SelectSingleNode("result/status")) == "true");
     var message = Util.GetNodeInnerText(doc.SelectSingleNode("result/msg"));
     if (success)
         return PlayOnConstants.QueueVideoResult.Success;
     if (message.IndexOf("already", StringComparison.Ordinal) > -1)
         return PlayOnConstants.QueueVideoResult.AlreadyInQueue;
     return PlayOnConstants.QueueVideoResult.Failed;
 }
Beispiel #8
0
 /// <summary>
 ///     Generates the skip filename for a media item.
 /// </summary>
 private static string KeyFromMedia(PlayOnVideo media)
 {
     return media.Series + " - " + media.MediaTitle;
 }
Beispiel #9
0
 /// <summary>
 ///     Indicates if a skip file exists for the supplied media item.
 /// </summary>
 public bool MediaInList(PlayOnVideo media)
 {
     return _list.Contains(KeyFromMedia(media));
 }
Beispiel #10
0
 /// <summary>
 ///     Adds the supplied Media item to the list of already queued media.
 /// </summary>
 public void AddMediaToList(PlayOnVideo media)
 {
     if (MediaInList(media))
         return;
     _list.Add(KeyFromMedia(media));
 }
Beispiel #11
0
 /// <summary>
 ///     Indicates if a skip file exists for the supplied media item.
 /// </summary>
 public bool MediaInList(PlayOnVideo media)
 {
     return File.Exists(SkipFileNameFromMedia(media));
 }
Beispiel #12
0
 /// <summary>
 ///     Adds the supplied Media item to the list of already queued media.
 /// </summary>
 public void AddMediaToList(PlayOnVideo media)
 {
     var skipFileName = SkipFileNameFromMedia(media);
     var fs = new FileStream(skipFileName, FileMode.CreateNew);
     fs.Dispose();
 }
Beispiel #13
0
 /// <summary>
 ///     Checks to see if the item has already been recorded.  If not, it will queue the video for recording in PlayLater.
 /// </summary>
 private void QueueMedia(PlayOnVideo media)
 {
     var success = false;
     string message;
     if (SkipMode)
     {
         message = "Manually skipped.";
         _queueValidator.AddMediaToQueueList(media);
     }
     else if (_queueValidator.CanQueueMedia(media, out message))
     {
         if (!QueueMode)
         {
             success = true;
             message = "Pending queue mode.";
             _queueValidator.AddMediaToCounts(media);
         }
         else
         {
             try
             {
                 var queueResult = _playOn.QueueMedia(media);
                 if (queueResult == PlayOnConstants.QueueVideoResult.PlayLaterNotFound)
                     message = "PlayLater queue link not found. PlayLater may not be running.";
                 else if (queueResult == PlayOnConstants.QueueVideoResult.AlreadyInQueue)
                     message = "Already queued.";
                 success = (queueResult == PlayOnConstants.QueueVideoResult.Success);
                 if (success)
                     _queueValidator.AddMediaToQueueList(media);
             }
             catch (Exception ex)
             {
                 message = ex.Message;
             }
         }
     }
     _logManager.Log("{0}{1}", (success ? "Queued" : "Skipped"), (message == "" ? "" : ": " + message));
 }
Beispiel #14
0
 public void AddMediaToQueueList(PlayOnVideo media)
 {
     _queueList.AddMediaToList(media);
     AddMediaToCounts(media);
 }
Beispiel #15
0
 public void AddMediaToCounts(PlayOnVideo media)
 {
     _queuedCount++;
     _queuedDuration = _queuedDuration.Add(RunTimeToTimeSpan(media.RunTime));
 }