Mercurial > hg > classical
changeset 43:a3f731205168
* Write results out to local datastore
author | Chris Cannam |
---|---|
date | Wed, 28 Apr 2010 15:57:06 +0100 |
parents | add3570c6035 |
children | ed2befdf1e98 |
files | common/Objects.cpp common/Objects.h common/TypeRegistrar.cpp utilities/track/track.cpp |
diffstat | 4 files changed, 46 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/common/Objects.cpp Tue Apr 20 15:21:32 2010 +0100 +++ b/common/Objects.cpp Wed Apr 28 15:57:06 2010 +0100 @@ -825,8 +825,19 @@ } } +TrackFile::TrackFile(QObject *parent) : + QObject(parent), + m_composer(0), + m_work(0), + m_movement(0) +{ +} + TrackFile::TrackFile(FileSource source, QObject *parent) : - QObject(parent) + QObject(parent), + m_composer(0), + m_work(0), + m_movement(0) { if (source.isAvailable()) { QFile f(source.getLocalFilename());
--- a/common/Objects.h Tue Apr 20 15:21:32 2010 +0100 +++ b/common/Objects.h Wed Apr 28 15:57:06 2010 +0100 @@ -594,12 +594,14 @@ Q_PROPERTY(QSet<Dataquay::Uri> otherURIs READ otherURIs WRITE setOtherURIs NOTIFY otherURIsChanged STORED true) public: - TrackFile(QObject *parent = 0) : QObject(parent) { } + TrackFile(QObject *parent = 0); TrackFile(FileSource file, QObject *parent = 0); + /// The hash is set automatically from the FileSource at construction QString hash() const { return m_hash; } void setHash(QString hash) { m_hash = hash; emit hashChanged(hash); } + /// The URI is set automatically from the FileSource at construction Dataquay::Uri uri() const { return m_uri; } void setUri(Dataquay::Uri u) { m_uri = u; emit uriChanged(u); }
--- a/common/TypeRegistrar.cpp Tue Apr 20 15:21:32 2010 +0100 +++ b/common/TypeRegistrar.cpp Wed Apr 28 15:57:06 2010 +0100 @@ -121,7 +121,8 @@ mapping->setRelationshipPrefix(Uri("http://dbtune.org/classical/resource/vocab/relationship/")); } - if (store) { + if (store && mapping) { + store->addPrefix("type", mapping->getObjectTypePrefix()); store->addPrefix("classical", Uri(mapping->getObjectTypePrefix().toString() + "type/")); store->addPrefix("property", mapping->getPropertyPrefix()); @@ -135,9 +136,7 @@ store->add(Triple("property:death", "a", store->expand("owl:ObjectProperty"))); store->add(Triple("property:death", "rdfs:subPropertyOf", store->expand("bio:event"))); - } - if (mapping) { mapping->addTypeMapping("ClassicalData::Composer", store->expand("classical:Composer")); mapping->addPropertyMapping("ClassicalData::Composer", "pages", store->expand("foaf:page")); mapping->addPropertyMapping("ClassicalData::Composer", "name", store->expand("foaf:name"));
--- a/utilities/track/track.cpp Tue Apr 20 15:21:32 2010 +0100 +++ b/utilities/track/track.cpp Wed Apr 28 15:57:06 2010 +0100 @@ -205,8 +205,8 @@ getTrackData(FileSource source, QString &fingerprint, QString &puid, QString &title, QString &maker, AudioFileReader::TagMap &tags) { -// AudioFileReader *reader = AudioFileReaderFactory::createReader(source); - AudioFileReader *reader = AudioFileReaderFactory::createThreadingReader(source); + AudioFileReader *reader = AudioFileReaderFactory::createReader(source); +// AudioFileReader *reader = AudioFileReaderFactory::createThreadingReader(source); if (!reader || !reader->isOK()) { cerr << "Failed to open audio file" << endl; return; @@ -454,7 +454,7 @@ guessWorkFromTitle(filepart, scale, composer, guesses); } -void +TrackFile * guess(QString track) { cout << endl; @@ -471,6 +471,9 @@ //!!! bad api!: getTrackData(fs, fingerprint, puid, title, maker, tags); + cout << "fingerprint: " << fingerprint.toStdString() << ", puid: " + << puid.toStdString() << endl; + GuessSet guesses; guessFromMakerTag(tags, "TCOM", 1.0, guesses); @@ -588,17 +591,24 @@ float bc3 = bc2; QString best3 = best2; QString work; + Work *bestWork = 0; if (!consistentWorks.empty()) { Guess bg = *consistentWorks.begin(); - Work *w = qobject_cast<Work *>(bg.entity()); - if (w) { + bestWork = qobject_cast<Work *>(bg.entity()); + if (bestWork) { bc3 = bg.confidence(); - best3 = w->getComposerName(); - work = w->getDisplayName(); + best3 = bestWork->getComposerName(); + work = bestWork->getDisplayName(); } } cout << track << "|" << best << "|" << bc << "|" << best2 << "|" << bc2 << "|" << best3 << "|" << bc3 << "|" << work << "|" << bestTitle << endl; + + tf->setOfaFingerprint(fingerprint); + tf->setPuid(puid); + tf->setComposer(confidentComposer); + tf->setWork(bestWork); + return tf; } int @@ -686,12 +696,23 @@ } } + BasicStore localStore; + TypeRegistrar::addMappings(&localStore, &tm); + + ObjectStorer *localStorer = new ObjectStorer(&localStore); + localStorer->setTypeMapping(tm); +// localStorer->setFollowPolicy(ObjectStorer::FollowObjectProperties); + if (command == "guess") { if (args.empty()) usage(argv[0]); foreach (QString track, args) { - guess(track); + TrackFile *tf = guess(track); + localStorer->store(tf); } } + + delete localStorer; + localStore.save("local.ttl"); delete store; TempDirectory::getInstance()->cleanup();