Skip to content
Snippets Groups Projects
Commit b7302ac3 authored by ale's avatar ale
Browse files

add a frontend for the timbre feature extraction processor

parent 888abe5c
No related branches found
No related tags found
No related merge requests found
import os
import optparse
import logging
import subprocess
import time
import traceback
from djrandom import daemonize
from djrandom import utils
from djrandom.model.mp3 import MP3
from djrandom.database import Session, init_db
from djrandom.model import processor
from djrandom.mood import feature_extraction
from djrandom.mood import marsyas_utils
log = logging.getLogger(__name__)
class TimbreFeatureExtractor(processor.Processor):
def process(self, mp3):
log.info('extracting features from %s' % mp3.sha1)
try:
timbre_vector = feature_extraction.vector_from_file(mp3.path)
vector_str = marsyas_utils.serialize_realvec(timbre_vector)
except Exception, e:
log.error('error processing %s: %s' % (mp3.sha1, e))
return
mp3.set_features(timbre_vector=vector_str)
def query(self):
return MP3.get_with_no_features()
def run_feature_extractor(db_url, run_once):
init_db(db_url)
scanner = TimbreFeatureExtractor()
scanner.loop(run_once=run_once)
def main():
parser = optparse.OptionParser()
parser.add_option('--once', action='store_true')
parser.add_option('--db_url')
daemonize.add_standard_options(parser)
utils.read_config_defaults(
parser, os.getenv('DJRANDOM_CONF', '/etc/djrandom.conf'))
opts, args = parser.parse_args()
if not opts.db_url:
parser.error('Must provide --db_url')
if args:
parser.error('Too many arguments')
if opts.once:
opts.foreground = True
daemonize.daemonize(opts, run_feature_extractor,
(opts.db_url, opts.once))
if __name__ == '__main__':
main()
......@@ -32,7 +32,7 @@ setup(
"djrandom-update-markov = djrandom.model.markov:main",
"djrandom-metadata-fixer = djrandom.metadata_fixer.metadata_fixer:main",
"djrandom-solr-fixer = djrandom.model.verify:main",
"djrandom-extract-features = djrandom.mood.extract_features:main",
"djrandom-mood-scanner = djrandom.mood.mood_scanner:main",
],
},
)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment