mirror of
https://github.com/mitb-archive/filebot
synced 2024-12-21 23:38:50 -05:00
Experiment with artwork thumbnail support
This commit is contained in:
parent
a05ab703ff
commit
889d411c44
@ -3,6 +3,10 @@
|
||||
import static org.apache.commons.io.FileUtils.*
|
||||
|
||||
|
||||
scaleFactor = [1, 2]
|
||||
thumbnailSize = [48, 48]
|
||||
|
||||
|
||||
void ls(f) {
|
||||
if (f.exists()) {
|
||||
log.info "$f (${byteCountToDisplaySize(f.length())})"
|
||||
@ -17,20 +21,26 @@ File getOriginalPath(db, id) {
|
||||
}
|
||||
|
||||
|
||||
File getThumbnailPath(db, id) {
|
||||
return _args.outputPath.resolve("images/${db}/thumb/poster/${id}.png")
|
||||
File getThumbnailPath(db, id, scale) {
|
||||
def n = id as String
|
||||
if (scale != 1) {
|
||||
n += '@' + scale + 'x'
|
||||
}
|
||||
return _args.outputPath.resolve("images/${db}/thumb/poster/${n}.png")
|
||||
}
|
||||
|
||||
|
||||
void createThumbnail(original, thumb) {
|
||||
void createThumbnail(original, thumb, scale) {
|
||||
thumb.dir.mkdirs()
|
||||
execute 'convert', '-strip', original, '-thumbnail', '48x48', '-gravity', 'center', '-background', 'transparent', '-extent', '48x48', 'PNG8:' + thumb
|
||||
|
||||
def size = thumbnailSize*.multiply(scale).join('x')
|
||||
execute 'convert', '-strip', original, '-thumbnail', size, '-gravity', 'center', '-background', 'transparent', '-extent', size, 'PNG8:' + thumb
|
||||
}
|
||||
|
||||
|
||||
void createIndexFile(db) {
|
||||
def indexFile = _args.outputPath.resolve("images/${db}/thumb/poster/index.txt")
|
||||
def index = indexFile.dir.listFiles{ it.image }.collect{ it.nameWithoutExtension as int }.toSorted()
|
||||
def index = indexFile.dir.listFiles{ it.name =~ /\d+/ }.collect{ it.nameWithoutExtension as int }.toSorted()
|
||||
|
||||
index.join('\n').saveAs(indexFile)
|
||||
execute 'xz', indexFile, '--force', '--keep'
|
||||
@ -46,55 +56,57 @@ void build(ids, section, db, query) {
|
||||
def files = []
|
||||
|
||||
ids.each{ id ->
|
||||
def original = getOriginalPath(section, id)
|
||||
def thumb = getThumbnailPath(section, id)
|
||||
scaleFactor.each { scale ->
|
||||
def original = getOriginalPath(section, id)
|
||||
def thumb = getThumbnailPath(section, id, scale)
|
||||
|
||||
if (thumb.exists()) {
|
||||
log.finest "[SKIP] $id"
|
||||
return
|
||||
}
|
||||
|
||||
if (original.length() == 0 && original.exists() && System.currentTimeMillis() - original.lastModified() > 90 * 24 * 60 * 60 * 1000) {
|
||||
log.finest "[SKIP] $id"
|
||||
return
|
||||
}
|
||||
|
||||
if (original.length() == 0 || !original.exists()) {
|
||||
def artwork = retry(2, 60000) {
|
||||
try {
|
||||
return db.getArtwork(id, query, Locale.ENGLISH)
|
||||
} catch (FileNotFoundException e) {
|
||||
log.warning "[ARTWORK NOT FOUND] $e"
|
||||
return null
|
||||
}
|
||||
if (thumb.exists()) {
|
||||
log.finest "[SKIP] $id"
|
||||
return
|
||||
}
|
||||
|
||||
artwork?.findResult{ a ->
|
||||
return retry(2, 60000) {
|
||||
if (original.length() == 0 && original.exists() && System.currentTimeMillis() - original.lastModified() > 90 * 24 * 60 * 60 * 1000) {
|
||||
log.finest "[SKIP] $id"
|
||||
return
|
||||
}
|
||||
|
||||
if (original.length() == 0 || !original.exists()) {
|
||||
def artwork = retry(2, 60000) {
|
||||
try {
|
||||
log.fine "Fetch $a"
|
||||
return a.url.saveAs(original)
|
||||
return db.getArtwork(id, query, Locale.ENGLISH)
|
||||
} catch (FileNotFoundException e) {
|
||||
log.warning "[IMAGE NOT FOUND] $e"
|
||||
log.warning "[ARTWORK NOT FOUND] $e"
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
artwork?.findResult{ a ->
|
||||
return retry(2, 60000) {
|
||||
try {
|
||||
log.fine "Fetch $a"
|
||||
return a.url.saveAs(original)
|
||||
} catch (FileNotFoundException e) {
|
||||
log.warning "[IMAGE NOT FOUND] $e"
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// create empty placeholder if there is no artwork
|
||||
if (original.length() == 0 || !original.exists()) {
|
||||
original.createNewFile()
|
||||
original.setLastModified(System.currentTimeMillis())
|
||||
}
|
||||
|
||||
ls original
|
||||
}
|
||||
|
||||
// create empty placeholder if there is no artwork
|
||||
if (original.length() == 0 || !original.exists()) {
|
||||
original.createNewFile()
|
||||
original.setLastModified(System.currentTimeMillis())
|
||||
if (original.length() > 0 && !thumb.exists()) {
|
||||
createThumbnail(original, thumb, scale)
|
||||
files << thumb
|
||||
|
||||
ls thumb
|
||||
}
|
||||
|
||||
ls original
|
||||
}
|
||||
|
||||
if (original.length() > 0 && !thumb.exists()) {
|
||||
createThumbnail(original, thumb)
|
||||
files << thumb
|
||||
|
||||
ls thumb
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user