示例#1
0
        public IActionResult Edit(int id)
        {
            DBModel    db    = new DBModel();
            NovelModel novel = db.SelectOneNovel(id.ToString());

            return(View(novel));
        }
示例#2
0
        public void MostFamous()
        {
            DBModel    db         = new DBModel();
            NovelModel max_voting = db.GetMaxVoting();


            Assert.IsTrue(!max_voting.Id.Equals(null));
        }
示例#3
0
        public void GetNovelById()
        {
            string id = "1";

            DBModel    db    = new DBModel();
            NovelModel novel = db.SelectOneNovel(id);

            Assert.AreEqual(novel.Id, id);
        }
示例#4
0
        public ActionResult Index(string id, string chapter)
        {
            ViewBag.BookID  = id;
            ViewBag.Chapter = chapter;

            DBModel    db = new DBModel();
            NovelModel nv = db.SelectOneNovel(id);

            return(View(nv));
        }
示例#5
0
 public IActionResult Upload()
 {
     if (Request.Cookies["userID"] != null)
     {
         NovelModel nv = new NovelModel();
         nv.Owner = Request.Cookies["userID"];
         return(View(nv));
     }
     else
     {
         return(Redirect("/Home/Index/"));
     }
 }
示例#6
0
        public IActionResult Edit(NovelModel novel)
        {
            DBModel db        = new DBModel();
            bool    editCheck = db.EditNovel(Int32.Parse(novel.Id), novel);

            if (editCheck)
            {
                return(Redirect("/Novel/Detail/?id=" + novel.Id));
            }
            else
            {
                return(View());
            }
        }
示例#7
0
        public void AddingNovel()
        {
            NovelModel nv = new NovelModel();

            nv.Name        = "new novel";
            nv.Image_link  = "#";
            nv.Author      = "Tony";
            nv.Chap_number = 1;

            DBModel db    = new DBModel();
            bool    novel = db.AddNewNovel(nv);

            Assert.IsTrue(novel); //check that add new novel is success or not
        }
示例#8
0
        public void EditNovelInfor()
        {
            DBModel db = new DBModel();
            //get novel by id
            NovelModel nv = db.SelectOneNovel("1");
            //new infor, cannot change id
            NovelModel newNv = new NovelModel();

            newNv.Name   = "Hello";
            newNv.Author = "Fire";

            bool novel = db.EditNovel(nv, newNv);

            Assert.IsTrue(novel); //check that add new novel is success or not
        }
示例#9
0
        private List <ChapterDto> Get_ChapterList(NovelModel novelModel)
        {
            Document document;

            Download_PageContent(novelModel, 0, out document);

            if (document == null)
            {
                return(null);
            }

            var domainPattern = @"^(?<domain>http://\w+.*?)/";
            var domainUrl     = Regex.Match(novelModel.MenuUrl, domainPattern).Groups["domain"].Value;

            var linkArray = document.GetAllElements().Where(x => x.TagName() == "a").ToList();
            var pattern   = @"(?<novelId>.*/)(?<chapterId>.*html$)";

            var chapterDtoList = new List <ChapterDto>();
            var chapterSortId  = novelModel.MaxChapterIndex;

            foreach (var element in linkArray)
            {
                var href = element.Attr("href");
                if (!element.HasText || !Regex.IsMatch(href, pattern))
                {
                    continue;
                }

                var chapterUrl = $"{domainUrl}{href}";
                var text       = element.Text();

                if (novelModel.Chapters.Any(x => x.Url.Equals(chapterUrl, StringComparison.CurrentCultureIgnoreCase)))
                {
                    continue;
                }

                chapterSortId++;
                chapterDtoList.Add(new ChapterDto
                {
                    Title  = text,
                    Url    = chapterUrl,
                    SortId = chapterSortId
                });
            }

            return(chapterDtoList);
        }
示例#10
0
        public IActionResult Upload(NovelModel novel)
        {
            if (novel.Name != null && novel.Author != null && novel.Link != null)
            {
                novel.upload_date = DateTime.Now;
                novel.Owner       = Request.Cookies["userID"].ToString();

                string image_sourceFile      = @"C:\Users\lythe\Desktop\" + novel.Image_link;
                string image_destinationFile = @"~/database/Image/" + novel.Image_link;

                string sourceFile      = @"C:\Users\lythe\Desktop\" + novel.Link;
                string destinationFile = "~/database/novel_book/" + novel.Link;

                System.IO.File.Copy(image_sourceFile, image_destinationFile, true);
                System.IO.File.Copy(sourceFile, destinationFile, true);

                DBModel db = new DBModel();

                int chap = 1;
                //get maximum chapter
                using (StreamReader sr = new StreamReader("~/database/novel_book/" + novel.Link))
                {
                    string line = sr.ReadLine(); //first is a chapter
                    while (line != null)
                    {
                        if (line.ToLower() == ("chapter " + chap))
                        {
                            chap += 1;
                        }

                        line = sr.ReadLine();
                    }
                }

                novel.Chap_number = chap - 1;

                db.AddNewNovel(novel);

                return(Redirect("/Home/Index/"));
            }
            else
            {
                return(Redirect("/Novel/Upload/"));
            }
        }
示例#11
0
        public IActionResult Index(string id, string chapter)
        {
            DBModel    db = new DBModel();
            NovelModel nv = db.SelectOneNovel(id);

            //increasing view
            nv.Viewer += 1;
            bool viewChecking = db.EditNovel(Int32.Parse(id), nv);

            ViewBag.BookID = id;

            if (chapter == null)
            {
                chapter = "1";
            }


            ViewBag.Chapter     = chapter;
            ViewBag.NextChapter = Int32.Parse(chapter) + 1;
            ViewBag.Previous    = (Int32.Parse(chapter) > 1) ? Int32.Parse(chapter) - 1 : Int32.Parse(chapter);
            int chap = 1;

            //get maximum chapter
            using (StreamReader sr = new StreamReader("./database/novel_book/" + nv.Link))
            {
                string line = sr.ReadLine(); //first is a chapter
                while (line != null)
                {
                    if (line.ToLower() == ("chapter " + chap))
                    {
                        chap += 1;
                    }

                    line = sr.ReadLine();
                }
            }
            if (ViewBag.NextChapter > chap - 1)
            {
                ViewBag.NextChapter = chap - 1;
            }

            return(View(nv));
        }
示例#12
0
        private void Download_PageContent(NovelModel novelModel, int retryCount, out Document document)
        {
            try
            {
                var connect = NSoupClient.Connect(novelModel.MenuUrl);
                document = connect.Get();
            }
            catch (Exception ex)
            {
                if (retryCount > 5)
                {
                    document = null;
                    return;
                }

                Thread.Sleep(3 * 1000);
                Download_PageContent(novelModel, ++retryCount, out document);
                InvokeScriptFunction(() => { Document.InvokeScript("show_message", new[] { ex.Message, "danger" }); });
            }
        }
示例#13
0
 // Use this for initialization
 void Start()
 {
     MyNovelModel = GetComponent<NovelModel>();
 }
示例#14
0
        public void Parse_Menu_Url(string url)
        {
            var domainUrl = "http://www.biquge.com.tw";

            Document document = null;

            try
            {
                var connect = NSoupClient.Connect(url);
                document = connect.Get();
            }
            catch (Exception ex)
            {
                InvokeScriptFunction(() =>
                {
                    Document.InvokeScript("show_message", new[] { ex.Message, "danger" });
                });
                return;
            }

            var linkArray = document?.GetAllElements().Where(x => x.TagName() == "a").ToList();

            var novelName = document?.GetElementById("info").Children.First.Text();

            CurrentBrowser.Parent.Text = novelName;

            using (var uow = new NovelUnitOfWork())
            {
                uow.BeginTransaction();

                var service    = new NovelDomainService(uow);
                var novelModel = service.GetNovelModelByUrl(url);
                var isUpdate   = novelModel != null;
                if (novelModel == null)
                {
                    novelModel = new NovelModel {
                        Chapters = new List <ChapterModel>()
                    };
                }

                novelModel.MenuUrl   = url;
                novelModel.NovelName = novelName;

                int chapterCount = 0;
                var pattern      = @"/\d+_\d+/\d+.html";

                foreach (Element element in linkArray)
                {
                    var href = element.Attr("href");
                    if (!element.HasText || !Regex.IsMatch(href, pattern))
                    {
                        continue;
                    }

                    chapterCount++;

                    var chapterUrl = $"{domainUrl}{href}";
                    var text       = element.Text();

                    if (novelModel.Chapters.Any(x => x.Url.Equals(chapterUrl, StringComparison.CurrentCultureIgnoreCase)))
                    {
                        continue;
                    }

                    novelModel.Chapters.Add(new ChapterModel
                    {
                        Title           = text,
                        Url             = chapterUrl,
                        SortId          = chapterCount,
                        LastUpdatedTime = DateTime.Now
                    });
                }

                novelModel.MaxChapterIndex = chapterCount;

                AppManagement.Cache.Set(url, novelModel);

                if (!novelModel.Chapters.Any())
                {
                    InvokeScriptFunction(() =>
                    {
                        Document.InvokeScript("show_message", new[] { "没有解析出任何内容", "danger" });
                    });
                }

                var argsStr = JsonConvert.SerializeObject(novelModel.Chapters.Where(x => x.Id <= 0)
                                                          .OrderBy(x => x.SortId).Select(x => new
                {
                    x.Url,
                    x.Title
                }).ToList());

                InvokeScriptFunction("loadMenu", argsStr);

                if (isUpdate)
                {
                    return;
                }

                service.Add(novelModel);
            }
        }