/// <summary>
        /// Returns a user rating overlay to display on a user shout
        /// </summary>
        internal static RatingOverlayImage GetRatingOverlay(TraktShout.UserRating userRating)
        {
            RatingOverlayImage ratingOverlay = RatingOverlayImage.None;

            if (userRating.AdvancedRating == 0 && userRating.Rating != "false")
            {
                if (userRating.Rating == "love") ratingOverlay = RatingOverlayImage.Love;
                if (userRating.Rating == "hate") ratingOverlay = RatingOverlayImage.Hate;
            }
            else if (userRating.AdvancedRating > 0)
            {
                // do extra check to confirm new skin images exist
                // if not fall back to basic overlays
                if (!File.Exists(GUIGraphicsContext.Skin + string.Format(@"\Media\traktHeart{0}.png", userRating.AdvancedRating)))
                {
                    if (userRating.AdvancedRating > 5)
                        ratingOverlay = RatingOverlayImage.Love;
                    else if (userRating.AdvancedRating >= 1)
                        ratingOverlay = RatingOverlayImage.Hate;
                }
                else
                    ratingOverlay = (RatingOverlayImage)userRating.AdvancedRating;
            }

            return ratingOverlay;
        }
        private void PublishShoutSkinProperties(TraktShout shout)
        {
            if (shout == null) return;

            SetProperty("#Trakt.User.About", shout.User.About);
            SetProperty("#Trakt.User.Age", shout.User.Age);
            SetProperty("#Trakt.User.Avatar", shout.User.Avatar);
            SetProperty("#Trakt.User.AvatarFileName", shout.User.AvatarFilename);
            SetProperty("#Trakt.User.FullName", shout.User.FullName);
            SetProperty("#Trakt.User.Gender", shout.User.Gender);
            SetProperty("#Trakt.User.JoinDate", shout.User.JoinDate.FromEpoch().ToLongDateString());
            SetProperty("#Trakt.User.Location", shout.User.Location);
            SetProperty("#Trakt.User.Protected", shout.User.Protected);
            SetProperty("#Trakt.User.Url", shout.User.Url);
            SetProperty("#Trakt.User.Username", shout.User.Username);

            SetProperty("#Trakt.Shout.Inserted", shout.InsertedDate.FromEpoch().ToLongDateString());
            SetProperty("#Trakt.Shout.Spoiler", shout.Spoiler.ToString());
            if (TraktSettings.HideSpoilersOnShouts && shout.Spoiler)
            {
                SetProperty("#Trakt.Shout.Text", Translation.HiddenToPreventSpoilers);
            }
            else
            {
                SetProperty("#Trakt.Shout.Text", shout.Shout);
            }
        }
        private void PublishShoutSkinProperties(TraktShout shout)
        {
            if (shout == null) return;

            SetProperty("#Trakt.User.About", shout.User.About);
            SetProperty("#Trakt.User.Age", shout.User.Age);
            SetProperty("#Trakt.User.Avatar", shout.User.Avatar);
            SetProperty("#Trakt.User.AvatarFileName", shout.User.AvatarFilename);
            SetProperty("#Trakt.User.FullName", shout.User.FullName);
            SetProperty("#Trakt.User.Gender", shout.User.Gender);
            SetProperty("#Trakt.User.JoinDate", shout.User.JoinDate.FromEpoch().ToLongDateString());
            SetProperty("#Trakt.User.Location", shout.User.Location);
            SetProperty("#Trakt.User.Protected", shout.User.Protected);
            SetProperty("#Trakt.User.Url", shout.User.Url);
            SetProperty("#Trakt.User.Username", shout.User.Username);

            SetProperty("#Trakt.Shout.Inserted", shout.InsertedDate.FromEpoch().ToLongDateString());
            SetProperty("#Trakt.Shout.Text", shout.Shout);
        }
        private void PublishShoutSkinProperties(TraktShout shout)
        {
            if (shout == null) return;

            GUICommon.SetUserProperties(shout.User);

            SetProperty("#Trakt.Shout.Inserted", shout.InsertedDate.FromEpoch().ToLongDateString());
            SetProperty("#Trakt.Shout.Spoiler", shout.Spoiler.ToString());
            SetProperty("#Trakt.Shout.UserAdvancedRating", shout.UserRatings.AdvancedRating.ToString());
            SetProperty("#Trakt.Shout.UserRating", shout.UserRatings.Rating.ToString());
            SetProperty("#Trakt.Shout.Type", shout.Type);
            SetProperty("#Trakt.Shout.Id", shout.Id.ToString());
            SetProperty("#Trakt.Shout.Likes", shout.Likes.ToString());
            SetProperty("#Trakt.Shout.Replies", shout.Replies.ToString());

            if (TraktSettings.HideSpoilersOnShouts && shout.Spoiler)
            {
                SetProperty("#Trakt.Shout.Text", Translation.HiddenToPreventSpoilers);
            }
            else
            {
                SetProperty("#Trakt.Shout.Text", System.Web.HttpUtility.HtmlDecode(shout.Shout.RemapHighOrderChars()).StripHTML());
            }
        }