diff --git a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt index 4790cb5c3..f721dca47 100644 --- a/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/BookSourceDao.kt @@ -74,7 +74,7 @@ interface BookSourceDao { @Query("select * from book_sources where enabled = 1 and bookSourceGroup like '%' || :group || '%'") fun getEnabledByGroup(group: String): List - @get:Query("select * from book_sources where trim(bookUrlPattern) <> ''") + @get:Query("select * from book_sources where trim(bookUrlPattern) <> '' order by enabled desc, customOrder") val hasBookUrlPattern: List @get:Query("select * from book_sources where bookSourceGroup is null or bookSourceGroup = ''") diff --git a/app/src/main/java/io/legado/app/model/rss/RssParserByRule.kt b/app/src/main/java/io/legado/app/model/rss/RssParserByRule.kt index aabe26f98..f97f806aa 100644 --- a/app/src/main/java/io/legado/app/model/rss/RssParserByRule.kt +++ b/app/src/main/java/io/legado/app/model/rss/RssParserByRule.kt @@ -117,7 +117,7 @@ object RssParserByRule { Debug.log(sourceUrl, "┌获取文章链接", log) rssArticle.link = NetworkUtils.getAbsoluteURL(sourceUrl, analyzeRule.getString(ruleLink)) Debug.log(sourceUrl, "└${rssArticle.link}", log) - rssArticle.variable = GSON.toJson(analyzeRule.ruleData.variableMap) + rssArticle.variable = analyzeRule.ruleData?.variableMap?.let { GSON.toJson(it) } if (rssArticle.title.isBlank()) { return null } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt index c63b8c569..80d287fdf 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt @@ -24,7 +24,9 @@ class BookshelfViewModel(application: Application) : BaseViewModel(application) fun addBookByUrl(bookUrls: String) { var successCount = 0 execute { - var hasBookUrlPattern: List? = null + val hasBookUrlPattern: List by lazy { + appDb.bookSourceDao.hasBookUrlPattern + } val urls = bookUrls.split("\n") for (url in urls) { val bookUrl = url.trim() @@ -33,9 +35,6 @@ class BookshelfViewModel(application: Application) : BaseViewModel(application) val baseUrl = NetworkUtils.getBaseUrl(bookUrl) ?: continue var source = appDb.bookSourceDao.getBookSource(baseUrl) if (source == null) { - if (hasBookUrlPattern == null) { - hasBookUrlPattern = appDb.bookSourceDao.hasBookUrlPattern - } hasBookUrlPattern.forEach { bookSource -> if (bookUrl.matches(bookSource.bookUrlPattern!!.toRegex())) { source = bookSource