Browse Source

添加书籍地址优先匹配启用的规则

kunfei 4 years ago
parent
commit
973dc90eaf

+ 1 - 1
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<BookSource>
 
-    @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<BookSource>
 
     @get:Query("select * from book_sources where bookSourceGroup is null or bookSourceGroup = ''")

+ 1 - 1
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
         }

+ 3 - 4
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<BookSource>? = null
+            val hasBookUrlPattern: List<BookSource> 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