From 9b6334bab65ba6fa8b7906595a92b3b87e036c27 Mon Sep 17 00:00:00 2001 From: fengyuecanzhu <1021300691@qq.com> Date: Mon, 1 Feb 2021 19:49:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B9=A6=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 +- app/src/main/assets/updatelog.fy | 11 +- .../myreader/application/MyApplication.java | 8 +- .../fycz/myreader/application/SysManager.java | 1 + .../xyz/fycz/myreader/enums/BookSource.java | 3 + .../ui/activity/BookDetailedActivity.java | 1 + .../myreader/ui/fragment/FindFragment.java | 4 +- .../crawler/read/BiJianReadCrawler.java | 132 ++++++++++++++ .../webapi/crawler/read/MiQuReadCrawler.java | 2 +- .../crawler/read/WoLongReadCrawler.java | 135 ++++++++++++++ .../crawler/read/YanQingLouReadCrawler.java | 165 ++++++++++++++++++ app/src/main/res/layout/fragment_find.xml | 8 +- app/src/main/res/values/strings.xml | 3 + app/src/main/resources/crawler.properties | 5 +- app/version_code.properties | 4 +- 15 files changed, 472 insertions(+), 19 deletions(-) create mode 100644 app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/BiJianReadCrawler.java create mode 100644 app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/WoLongReadCrawler.java create mode 100644 app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/YanQingLouReadCrawler.java diff --git a/README.md b/README.md index 9afb38a..5d3ab8a 100644 --- a/README.md +++ b/README.md @@ -2,20 +2,21 @@ 风月读书,一款开源、无广告的小说阅读软件。 -成品下载(v1.8.0):[https://fycz.lanzous.com/i4pMekkx9zc](https://fycz.lanzous.com/i4pMekkx9zc) +成品下载(v1.8.1):[https://fycz.lanzous.com/i5vu3l6pcuj](https://fycz.lanzous.com/i5vu3l6pcuj) [更新日志](./app/src/main/assets/updatelog.fy) #### 一、关于书源 -* 软件内置了25个书源如下: +* 软件内置了~~28~~(25)个书源如下: - * 23个网络小说书源:天籁小说、笔趣阁44、~~品书网~~、笔趣阁、 + * ~~26~~(23)个网络小说书源:天籁小说、笔趣阁44、~~品书网~~、笔趣阁、 全本小说、米趣小说、九桃小说、云中书库、 搜小说网、全小说网、~~奇奇小说~~、妙笔阁、 丹书铁券、小说旗、读一读网、飘天文学、 老幺小说、星星小说、时光小说、峡谷文学、 - 红尘小说、~~热血小说~~、传奇小说 + 红尘小说、~~热血小说~~、传奇小说、笔尖小说、 + 言情楼、卧龙小说 * 4个实体书书源:超星图书·实体、作品集·实体、99藏书·实体、100本·实体 * 如何自行制作并添加书源. diff --git a/app/src/main/assets/updatelog.fy b/app/src/main/assets/updatelog.fy index 34189c5..fbfbb98 100644 --- a/app/src/main/assets/updatelog.fy +++ b/app/src/main/assets/updatelog.fy @@ -1,8 +1,11 @@ +2020.02.01 风月读书v1.8.1 -1、内容替换规则支持备份与恢复 -2、优化规则列表左滑菜单交互 -3、修复书源搜小说网 -4、删除失效书源:品书网、奇奇小说、热血小说 +1、新增书源:笔尖小说、言情楼、卧龙小说 +2、内容替换规则支持备份与恢复 +3、优化规则列表左滑菜单交互 +4、修复书源搜小说网 +5、删除失效书源:品书网、奇奇小说、热血小说 +6、删除失效发现:小说旗 2021.01.19 风月读书v1.8.0 diff --git a/app/src/main/java/xyz/fycz/myreader/application/MyApplication.java b/app/src/main/java/xyz/fycz/myreader/application/MyApplication.java index 4b61024..3a34481 100644 --- a/app/src/main/java/xyz/fycz/myreader/application/MyApplication.java +++ b/app/src/main/java/xyz/fycz/myreader/application/MyApplication.java @@ -279,6 +279,7 @@ public class MyApplication extends Application { String updateContent = ""; String downloadLink = null; boolean isForceUpdate = false; + int forceUpdateVersion; StringBuilder s = new StringBuilder(); newestVersion = Integer.parseInt(contents[0].substring(contents[0].indexOf(":") + 1)); isForceUpdate = Boolean.parseBoolean(contents[1].substring(contents[1].indexOf(":") + 1)); @@ -294,6 +295,12 @@ public class MyApplication extends Application { spu.putString("splashImageUrl", contents[6].substring(contents[6].indexOf(":") + 1)); spu.putString("splashImageMD5", contents[7].substring(contents[7].indexOf(":") + 1)); + forceUpdateVersion = Integer.parseInt(contents[8].substring(contents[8].indexOf(":") + 1)); + spu.putInt("forceUpdateVersion", forceUpdateVersion); + + int versionCode = getVersionCode(); + + isForceUpdate = isForceUpdate && forceUpdateVersion > versionCode; if (!StringHelper.isEmpty(downloadLink)) { spu.putString(getmContext().getString(R.string.downloadLink), downloadLink); } else { @@ -304,7 +311,6 @@ public class MyApplication extends Application { s.append(string); s.append("\n"); } - int versionCode = getVersionCode(); Log.i("检查更新,最新版本", newestVersion + ""); if (newestVersion > versionCode) { MyApplication m = new MyApplication(); diff --git a/app/src/main/java/xyz/fycz/myreader/application/SysManager.java b/app/src/main/java/xyz/fycz/myreader/application/SysManager.java index a4b713b..207a877 100644 --- a/app/src/main/java/xyz/fycz/myreader/application/SysManager.java +++ b/app/src/main/java/xyz/fycz/myreader/application/SysManager.java @@ -124,6 +124,7 @@ public class SysManager { Log.d("SourceVersion", "" + 3); case 4: ReadCrawlerUtil.removeReadCrawler("qiqi", "rexue", "pinshu"); + ReadCrawlerUtil.addReadCrawler(BookSource.bijian, BookSource.yanqinglou, BookSource.wolong); Log.d("SourceVersion", "" + 4); } setting.setSourceVersion(APPCONST.SOURCE_VERSION); diff --git a/app/src/main/java/xyz/fycz/myreader/enums/BookSource.java b/app/src/main/java/xyz/fycz/myreader/enums/BookSource.java index cd3eb1f..70fe2ed 100644 --- a/app/src/main/java/xyz/fycz/myreader/enums/BookSource.java +++ b/app/src/main/java/xyz/fycz/myreader/enums/BookSource.java @@ -34,6 +34,9 @@ public enum BookSource { chuanqi(MyApplication.getApplication().getString(R.string.read_chuanqi)), xiagu(MyApplication.getApplication().getString(R.string.read_xiagu)), hongchen(MyApplication.getApplication().getString(R.string.read_hongchen)), + bijian(MyApplication.getApplication().getString(R.string.read_bijian)), + yanqinglou(MyApplication.getApplication().getString(R.string.read_yanqinglou)), + wolong(MyApplication.getApplication().getString(R.string.read_wolong)), chaoxing(MyApplication.getApplication().getString(R.string.read_chaoxing)), zuopin(MyApplication.getApplication().getString(R.string.read_zuopin)), cangshu99(MyApplication.getApplication().getString(R.string.read_cangshu99)), diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/BookDetailedActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/BookDetailedActivity.java index 00718ff..1a01018 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/activity/BookDetailedActivity.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/BookDetailedActivity.java @@ -458,6 +458,7 @@ public class BookDetailedActivity extends BaseActivity { @Override public void onError(Exception e) { + e.printStackTrace(); ToastUtils.showError("最新章节加载失败!"); } }); diff --git a/app/src/main/java/xyz/fycz/myreader/ui/fragment/FindFragment.java b/app/src/main/java/xyz/fycz/myreader/ui/fragment/FindFragment.java index a32886a..eb696b0 100644 --- a/app/src/main/java/xyz/fycz/myreader/ui/fragment/FindFragment.java +++ b/app/src/main/java/xyz/fycz/myreader/ui/fragment/FindFragment.java @@ -36,13 +36,13 @@ public class FindFragment extends BaseFragment { super.initClick(); binding.findRlQidianTop.setOnClickListener(v -> comeToBookstore(new QiDianMobileRank(false))); binding.findRlQidianNsTop.setOnClickListener(v -> comeToBookstore(new QiDianMobileRank(true))); - binding.findRlXs7Top.setOnClickListener(v -> comeToBookstore(new XS7Rank())); + //binding.findRlXs7Top.setOnClickListener(v -> comeToBookstore(new XS7Rank())); binding.findRlQidianSort.setOnClickListener(v -> comeToBookstore(new QiDianMobileRank(false, true))); binding.findRlQidianNsSort.setOnClickListener(v -> comeToBookstore(new QiDianMobileRank(true, true))); binding.findRlQb5Store.setOnClickListener(v -> comeToBookstore(new QB5ReadCrawler())); binding.findRlBen100Store.setOnClickListener(v -> comeToBookstore(new Ben100ReadCrawler())); binding.findRlMiaoquStore.setOnClickListener(v -> comeToBookstore(new MiaoBiReadCrawler())); - binding.findRlXs7Store.setOnClickListener(v -> comeToBookstore(new XS7ReadCrawler())); + //binding.findRlXs7Store.setOnClickListener(v -> comeToBookstore(new XS7ReadCrawler())); } diff --git a/app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/BiJianReadCrawler.java b/app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/BiJianReadCrawler.java new file mode 100644 index 0000000..3e763c1 --- /dev/null +++ b/app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/BiJianReadCrawler.java @@ -0,0 +1,132 @@ +package xyz.fycz.myreader.webapi.crawler.read; + +import android.text.Html; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.util.ArrayList; + +import xyz.fycz.myreader.entity.SearchBookBean; +import xyz.fycz.myreader.enums.BookSource; +import xyz.fycz.myreader.greendao.entity.Book; +import xyz.fycz.myreader.greendao.entity.Chapter; +import xyz.fycz.myreader.model.mulvalmap.ConcurrentMultiValueMap; +import xyz.fycz.myreader.webapi.crawler.base.BookInfoCrawler; +import xyz.fycz.myreader.webapi.crawler.base.ReadCrawler; + + +public class BiJianReadCrawler implements ReadCrawler { + public static final String NAME_SPACE = "http://www.bjcan.com"; + public static final String NOVEL_SEARCH = "http://www.bjcan.com/home/search/index.html?keyword={key}"; + public static final String CHARSET = "UTF-8"; + public static final String SEARCH_CHARSET = "UTF-8"; + + @Override + public String getSearchLink() { + return NOVEL_SEARCH; + } + + @Override + public String getCharset() { + return CHARSET; + } + + @Override + public String getNameSpace() { + return NAME_SPACE; + } + + @Override + public Boolean isPost() { + return false; + } + + @Override + public String getSearchCharset() { + return SEARCH_CHARSET; + } + + /** + * 从html中获取章节正文 + * + * @param html + * @return + */ + public String getContentFormHtml(String html) { + Document doc = Jsoup.parse(html); + Element divContent = doc.getElementsByClass("read-content").first(); + if (divContent != null) { + String content = Html.fromHtml(divContent.html()).toString(); + char c = 160; + String spaec = "" + c; + content = content.replace(spaec, " "); + return content; + } else { + return ""; + } + } + + /** + * 从html中获取章节列表 + * + * @param html + * @return + */ + public ArrayList getChaptersFromHtml(String html) { + ArrayList chapters = new ArrayList<>(); + Document doc = Jsoup.parse(html); + Element divList = doc.getElementsByClass("attentions").get(1); + Elements elementsByTag = divList.getElementsByTag("a"); + for (int i = 0; i < elementsByTag.size(); i++) { + Element a = elementsByTag.get(i); + String title = a.text(); + String url = a.attr("href"); + Chapter chapter = new Chapter(); + chapter.setNumber(i); + chapter.setTitle(title); + chapter.setUrl(url); + chapters.add(chapter); + } + return chapters; + } + + /** + * 从搜索html中得到书列表 + *
  • + * 大主宰:灵玖 + *
    大主宰:灵玖
    + *

    作者:霞露分类:其他连载中

    + *

    简介:她,身负系统,莫名来到了大主宰的时空,成为了聚灵族的最后族人。在她还对周围的情况一片模糊的时候,她遇到了林静这个小恶魔。拜林静所赐,她还遇到了武祖,成为了武柤的小徒弟。参与了灵路,遇到了牧尘和洛璃,她默默的在心中问着自己那一直在划水的系统:“你的活来了,说吧,我该干什么?”

    + * 小说详情 + *
  • + */ + public ConcurrentMultiValueMap getBooksFromSearchHtml(String html) { + ConcurrentMultiValueMap books = new ConcurrentMultiValueMap<>(); + Document doc = Jsoup.parse(html); + Elements divs = doc.getElementsByClass("book-list"); + Element div = divs.get(0); + Elements elementsByTag = div.getElementsByTag("li"); + for (int i = 0; i < elementsByTag.size(); i++) { + Element element = elementsByTag.get(i); + Elements as = element.getElementsByTag("a"); + Elements ps = element.getElementsByTag("p"); + Book book = new Book(); + book.setImgUrl(element.getElementsByTag("img").attr("src")); + book.setName(as.get(1).text()); + Elements spans = ps.get(0).getElementsByTag("span"); + book.setAuthor(spans.get(0).text()); + book.setType(spans.get(1).text().replace("分类:", "")); + book.setChapterUrl(as.get(2).attr("href")); + book.setDesc(ps.get(1).text()); + book.setNewestChapterTitle(""); + book.setSource(BookSource.bijian.toString()); + SearchBookBean sbb = new SearchBookBean(book.getName(), book.getAuthor()); + books.add(sbb, book); + } + return books; + } + +} diff --git a/app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/MiQuReadCrawler.java b/app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/MiQuReadCrawler.java index c868e7b..f0705e5 100644 --- a/app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/MiQuReadCrawler.java +++ b/app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/MiQuReadCrawler.java @@ -17,7 +17,7 @@ import java.util.ArrayList; public class MiQuReadCrawler implements ReadCrawler, BookInfoCrawler { - public static final String NAME_SPACE = "https://www.meegoq.com/"; + public static final String NAME_SPACE = "https://www.meegoq.com"; public static final String NOVEL_SEARCH = "https://www.meegoq.com/search.htm?keyword={key}"; public static final String CHARSET = "UTF-8"; public static final String SEARCH_CHARSET = "UTF-8"; diff --git a/app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/WoLongReadCrawler.java b/app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/WoLongReadCrawler.java new file mode 100644 index 0000000..d53bace --- /dev/null +++ b/app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/WoLongReadCrawler.java @@ -0,0 +1,135 @@ +package xyz.fycz.myreader.webapi.crawler.read; + +import android.text.Html; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.util.ArrayList; + +import xyz.fycz.myreader.entity.SearchBookBean; +import xyz.fycz.myreader.enums.BookSource; +import xyz.fycz.myreader.greendao.entity.Book; +import xyz.fycz.myreader.greendao.entity.Chapter; +import xyz.fycz.myreader.model.mulvalmap.ConcurrentMultiValueMap; +import xyz.fycz.myreader.webapi.crawler.base.ReadCrawler; + + +public class WoLongReadCrawler implements ReadCrawler { + public static final String NAME_SPACE = "http://www.paper027.com"; + public static final String NOVEL_SEARCH = "http://www.paper027.com/search.html?keyword={key}"; + public static final String CHARSET = "UTF-8"; + public static final String SEARCH_CHARSET = "UTF-8"; + + @Override + public String getSearchLink() { + return NOVEL_SEARCH; + } + + @Override + public String getCharset() { + return CHARSET; + } + + @Override + public String getNameSpace() { + return NAME_SPACE; + } + + @Override + public Boolean isPost() { + return false; + } + + @Override + public String getSearchCharset() { + return SEARCH_CHARSET; + } + + /** + * 从html中获取章节正文 + * + * @param html + * @return + */ + public String getContentFormHtml(String html) { + Document doc = Jsoup.parse(html); + Element divContent = doc.getElementById("contentsource"); + if (divContent != null) { + String content = Html.fromHtml(divContent.html()).toString(); + char c = 160; + String spaec = "" + c; + content = content.replace(spaec, " "); + return content; + } else { + return ""; + } + } + + /** + * 从html中获取章节列表 + * + * @param html + * @return + */ + public ArrayList getChaptersFromHtml(String html) { + ArrayList chapters = new ArrayList<>(); + Document doc = Jsoup.parse(html); + Element divList = doc.getElementsByClass("chapters").get(0); + Elements elementsByTag = divList.getElementsByTag("a"); + int j = 0; + for (int i = elementsByTag.size() - 1; i >= 0; i--) { + Element a = elementsByTag.get(i); + String title = a.text(); + String url = a.attr("href"); + Chapter chapter = new Chapter(); + chapter.setNumber(j++); + chapter.setTitle(title); + chapter.setUrl(url); + chapters.add(chapter); + } + return chapters; + } + + /** + * 从搜索html中得到书列表 +
    + +

    大主宰之混子日常

    +

    錯過过错 2019-08-06 19:14

    +
    +
    +

    作者很懒,什么也没有留下。...

    + +
    + */ + public ConcurrentMultiValueMap getBooksFromSearchHtml(String html) { + ConcurrentMultiValueMap books = new ConcurrentMultiValueMap<>(); + Document doc = Jsoup.parse(html); + Elements elementsByTag = doc.getElementsByClass("searchresult"); + for (int i = 0; i < elementsByTag.size(); i++) { + Element element = elementsByTag.get(i); + Elements as = element.getElementsByTag("a"); + Elements ps = element.getElementsByTag("p"); + Book book = new Book(); + book.setImgUrl(element.getElementsByTag("img").attr("src")); + book.setName(as.get(1).text()); + book.setAuthor(ps.get(0).getElementsByTag("span").get(0).text()); + book.setType(as.get(3).text()); + book.setChapterUrl(as.get(1).attr("href").replace("novel", "home/chapter/lists/id")); + book.setDesc(as.get(2).text()); + book.setNewestChapterTitle(""); + book.setSource(BookSource.wolong.toString()); + SearchBookBean sbb = new SearchBookBean(book.getName(), book.getAuthor()); + books.add(sbb, book); + } + return books; + } + +} diff --git a/app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/YanQingLouReadCrawler.java b/app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/YanQingLouReadCrawler.java new file mode 100644 index 0000000..16c876b --- /dev/null +++ b/app/src/main/java/xyz/fycz/myreader/webapi/crawler/read/YanQingLouReadCrawler.java @@ -0,0 +1,165 @@ +package xyz.fycz.myreader.webapi.crawler.read; + +import android.text.Html; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.util.ArrayList; + +import xyz.fycz.myreader.entity.SearchBookBean; +import xyz.fycz.myreader.enums.BookSource; +import xyz.fycz.myreader.greendao.entity.Book; +import xyz.fycz.myreader.greendao.entity.Chapter; +import xyz.fycz.myreader.model.mulvalmap.ConcurrentMultiValueMap; +import xyz.fycz.myreader.webapi.crawler.base.ReadCrawler; + + +public class YanQingLouReadCrawler implements ReadCrawler { + public static final String NAME_SPACE = "http://www.yanqinglou.com"; + public static final String NOVEL_SEARCH = "http://www.yanqinglou.com/Home/Search,action=search&q={key}"; + public static final String CHARSET = "UTF-8"; + public static final String SEARCH_CHARSET = "UTF-8"; + + @Override + public String getSearchLink() { + return NOVEL_SEARCH; + } + + @Override + public String getCharset() { + return CHARSET; + } + + @Override + public String getNameSpace() { + return NAME_SPACE; + } + + @Override + public Boolean isPost() { + return true; + } + + @Override + public String getSearchCharset() { + return SEARCH_CHARSET; + } + + /** + * 从html中获取章节正文 + * + * @param html + * @return + */ + public String getContentFormHtml(String html) { + Document doc = Jsoup.parse(html); + Element divContent = doc.getElementById("content"); + if (divContent != null) { + String content = Html.fromHtml(divContent.html()).toString(); + char c = 160; + String spaec = "" + c; + content = content.replace(spaec, " "); + return content; + } else { + return ""; + } + } + + /** + * 从html中获取章节列表 + * + * @param html + * @return + */ + public ArrayList getChaptersFromHtml(String html) { + ArrayList chapters = new ArrayList<>(); + Document doc = Jsoup.parse(html); + Element divList = doc.getElementsByClass("fulllistall").first(); + Elements elementsByTag = divList.getElementsByTag("a"); + for (int i = 0; i < elementsByTag.size(); i++) { + Element a = elementsByTag.get(i); + String title = a.text(); + String url = a.attr("href"); + Chapter chapter = new Chapter(); + chapter.setNumber(i); + chapter.setTitle(title); + chapter.setUrl(NAME_SPACE + url); + chapters.add(chapter); + } + return chapters; + } + + /** + * 从搜索html中得到书列表 +
    +
    斗罗之大主宰 +
    +

    斗罗之大主宰

    +
    作者:上弦666
    +
    分类:婚恋
    +
    更新到:最近更新>>
    +
    简介:叶辰,武魂,昊天锤的变异,大须弥锤!昊天锤本就是大陆第一器武魂,而武魂是大须弥锤的叶辰,会有多强?当
    +
    + +
    +
    + */ + public ConcurrentMultiValueMap getBooksFromSearchHtml(String html) { + ConcurrentMultiValueMap books = new ConcurrentMultiValueMap<>(); + Document doc = Jsoup.parse(html); + String bookName = doc.select("meta[property=og:novel:book_name]").attr("content"); + if ("".equals(bookName)) { + Element div = doc.getElementsByClass("keywords").first(); + Elements divs = div.getElementsByClass("bookbox"); + for (Element divBook : divs) { + Elements as = divBook.getElementsByTag("a"); + Book book = new Book(); + book.setName(as.get(1).text()); + book.setAuthor(as.get(2).text()); + book.setType(divBook.getElementsByClass("author").get(1).text().replace("分类:", "")); + book.setNewestChapterTitle(as.get(3).text().replace("最近更新>>", "")); + book.setDesc(divBook.getElementsByClass("update").first().text().replace("简介:", "")); + book.setImgUrl(divBook.getElementsByTag("img").attr("src")); + book.setChapterUrl(NAME_SPACE + as.get(0).attr("href")); + book.setSource(BookSource.yanqinglou.toString()); + SearchBookBean sbb = new SearchBookBean(book.getName(), book.getAuthor()); + books.add(sbb, book); + } + }else { + Book book = new Book(); + getBookInfo(doc, book); + SearchBookBean sbb = new SearchBookBean(book.getName(), book.getAuthor()); + books.add(sbb, book); + } + return books; + } + + private void getBookInfo(Document doc, Book book) { + String name = doc.select("meta[property=og:novel:book_name]").attr("content"); + book.setName(name); + + String author = doc.select("meta[property=og:novel:author]").attr("content"); + book.setAuthor(author); + + String type = doc.select("meta[property=og:novel:category]").attr("content"); + book.setType(type); + + String newestTitle = doc.select("meta[property=og:novel:latest_chapter_name]").attr("content"); + book.setNewestChapterTitle(newestTitle); + + String desc = doc.select("meta[property=og:description]").attr("content"); + book.setDesc(desc); + + String img = doc.select("meta[property=og:image]").attr("content"); + book.setImgUrl(NAME_SPACE + img); + + String url = doc.select("meta[property=og:novel:read_url]").attr("content"); + book.setChapterUrl(url); + book.setSource(BookSource.yanqinglou.toString()); + } + + +} diff --git a/app/src/main/res/layout/fragment_find.xml b/app/src/main/res/layout/fragment_find.xml index ad1fb2a..2bace40 100644 --- a/app/src/main/res/layout/fragment_find.xml +++ b/app/src/main/res/layout/fragment_find.xml @@ -74,7 +74,7 @@ - - + --> - - + --> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f70cf96..af153ed 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -209,6 +209,9 @@ 传奇小说 峡谷文学 红尘小说 + 笔尖小说 + 言情楼 + 卧龙小说 超星图书·实体 作品集·实体 99藏书·实体 diff --git a/app/src/main/resources/crawler.properties b/app/src/main/resources/crawler.properties index bb305e8..8f3b170 100644 --- a/app/src/main/resources/crawler.properties +++ b/app/src/main/resources/crawler.properties @@ -26,4 +26,7 @@ shiguang=xyz.fycz.myreader.webapi.crawler.read.ShiGuangReadCrawler rexue=xyz.fycz.myreader.webapi.crawler.read.ReXueReadCrawler chuanqi=xyz.fycz.myreader.webapi.crawler.read.ChuanQiReadCrawler xiagu=xyz.fycz.myreader.webapi.crawler.read.XiaGuReadCrawler -hongchen=xyz.fycz.myreader.webapi.crawler.read.HongChenReadCrawler \ No newline at end of file +hongchen=xyz.fycz.myreader.webapi.crawler.read.HongChenReadCrawler +bijian=xyz.fycz.myreader.webapi.crawler.read.BiJianReadCrawler +yanqinglou=xyz.fycz.myreader.webapi.crawler.read.YanQingLouReadCrawler +wolong=xyz.fycz.myreader.webapi.crawler.read.WoLongReadCrawler \ No newline at end of file diff --git a/app/version_code.properties b/app/version_code.properties index 29fe55d..a766185 100644 --- a/app/version_code.properties +++ b/app/version_code.properties @@ -1,2 +1,2 @@ -#Mon Jan 25 21:29:58 CST 2021 -VERSION_CODE=180 +#Mon Feb 01 19:33:27 CST 2021 +VERSION_CODE=181