Simplified a number of handlers by deriving them from RclBaseHandler

This commit is contained in:
Jean-Francois Dockes
2018-11-09 15:41:14 +01:00
parent e1a937f608
commit 61ee8acbc2
8 changed files with 110 additions and 241 deletions
+17 -46
View File
@@ -1,10 +1,11 @@
#!/usr/bin/env python3
# Audio tag filter for Recoll, using mutagen
# Audio tag extractor for Recoll, using mutagen
import sys
import os
import rclexecm
from rclbasehandler import RclBaseHandler
import time
import datetime
import re
@@ -174,10 +175,11 @@ def tobytes(s):
# mp3: album, title, artist, genre, date, tracknumber
# flac: album, title, artist, genre, xxx, tracknumber
# oggvorbis:album, title, artist, genre, date, tracknumber
class AudioTagExtractor:
class AudioTagExtractor(RclBaseHandler):
def __init__(self, em):
self.em = em
self.currentindex = 0
super(AudioTagExtractor, self).__init__(em)
def _showMutaInfo(self, mutf):
self.em.rclog("%s" % mutf.info.pprint())
@@ -186,10 +188,6 @@ class AudioTagExtractor:
(prop, getattr( mutf.info, prop)))
def _printableFilename(self):
return self.filename.decode('utf-8', errors='replace')
def _embeddedImageFormat(self, mutf):
#self.em.rclog("_embeddedImage: MIME: %s"%mutf.mime)
if 'audio/mp3' in mutf.mime:
@@ -232,24 +230,16 @@ class AudioTagExtractor:
val = time.mktime(pdt.timetuple())
return "%d" % val
def extractone(self, params):
#self.em.rclog("extractone %s %s" % (params["filename:"],
# params["mimetype:"]))
docdata = ""
ok = False
if not "mimetype:" in params or not "filename:" in params:
self.em.rclog("extractone: no mime or file name")
return (ok, docdata, "", rclexecm.RclExecM.eofnow)
filename = params["filename:"]
mimetype = params["mimetype:"]
self.filename = filename
#self.em.rclog("%s" % filename)
try:
mutf = File(filename)
except Exception as err:
self.em.rclog("extractone: extract failed: [%s]" % err)
return (ok, docdata, "", rclexecm.RclExecM.eofnow)
def html_text(self, filename):
if not self.inputmimetype:
raise Exception("html_text: input MIME type not set")
mimetype = self.inputmimetype
mutf = File(filename)
if not mutf:
raise Exception("mutagen failed opening %s" % filename)
#self._showMutaInfo(mutf)
###################
@@ -361,29 +351,10 @@ class AudioTagExtractor:
try:
docdata = tobytes(mutf.pprint())
except Exception as err:
docdata = ""
self.em.rclog("Doc pprint error: %s" % err)
ok = True
return (ok, docdata, "", rclexecm.RclExecM.eofnext)
###### File type handler api, used by rclexecm ---------->
def openfile(self, params):
self.currentindex = 0
return True
def getipath(self, params):
return self.extractone(params)
def getnext(self, params):
if self.currentindex >= 1:
return (False, "", "", rclexecm.RclExecM.eofnow)
else:
ret= self.extractone(params)
self.currentindex += 1
return ret
return docdata
def makeObject():