Ejemplo n.º 1
0
 public static void UpdateDbRowWhereChanged(RssDnldInfo rss, DnLd existingRow)
 {
     if (existingRow.CastSummary != rss.CastSumry)
     {
         existingRow.CastSummary = safeLen(rss.CastSumry, 1023); existingRow.ErrLog += " Summary Changed+Updated."; if (existingRow.ErrLog.Length > 1020)
         {
             existingRow.ErrLog = existingRow.ErrLog.Substring(0, 1020);
         }
     }                                                                                                                                                                                                                                                        //  Trunkate(existingRow.ErrLog, 1023); }
     if (existingRow.CastFileLength != rss.CastFileLen)
     {
         existingRow.ErrLog +=
             $" File Len:  new {rss.CastFileLen} / {existingRow.CastFileLength} old. "; existingRow.CastFileLength = rss.CastFileLen; if (existingRow.ErrLog.Length > 1020)
         {
             existingRow.ErrLog = existingRow.ErrLog.Substring(0, 1020);
         }
     }                                                                                                                                                                                                                         // Trunkate(existingRow.ErrLog, 1023); }
     if (existingRow.AvailableLastDate != DateTime.Today)
     {
         existingRow.AvailableLastDate = DateTime.Today;
     }
     if (existingRow.IsStillOnline != true)
     {
         existingRow.IsStillOnline = true;
     }
 }
Ejemplo n.º 2
0
        bool SaveToDnldRow_IsDnldRequired(Feed feed, RssDnldInfo rss, out DnLd outDnLd) //string title, DateTime pubdate, string orgSrcUrl_, string altSrcUrl, string origLink_, string summary__, double ttlMinutes, long fileLen, string fnm)
        {
            lock (thisLock)
            {
                if (feed.LastCheckedAt != _now)
                {
                    feed.LastCheckedAt = _now;
                }
                if (feed.LastCastAt < rss.Published)
                {
                    feed.LastCastAt = rss.Published;
                }
                //if (db.DnLds.Count()== 0) db.DnLds.Load();

                //r existingLcRow = db.DnLds.FirstOrDefault(r => string.Compare(r.CastTitle, rss.CastTitle, true) == 0 && string.Compare(r.CastFilenameExt, rss.CasFilename, true) == 0); //unique in DB: filename and title ...but 5by5 has changed the filenames
                var existingLcRow = db.DnLds.FirstOrDefault(r => string.Compare(r.CastUrl, rss.OrgSrcUrl, true) == 0); //unique in DB: as of Jan 2015.
                //if (existingLcRow == null) Aug2016
                //{
                //  db.DnLds.Where(r => string.Compare(r.CastUrl, rss.OrgSrcUrl, true) == 0).Load();
                //  existingLcRow = db.DnLds.FirstOrDefault(r => string.Compare(r.CastUrl, rss.OrgSrcUrl, true) == 0);
                //}
                if (existingLcRow == null)
                {
                    var ndr = new DnLd
                    {
                        CastFileLength  = rss.CastFileLen,
                        CastFilenameExt = rss.CasFilename,
                        CastSummary     = safeLen(rss.CastSumry, 1023).Replace("\n\n", Environment.NewLine), // string.IsNullOrEmpty(rss.CastSumry) ? "" : rss.CastSumry.Length >= 1023 ? rss.CastSumry.Substring(0, 1023) : rss.CastSumry,
                        CastTitle       = rss.CastTitle,
                        CastUrl         = rss.OrgSrcUrl,
                        DnldStatusId    = "N",
                        FeedId          = feed.Id,
                        Feed            = feed,
                        IsDownloading   = false,
                        PublishedAt     = rss.Published,
                        ModifiedAt      = _now,
                        RowAddedAt      = _now,
                        RowAddedByPC    = Environment.MachineName,
                        ErrLog          = safeLen(string.IsNullOrWhiteSpace(rss.AltSrcUrl) ? "" :
                                                  $"{rss.AltSrcUrl} :alt|org: {rss.OrignLink}", 1000),
                        DurationMin       = rss.TtlMinuts,
                        TrgFileSortPrefix = "",
                        AvailableLastDate = DateTime.Today,
                        IsStillOnline     = true
                    };

                    db.DnLds.Add(ndr);
                    outDnLd = ndr;
                    return(feed.IsActive && !feed.IsDeleted);
                }
                else // updateExistingDnld:
                {
                    UpdateDbRowWhereChanged(rss, existingLcRow);

                    outDnLd = existingLcRow;

                    return(IsDownloadRequiredWrpr(existingLcRow));
                }
            }
        }
Ejemplo n.º 3
0
        async Task <DnLd> dnLd_AddOrUpdate(Feed feed, RssDnldInfo rss)
        {
            //await Task.Delay(3); //todo: resolve:   A second operation started on this context before a previous asynchronous operation completed. Use 'await' to ensure that any asynchronous operations have completed before calling another method on this context. Any instance members are not guaranteed to be thread safe.
            try
            {
                var existingLcRow = await _db.DnLds.FirstOrDefaultAsync(r => string.Compare(r.CastUrl, rss.OrgSrcUrl, true) == 0); // ??        _db.DnLds.FirstOrDefault(r => string.Compare(r.CastUrl, rss.OrgSrcUrl, true) == 0);    //cast url is unique in DB (as of Jan 2015)

                if (existingLcRow == null)
                {
                    var dnld = new DnLd
                    {
                        CastFileLength  = rss.CastFileLen,
                        CastFilenameExt = rss.CasFilename,
                        CastSummary     = PodCatcherViewModel.safeLen(rss.CastSumry, 2048).Replace("\n\n", Environment.NewLine), // string.IsNullOrEmpty(rss.CastSumry) ? "" : rss.CastSumry.Length >= 1023 ? rss.CastSumry.Substring(0, 1023) : rss.CastSumry,
                        CastTitle       = rss.CastTitle,
                        CastUrl         = rss.OrgSrcUrl,
                        DnldStatusId    = "N",
                        FeedId          = feed.Id,
                        Feed            = feed,
                        IsDownloading   = false,
                        PublishedAt     = rss.Published,
                        ModifiedAt      = _crlnTS,
                        RowAddedAt      = _crlnTS,
                        RowAddedByPC    = Environment.MachineName,
                        ErrLog          = PodCatcherViewModel.safeLen(string.IsNullOrWhiteSpace(rss.AltSrcUrl) ? "" :
                                                                      $"{rss.AltSrcUrl} :alt|org: \r\n{rss.OrignLink}", 1000),
                        DurationMin       = rss.TtlMinuts,
                        TrgFileSortPrefix = "",
                        AvailableLastDate = DateTime.Today,
                        IsStillOnline     = true,
                        DownloadedAt      = null,
                        RunTimeNote       = "New  DnLd row",
                    };

                    _db.DnLds.Add(dnld);

                    return(dnld);
                }
                else
                {
                    PodCatcherViewModel.UpdateDbRowWhereChanged(rss, existingLcRow);
                    return(existingLcRow);
                }
            }
            catch (Exception ex) { ex.Log(); }
            return(null);
        }