|
|
@ -11,33 +11,32 @@ import io.legado.app.utils.fromJsonObject |
|
|
|
import kotlinx.parcelize.IgnoredOnParcel |
|
|
|
import kotlinx.parcelize.IgnoredOnParcel |
|
|
|
import kotlinx.parcelize.Parcelize |
|
|
|
import kotlinx.parcelize.Parcelize |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Parcelize |
|
|
|
@Parcelize |
|
|
|
@Entity( |
|
|
|
@Entity( |
|
|
|
tableName = "chapters", |
|
|
|
tableName = "chapters", |
|
|
|
primaryKeys = ["url", "bookUrl"], |
|
|
|
primaryKeys = ["url", "bookUrl"], |
|
|
|
indices = [(Index(value = ["bookUrl"], unique = false)), |
|
|
|
indices = [(Index(value = ["bookUrl"], unique = false)), |
|
|
|
(Index(value = ["bookUrl", "index"], unique = true))], |
|
|
|
(Index(value = ["bookUrl", "index"], unique = true))], |
|
|
|
foreignKeys = [(ForeignKey( |
|
|
|
foreignKeys = [(ForeignKey( |
|
|
|
entity = Book::class, |
|
|
|
entity = Book::class, |
|
|
|
parentColumns = ["bookUrl"], |
|
|
|
parentColumns = ["bookUrl"], |
|
|
|
childColumns = ["bookUrl"], |
|
|
|
childColumns = ["bookUrl"], |
|
|
|
onDelete = ForeignKey.CASCADE |
|
|
|
onDelete = ForeignKey.CASCADE |
|
|
|
))] |
|
|
|
))] |
|
|
|
) // 删除书籍时自动删除章节 |
|
|
|
) // 删除书籍时自动删除章节 |
|
|
|
data class BookChapter( |
|
|
|
data class BookChapter( |
|
|
|
var url: String = "", // 章节地址 |
|
|
|
var url: String = "", // 章节地址 |
|
|
|
var title: String = "", // 章节标题 |
|
|
|
var title: String = "", // 章节标题 |
|
|
|
var baseUrl: String = "", //用来拼接相对url |
|
|
|
var baseUrl: String = "", //用来拼接相对url |
|
|
|
var bookUrl: String = "", // 书籍地址 |
|
|
|
var bookUrl: String = "", // 书籍地址 |
|
|
|
var index: Int = 0, // 章节序号 |
|
|
|
var index: Int = 0, // 章节序号 |
|
|
|
var resourceUrl: String? = null, // 音频真实URL |
|
|
|
var resourceUrl: String? = null, // 音频真实URL |
|
|
|
var tag: String? = null, // |
|
|
|
var tag: String? = null, // |
|
|
|
var start: Long? = null, // 章节起始位置 |
|
|
|
var start: Long? = null, // 章节起始位置 |
|
|
|
var end: Long? = null, // 章节终止位置 |
|
|
|
var end: Long? = null, // 章节终止位置 |
|
|
|
var startFragmentId: String? = null, //EPUB书籍当前章节的fragmentId |
|
|
|
var startFragmentId: String? = null, //EPUB书籍当前章节的fragmentId |
|
|
|
var endFragmentId: String? = null, //EPUB书籍下一章节的fragmentId |
|
|
|
var endFragmentId: String? = null, //EPUB书籍下一章节的fragmentId |
|
|
|
var variable: String? = null //变量 |
|
|
|
var variable: String? = null //变量 |
|
|
|
) : Parcelable { |
|
|
|
) : Parcelable { |
|
|
|
|
|
|
|
|
|
|
|
@delegate:Transient |
|
|
|
@delegate:Transient |
|
|
@ -63,7 +62,8 @@ data class BookChapter( |
|
|
|
|
|
|
|
|
|
|
|
fun getAbsoluteURL():String{ |
|
|
|
fun getAbsoluteURL():String{ |
|
|
|
val pos = url.indexOf(',') |
|
|
|
val pos = url.indexOf(',') |
|
|
|
return if (pos == -1) url else "${url.substring(0,pos).trim{it < '!'}},${url.substring(pos + 1).trim{it < '!'}}" |
|
|
|
return if (pos == -1) NetworkUtils.getAbsoluteURL(baseUrl,url) |
|
|
|
|
|
|
|
else NetworkUtils.getAbsoluteURL(baseUrl,url.substring(0,pos))+","+url.substring(pos + 1) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fun getFileName(): String = String.format("%05d-%s.nb", index, MD5Utils.md5Encode16(title)) |
|
|
|
fun getFileName(): String = String.format("%05d-%s.nb", index, MD5Utils.md5Encode16(title)) |
|
|
|