mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2025-08-30 22:59:35 +02:00
fix & update comic reader for comics with subfolders and better sorting
This commit is contained in:
parent
a852114e9c
commit
9ab03fbcd4
2 changed files with 33 additions and 8 deletions
|
@ -39,6 +39,7 @@
|
||||||
<script>
|
<script>
|
||||||
import Path from 'path'
|
import Path from 'path'
|
||||||
import { Archive } from 'libarchive.js/main.js'
|
import { Archive } from 'libarchive.js/main.js'
|
||||||
|
import { CompressedFile } from 'libarchive.js/src/compressed-file'
|
||||||
|
|
||||||
Archive.init({
|
Archive.init({
|
||||||
workerUrl: '/libarchive/worker-bundle.js'
|
workerUrl: '/libarchive/worker-bundle.js'
|
||||||
|
@ -136,7 +137,11 @@ export default {
|
||||||
responseType: 'blob'
|
responseType: 'blob'
|
||||||
})
|
})
|
||||||
const archive = await Archive.open(buff)
|
const archive = await Archive.open(buff)
|
||||||
this.filesObject = await archive.getFilesObject()
|
const originalFilesObject = await archive.getFilesObject()
|
||||||
|
// to support images in subfolders we need to flatten the object
|
||||||
|
// ref: https://github.com/advplyr/audiobookshelf/issues/811
|
||||||
|
this.filesObject = this.flattenFilesObject(originalFilesObject)
|
||||||
|
console.log('Extracted files object', this.filesObject)
|
||||||
var filenames = Object.keys(this.filesObject)
|
var filenames = Object.keys(this.filesObject)
|
||||||
this.parseFilenames(filenames)
|
this.parseFilenames(filenames)
|
||||||
|
|
||||||
|
@ -154,6 +159,26 @@ export default {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
flattenFilesObject(filesObject) {
|
||||||
|
const flattenObject = (obj, prefix = '') => {
|
||||||
|
var _obj = {}
|
||||||
|
for (const key in obj) {
|
||||||
|
const newKey = prefix ? prefix + '/' + key : key
|
||||||
|
if (obj[key] instanceof CompressedFile) {
|
||||||
|
_obj[newKey] = obj[key]
|
||||||
|
} else if (!key.startsWith('_') && typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
|
||||||
|
_obj = {
|
||||||
|
..._obj,
|
||||||
|
...flattenObject(obj[key], newKey)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
_obj[newKey] = obj[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _obj
|
||||||
|
}
|
||||||
|
return flattenObject(filesObject)
|
||||||
|
},
|
||||||
async extractXmlFile(filename) {
|
async extractXmlFile(filename) {
|
||||||
console.log('extracting xml filename', filename)
|
console.log('extracting xml filename', filename)
|
||||||
try {
|
try {
|
||||||
|
@ -173,7 +198,7 @@ export default {
|
||||||
},
|
},
|
||||||
parseImageFilename(filename) {
|
parseImageFilename(filename) {
|
||||||
var basename = Path.basename(filename, Path.extname(filename))
|
var basename = Path.basename(filename, Path.extname(filename))
|
||||||
var numbersinpath = basename.match(/\d{1,4}/g)
|
var numbersinpath = basename.match(/\d{1,5}/g)
|
||||||
if (!numbersinpath || !numbersinpath.length) {
|
if (!numbersinpath || !numbersinpath.length) {
|
||||||
return {
|
return {
|
||||||
index: -1,
|
index: -1,
|
||||||
|
|
|
@ -9,12 +9,12 @@ install! 'cocoapods', :disable_input_output_paths => true
|
||||||
def capacitor_pods
|
def capacitor_pods
|
||||||
pod 'Capacitor', :path => '../../node_modules/@capacitor/ios'
|
pod 'Capacitor', :path => '../../node_modules/@capacitor/ios'
|
||||||
pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios'
|
pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios'
|
||||||
pod 'CapacitorApp', :path => '../../node_modules/@capacitor/app'
|
pod 'CapacitorApp', :path => '..\..\node_modules\@capacitor\app'
|
||||||
pod 'CapacitorDialog', :path => '../../node_modules/@capacitor/dialog'
|
pod 'CapacitorDialog', :path => '..\..\node_modules\@capacitor\dialog'
|
||||||
pod 'CapacitorHaptics', :path => '../../node_modules/@capacitor/haptics'
|
pod 'CapacitorHaptics', :path => '..\..\node_modules\@capacitor\haptics'
|
||||||
pod 'CapacitorNetwork', :path => '../../node_modules/@capacitor/network'
|
pod 'CapacitorNetwork', :path => '..\..\node_modules\@capacitor\network'
|
||||||
pod 'CapacitorStatusBar', :path => '../../node_modules/@capacitor/status-bar'
|
pod 'CapacitorStatusBar', :path => '..\..\node_modules\@capacitor\status-bar'
|
||||||
pod 'CapacitorStorage', :path => '../../node_modules/@capacitor/storage'
|
pod 'CapacitorStorage', :path => '..\..\node_modules\@capacitor\storage'
|
||||||
end
|
end
|
||||||
|
|
||||||
target 'Audiobookshelf' do
|
target 'Audiobookshelf' do
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue