mirror of
https://github.com/Suwayomi/Tachidesk.git
synced 2025-12-10 14:52:05 +01:00
@@ -48,7 +48,7 @@ Here's a list of known clients/user interfaces for Tachidesk-Server:
|
|||||||
##### Actively Developed Cients
|
##### Actively Developed Cients
|
||||||
- [Tachidesk-WebUI](https://github.com/Suwayomi/Tachidesk-WebUI): The web/ElectronJS front-end that Tachidesk-Server is traditionally shipped with. Usually gets new features faster.
|
- [Tachidesk-WebUI](https://github.com/Suwayomi/Tachidesk-WebUI): The web/ElectronJS front-end that Tachidesk-Server is traditionally shipped with. Usually gets new features faster.
|
||||||
- [Tachidesk-JUI](https://github.com/Suwayomi/Tachidesk-JUI): The native desktop front-end for Tachidesk-Server. Currently the most advanced.
|
- [Tachidesk-JUI](https://github.com/Suwayomi/Tachidesk-JUI): The native desktop front-end for Tachidesk-Server. Currently the most advanced.
|
||||||
- [Tachidesk-qtui](https://github.com/Suwayomi/Tachidesk-qtui): A C++/Qt front-end for mobile devices(Android/linux), in super early stage of development.
|
- [Tachidesk-qtui](https://github.com/Suwayomi/Tachidesk-qtui): A C++/Qt front-end for mobile devices(Android/linux), in super early stage of development.
|
||||||
- [Tachidesk-Sorayomi](https://github.com/Suwayomi/Tachidesk-Sorayomi): A Flutter front-end for Desktop(Linux, windows, etc.), Web and Android. UI and UX similar to Tachiyomi.
|
- [Tachidesk-Sorayomi](https://github.com/Suwayomi/Tachidesk-Sorayomi): A Flutter front-end for Desktop(Linux, windows, etc.), Web and Android. UI and UX similar to Tachiyomi.
|
||||||
##### Inctive/Abandoned Cients
|
##### Inctive/Abandoned Cients
|
||||||
- [Equinox](https://github.com/Suwayomi/Equinox): A web user interface made with Vue.js, in super early stage of development.
|
- [Equinox](https://github.com/Suwayomi/Equinox): A web user interface made with Vue.js, in super early stage of development.
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ const val MainClass = "suwayomi.tachidesk.MainKt"
|
|||||||
val tachideskVersion = System.getenv("ProductVersion") ?: "v0.6.5"
|
val tachideskVersion = System.getenv("ProductVersion") ?: "v0.6.5"
|
||||||
|
|
||||||
val webUIRevisionTag = System.getenv("WebUIRevision") ?: "r946"
|
val webUIRevisionTag = System.getenv("WebUIRevision") ?: "r946"
|
||||||
val sorayomiRevisionTag = System.getenv("SorayomiRevision") ?: "0.1.5"
|
|
||||||
|
|
||||||
// counts commits on the master branch
|
// counts commits on the master branch
|
||||||
val tachideskRevision = runCatching {
|
val tachideskRevision = runCatching {
|
||||||
|
|||||||
@@ -110,9 +110,6 @@ buildConfig {
|
|||||||
buildConfigField("String", "WEBUI_REPO", quoteWrap("https://github.com/Suwayomi/Tachidesk-WebUI-preview"))
|
buildConfigField("String", "WEBUI_REPO", quoteWrap("https://github.com/Suwayomi/Tachidesk-WebUI-preview"))
|
||||||
buildConfigField("String", "WEBUI_TAG", quoteWrap(webUIRevisionTag))
|
buildConfigField("String", "WEBUI_TAG", quoteWrap(webUIRevisionTag))
|
||||||
|
|
||||||
buildConfigField("String", "SORAYOMI_REPO", quoteWrap("https://github.com/Suwayomi/Tachidesk-Sorayomi"))
|
|
||||||
buildConfigField("String", "SORAYOMI_TAG", quoteWrap(sorayomiRevisionTag))
|
|
||||||
|
|
||||||
|
|
||||||
buildConfigField("String", "GITHUB", quoteWrap("https://github.com/Suwayomi/Tachidesk-Server"))
|
buildConfigField("String", "GITHUB", quoteWrap("https://github.com/Suwayomi/Tachidesk-Server"))
|
||||||
buildConfigField("String", "DISCORD", quoteWrap("https://discord.gg/DDZdqZWaHA"))
|
buildConfigField("String", "DISCORD", quoteWrap("https://discord.gg/DDZdqZWaHA"))
|
||||||
|
|||||||
@@ -54,7 +54,6 @@ private fun directoryMD5(fileDir: String): String {
|
|||||||
fun setupWebInterface() {
|
fun setupWebInterface() {
|
||||||
when (serverConfig.webUIFlavor) {
|
when (serverConfig.webUIFlavor) {
|
||||||
"WebUI" -> setupWebUI()
|
"WebUI" -> setupWebUI()
|
||||||
"Sorayomi" -> setupSorayomi()
|
|
||||||
"Custom" -> {
|
"Custom" -> {
|
||||||
/* do nothing */
|
/* do nothing */
|
||||||
}
|
}
|
||||||
@@ -136,63 +135,3 @@ fun setupWebUI() {
|
|||||||
logger.info { "Extracting WebUI zip Done." }
|
logger.info { "Extracting WebUI zip Done." }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Make sure a valid copy of Sorayomi is available */
|
|
||||||
fun setupSorayomi() {
|
|
||||||
// check if we have Sorayomi installed and is correct version
|
|
||||||
val sorayomiVersionFile = File(applicationDirs.webUIRoot + "/version.json")
|
|
||||||
if (sorayomiVersionFile.exists() && json.parseToJsonElement(
|
|
||||||
sorayomiVersionFile.readText()
|
|
||||||
).jsonObject["version"]!!.jsonPrimitive.content == BuildConfig.SORAYOMI_TAG
|
|
||||||
) {
|
|
||||||
logger.info { "Sorayomi Static files exists and is the correct revision" }
|
|
||||||
logger.info { "Verifying Sorayomi Static files..." }
|
|
||||||
logger.info { "md5: " + directoryMD5(applicationDirs.webUIRoot) }
|
|
||||||
} else {
|
|
||||||
File(applicationDirs.webUIRoot).deleteRecursively()
|
|
||||||
|
|
||||||
val sorayomiZip = "tachidesk-sorayomi-${BuildConfig.SORAYOMI_TAG}-web.zip"
|
|
||||||
val sorayomiZipPath = "$tmpDir/$sorayomiZip"
|
|
||||||
val sorayomiZipFile = File(sorayomiZipPath)
|
|
||||||
|
|
||||||
// download sorayomi zip
|
|
||||||
val sorayomiZipURL = "${BuildConfig.SORAYOMI_REPO}/releases/download/${BuildConfig.SORAYOMI_TAG}/$sorayomiZip"
|
|
||||||
sorayomiZipFile.delete()
|
|
||||||
|
|
||||||
logger.info { "Downloading Sorayomi zip from the Internet..." }
|
|
||||||
val data = ByteArray(1024)
|
|
||||||
|
|
||||||
sorayomiZipFile.outputStream().use { sorayomiZipFileOut ->
|
|
||||||
|
|
||||||
val connection = URL(sorayomiZipURL).openConnection() as HttpURLConnection
|
|
||||||
connection.connect()
|
|
||||||
val contentLength = connection.contentLength
|
|
||||||
|
|
||||||
connection.inputStream.buffered().use { inp ->
|
|
||||||
var totalCount = 0
|
|
||||||
|
|
||||||
print("Download progress: % 00")
|
|
||||||
while (true) {
|
|
||||||
val count = inp.read(data, 0, 1024)
|
|
||||||
|
|
||||||
if (count == -1)
|
|
||||||
break
|
|
||||||
|
|
||||||
totalCount += count
|
|
||||||
val percentage = (totalCount.toFloat() / contentLength * 100).toInt().toString().padStart(2, '0')
|
|
||||||
print("\b\b$percentage")
|
|
||||||
|
|
||||||
sorayomiZipFileOut.write(data, 0, count)
|
|
||||||
}
|
|
||||||
println()
|
|
||||||
logger.info { "Downloading Sorayomi Done." }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// extract Sorayomi zip
|
|
||||||
logger.info { "Extracting Sorayomi zip..." }
|
|
||||||
File(applicationDirs.webUIRoot).mkdirs()
|
|
||||||
ZipFile(sorayomiZipPath).extractAll(applicationDirs.webUIRoot)
|
|
||||||
logger.info { "Extracting Sorayomi zip Done." }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ server.socksProxyPort = ""
|
|||||||
|
|
||||||
# webUI
|
# webUI
|
||||||
server.webUIEnabled = true
|
server.webUIEnabled = true
|
||||||
server.webUIFlavor = "WebUI" # "WebUI" or "Sorayomi" or "Custom"
|
server.webUIFlavor = "WebUI" # "WebUI" or "Custom"
|
||||||
server.initialOpenInBrowserEnabled = true
|
server.initialOpenInBrowserEnabled = true
|
||||||
server.webUIInterface = "browser" # "browser" or "electron"
|
server.webUIInterface = "browser" # "browser" or "electron"
|
||||||
server.electronPath = ""
|
server.electronPath = ""
|
||||||
|
|||||||
Reference in New Issue
Block a user