Пример #1
0
 public override IMediaFolder Transform(IMediaFolder Root)
 {
   var root = new VirtualClonedFolder(Root);
   var series = new SimpleKeyedVirtualFolder(root, "Series");
   SortFolder(root, series);
   foreach (var f in series.ChildFolders.ToList()) {
     if (f.ChildCount < 2) {
       foreach (var file in f.ChildItems) {
         root.AddResource(file);
       }
       continue;
     }
     var fsmi = f as VirtualFolder;
     root.AdoptFolder(fsmi);
   }
   if (!cascade || root.ChildFolders.LongCount() <= 50) {
     return root;
   }
   var cascaded = new DoubleKeyedVirtualFolder(root, "Series");
   foreach (var i in root.ChildFolders.ToList()) {
     var folder = cascaded.GetFolder(i.Title.StemCompareBase().Substring(0, 1).ToUpper());
     folder.AdoptFolder(i);
   }
   foreach (var i in root.ChildItems.ToList()) {
     var folder = cascaded.GetFolder(i.Title.StemCompareBase().Substring(0, 1).ToUpper());
     folder.AddResource(i);
   }
   return cascaded;
 }
Пример #2
0
   protected override void SortFolder(IMediaFolder folder,
 SimpleKeyedVirtualFolder series)
   {
       foreach (var f in folder.ChildFolders.ToList()) {
       SortFolder(f, series);
         }
         foreach (var i in folder.ChildItems.ToList()) {
       try {
         var title = i.Title;
         if (string.IsNullOrWhiteSpace(title)) {
       throw new Exception("No title");
         }
         var m = regSites.Match(title);
         if (!m.Success) {
       throw new Exception("No match");
         }
         var site = m.Groups["site"].Value;
         if (string.IsNullOrEmpty(site)) {
       throw new Exception("No site");
         }
         site = site.Replace(" ", "").Replace("\t", "").Replace("-", "");
         site = regNumberStrip.Replace(site, string.Empty).TrimEnd();
         if (!regWord.IsMatch(site)) {
       throw new Exception("Not a site");
         }
         folder.RemoveResource(i);
         series.GetFolder(site.StemNameBase()).AddResource(i);
       }
       catch (Exception ex) {
         DebugFormat("{0} - {1}", ex.Message, i.Title);
         folder.RemoveResource(i);
         series.AddResource(i);
       }
         }
   }
Пример #3
0
        private static void SortFolder(VirtualFolder folder, SimpleKeyedVirtualFolder titles)
        {
            foreach (var f in folder.ChildFolders.ToList()) {
            SortFolder(f as VirtualFolder, titles);
              }

              foreach (var c in folder.ChildItems.ToList()) {
            var pre = GetTitle(c);
            pre = pre[0].ToString().ToUpperInvariant();
            titles.GetFolder(pre).AddResource(c);
            folder.RemoveResource(c);
              }
        }
Пример #4
0
 public override IMediaFolder Transform(IMediaFolder Root)
 {
     var root = new VirtualClonedFolder(Root);
       var titles = new SimpleKeyedVirtualFolder(root, "titles");
       SortFolder(root, titles);
       foreach (var i in root.ChildFolders.ToList()) {
     root.ReleaseFolder(i);
       }
       foreach (var i in titles.ChildFolders.ToList()) {
     if (i.ChildCount > 100) {
       _logger.ErrorFormat("Partioning folder {0}", i.Title);
       PartitionChildren(i as VirtualFolder, new Prefixer());
     }
     root.AdoptFolder(i);
       }
       return root;
 }
Пример #5
0
        public override IMediaFolder Transform(IMediaFolder oldRoot)
        {
            var root = new VirtualClonedFolder(oldRoot);
              var sorted = new SimpleKeyedVirtualFolder(root, Name);
              SortFolder(root, sorted);
              DebugFormat("sort {0} - {1}", sorted.ChildFolders.Count(), sorted.ChildItems.Count());
              DebugFormat("root {0} - {1}", root.ChildFolders.Count(), root.ChildItems.Count());
              foreach (var f in sorted.ChildFolders.ToList()) {
            if (f.ChildCount < 2) {
              foreach (var file in f.ChildItems) {
            root.AddResource(file);
              }
              continue;
            }
            var fsmi = f as VirtualFolder;
            root.AdoptFolder(fsmi);
              }
              foreach (var f in sorted.ChildItems.ToList()) {
            root.AddResource(f);
              }
              DebugFormat("merg {0} - {1}", root.ChildFolders.Count(), root.ChildItems.Count());
              MergeFolders(root, root);
              DebugFormat("done {0} - {1}", root.ChildFolders.Count(), root.ChildItems.Count());

              if (!cascade || root.ChildFolders.LongCount() <= 50) {
            return root;
              }
              var cascaded = new DoubleKeyedVirtualFolder(root, "Series");
              foreach (var i in root.ChildFolders.ToList()) {
            var folder = cascaded.GetFolder(i.Title.StemCompareBase().Substring(0, 1).ToUpper());
            folder.AdoptFolder(i);
              }
              foreach (var i in root.ChildItems.ToList()) {
            var folder = cascaded.GetFolder(i.Title.StemCompareBase().Substring(0, 1).ToUpper());
            folder.AddResource(i);
              }
              return cascaded;
        }
Пример #6
0
 private static void SortFolder(IMediaFolder folder,
                                SimpleKeyedVirtualFolder series)
 {
   foreach (var f in folder.ChildFolders.ToList()) {
     SortFolder(f, series);
   }
   foreach (var i in folder.ChildItems.ToList()) {
     var title = i.Title;
     if (string.IsNullOrWhiteSpace(title)) {
       continue;
     }
     var m = re_series.Match(title);
     if (!m.Success) {
       continue;
     }
     var ser = m.Groups[1].Value;
     if (string.IsNullOrEmpty(ser)) {
       continue;
     }
     series.GetFolder(ser.StemNameBase()).AddResource(i);
     folder.RemoveResource(i);
   }
 }
Пример #7
0
   protected abstract void SortFolder(IMediaFolder folder,
 SimpleKeyedVirtualFolder series);