Example #1
0
        /// <summary>
        /// Create a new RssEpisodeItems object.
        /// </summary>
        /// <param name="rssEpisodeItemId">Initial value of the RssEpisodeItemId property.</param>
        /// <param name="releaseName">Initial value of the ReleaseName property.</param>
        /// <param name="season">Initial value of the Season property.</param>
        /// <param name="episode">Initial value of the Episode property.</param>
        /// <param name="download">Initial value of the Download property.</param>
        /// <param name="pubDate">Initial value of the PubDate property.</param>
        /// <param name="added">Initial value of the Added property.</param>
        /// <param name="enclosureLength">Initial value of the EnclosureLength property.</param>
        /// <param name="enclosureUrl">Initial value of the EnclosureUrl property.</param>
        public static RssEpisodeItems CreateRssEpisodeItems(global::System.Int32 rssEpisodeItemId, global::System.String releaseName, global::System.Int32 season, global::System.Int32 episode, global::System.Boolean download, global::System.DateTime pubDate, global::System.DateTime added, global::System.Int64 enclosureLength, global::System.String enclosureUrl)
        {
            RssEpisodeItems rssEpisodeItems = new RssEpisodeItems();

            rssEpisodeItems.RssEpisodeItemId = rssEpisodeItemId;
            rssEpisodeItems.ReleaseName      = releaseName;
            rssEpisodeItems.Season           = season;
            rssEpisodeItems.Episode          = episode;
            rssEpisodeItems.Download         = download;
            rssEpisodeItems.PubDate          = pubDate;
            rssEpisodeItems.Added            = added;
            rssEpisodeItems.EnclosureLength  = enclosureLength;
            rssEpisodeItems.EnclosureUrl     = enclosureUrl;
            return(rssEpisodeItems);
        }
Example #2
0
 /// <summary>
 /// Deprecated Method for adding a new object to the RssEpisodeItems EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToRssEpisodeItems(RssEpisodeItems rssEpisodeItems)
 {
     base.AddObject("RssEpisodeItems", rssEpisodeItems);
 }
Example #3
0
        private XCData GetContent(RssEpisodeItems item)
        {
            string imgUrl = "http://mums.chsk.se/image/episode/" + item.RssEpisodeItemId;

            string html = string.Format(
                "<a href=\"{0}\"><img src=\"{0}\" alt=\"{1}\" /></a><p>Tillagd {2:dddd\\e\\n \\d\\e\\n d MMMM, HH:mm}</p>",
                imgUrl,
                item.ShowName + " (id:" + item.RssEpisodeItemId + ")",
                item.Added
            );

            return new XCData(html);
        }
Example #4
0
        private static void ProcessEpisode(MumsDataContext ctx, ParsedEpisode item, bool skip = false)
        {
            var split = item.ShowName.Trim()
                .Split(new char[] { ' ', '[', ']' }, StringSplitOptions.RemoveEmptyEntries)
                .Select(s => s.Replace('"', ' '));

            var matches = ctx.ExecuteStoreQuery<RssEpisodeItems>(
                "SELECT * FROM RssEpisodeItems WHERE Season={0} AND Episode={1} AND (ReleaseName={2} OR EnclosureUrl={3} OR FREETEXT(ReleaseName, {4}))",
                item.Season,
                item.Episode,
                item.ReleaseName,
                item.TorrentUrl.ToString(),
                string.Join(" AND ", split)
            ).AsQueryable();

            var entity = new RssEpisodeItems
            {
                Episode = item.Episode,
                Season = item.Season,
                ReleaseName = item.ReleaseName,
                PubDate = item.PubDate,
                Added = DateTime.Now,
                EnclosureUrl = item.TorrentUrl.ToString(),
                EnclosureLength = item.TorrentSize,
                SourceUrl = item.SourceUrl.ToString(),
                ShowName = item.ShowName.Replace('.', ' ').Trim()
            };

            var duplicate = matches.FirstOrDefault();

            if (duplicate != null)
            {
                // I am only interested in adding an item if there is no item with that releasename yet.
                // This is because the more duplicates of the same episode with different releasenames there are,
                // the greater the chance of identifying another duplicate.
                bool exists = ctx.RssEpisodeItems.Any(i => i.ReleaseName == entity.ReleaseName);
                Logging.PrintDuplicate(entity.ReleaseName);

                if (exists)
                    return;

                entity.DuplicateOf = duplicate.RssEpisodeItemId;
                Duplicates++;
            }
            else
            {
                Logging.PrintDownloaded(entity.ReleaseName);
                Downloads++;
                entity.Download = true;
            }

            if (skip)
                entity.Download = false;

            ctx.RssEpisodeItems.AddObject(entity);
            ctx.SaveChanges();

            if (entity.Download)
                Thread.Sleep(180 * 1000); // wait for the full-text index to refresh (180 seconds)
        }
Example #5
0
 /// <summary>
 /// Create a new RssEpisodeItems object.
 /// </summary>
 /// <param name="rssEpisodeItemId">Initial value of the RssEpisodeItemId property.</param>
 /// <param name="releaseName">Initial value of the ReleaseName property.</param>
 /// <param name="season">Initial value of the Season property.</param>
 /// <param name="episode">Initial value of the Episode property.</param>
 /// <param name="download">Initial value of the Download property.</param>
 /// <param name="pubDate">Initial value of the PubDate property.</param>
 /// <param name="added">Initial value of the Added property.</param>
 /// <param name="enclosureLength">Initial value of the EnclosureLength property.</param>
 /// <param name="enclosureUrl">Initial value of the EnclosureUrl property.</param>
 public static RssEpisodeItems CreateRssEpisodeItems(global::System.Int32 rssEpisodeItemId, global::System.String releaseName, global::System.Int32 season, global::System.Int32 episode, global::System.Boolean download, global::System.DateTime pubDate, global::System.DateTime added, global::System.Int64 enclosureLength, global::System.String enclosureUrl)
 {
     RssEpisodeItems rssEpisodeItems = new RssEpisodeItems();
     rssEpisodeItems.RssEpisodeItemId = rssEpisodeItemId;
     rssEpisodeItems.ReleaseName = releaseName;
     rssEpisodeItems.Season = season;
     rssEpisodeItems.Episode = episode;
     rssEpisodeItems.Download = download;
     rssEpisodeItems.PubDate = pubDate;
     rssEpisodeItems.Added = added;
     rssEpisodeItems.EnclosureLength = enclosureLength;
     rssEpisodeItems.EnclosureUrl = enclosureUrl;
     return rssEpisodeItems;
 }
Example #6
0
 /// <summary>
 /// Deprecated Method for adding a new object to the RssEpisodeItems EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToRssEpisodeItems(RssEpisodeItems rssEpisodeItems)
 {
     base.AddObject("RssEpisodeItems", rssEpisodeItems);
 }