Exemplo n.º 1
0
 private async Task<HtmlDocument> Load(EDish edish, string url, uint level, string path, object userData)
 {
     return await Task.Run(() =>
     {
         var count = 0;
         while (true)
         {
             try
             {
                 return edish.dish.Load(url, level, path, userData, count++);
             }
             catch (Exception ex)
             {
                 DumpException(ex);
                 if (count > retryCount)
                 {
                     DumpException(new Exception("too much wrong"));
                     return null;
                 }
             }
         }
     });
 }
Exemplo n.º 2
0
        private async Task EatPage(EDish edish, string url, uint level, string path, object userData)
        {
            var doc = await Load(edish, url, level, path, userData);

            if (doc == null)
                return;

            if (level > edish.settings.Level)
                throw new Exception("level");

            if (level == edish.settings.Level)
            {
                if (!String.IsNullOrWhiteSpace(edish.settings.Ext))
                    path = Path.ChangeExtension(path, edish.settings.Ext);
                try
                {
                    edish.dish.Eat(doc, url, path, userData);
                }
                catch (Exception ex)
                {
                    DumpException(ex);
                }

                return;
            }

            await EatPage(edish, doc, url, level, path, userData);
        }
Exemplo n.º 3
0
        private async Task EatPage(EDish edish, HtmlDocument html, string url, uint level, string path, object userData)
        {
            List<Index> index = null;
            try
            {
                index = edish.dish.GetIndex(html, url, level, path, userData);
            }
            catch (Exception ex)
            {
                DumpException(ex);
            }
            if (index == null)
                return;
            foreach (var i in index)
            {
                string newPath;
                if (i.name.StartsWith(hyphen))
                {
                    newPath = path + i.name;
                }
                else
                {
                    newPath =  Path.Combine(path, i.name);
                }

                await EatPage(edish, i.url, i.level, newPath, i.userData);
            }
        }