Support many more fields

This commit is contained in:
Martchus 2022-04-06 01:15:21 +02:00
parent a40cff17a9
commit 5e808d069b
7 changed files with 987 additions and 5 deletions

View File

@ -199,7 +199,7 @@ if (WIDGETS_GUI OR QUICK_GUI)
endif ()
# find tagparser
find_package(tagparser${CONFIGURATION_PACKAGE_SUFFIX} 11.0.0 REQUIRED)
find_package(tagparser${CONFIGURATION_PACKAGE_SUFFIX} 11.1.0 REQUIRED)
use_tag_parser()
# enable experimental JSON export

View File

@ -73,6 +73,142 @@ const char *KnownFieldModel::fieldName(KnownField field)
return QT_TR_NOOP("Album artist");
case KnownField::ReleaseDate:
return QT_TR_NOOP("Release date");
case KnownField::Subtitle:
return QT_TR_NOOP("Subtitle");
case KnownField::LeadPerformer:
return QT_TR_NOOP("Lead performer");
case KnownField::Arranger:
return QT_TR_NOOP("Arranger");
case KnownField::Conductor:
return QT_TR_NOOP("Conductor");
case KnownField::Director:
return QT_TR_NOOP("Director");
case KnownField::AssistantDirector:
return QT_TR_NOOP("Assistant directory");
case KnownField::DirectorOfPhotography:
return QT_TR_NOOP("Director of photography");
case KnownField::SoundEngineer:
return QT_TR_NOOP("Sounc engineer");
case KnownField::ArtDirector:
return QT_TR_NOOP("Art director");
case KnownField::ProductionDesigner:
return QT_TR_NOOP("Production designer");
case KnownField::Choregrapher:
return QT_TR_NOOP("Choregrapher");
case KnownField::CostumeDesigner:
return QT_TR_NOOP("Costume designer");
case KnownField::Actor:
return QT_TR_NOOP("Actor");
case KnownField::Character:
return QT_TR_NOOP("Character");
case KnownField::WrittenBy:
return QT_TR_NOOP("Written by");
case KnownField::ScreenplayBy:
return QT_TR_NOOP("Screenplay by");
case KnownField::EditedBy:
return QT_TR_NOOP("Edited by");
case KnownField::Producer:
return QT_TR_NOOP("Producer");
case KnownField::Coproducer:
return QT_TR_NOOP("Coproducer");
case KnownField::ExecutiveProducer:
return QT_TR_NOOP("Executive producer");
case KnownField::DistributedBy:
return QT_TR_NOOP("Distributed by");
case KnownField::MasteredBy:
return QT_TR_NOOP("Mastered by");
case KnownField::EncodedBy:
return QT_TR_NOOP("Encoded by");
case KnownField::MixedBy:
return QT_TR_NOOP("Mixed by");
case KnownField::RemixedBy:
return QT_TR_NOOP("Remixed by");
case KnownField::ProductionStudio:
return QT_TR_NOOP("Production studio");
case KnownField::ThanksTo:
return QT_TR_NOOP("Thanks to");
case KnownField::Publisher:
return QT_TR_NOOP("Publisher");
case KnownField::Mood:
return QT_TR_NOOP("Mood");
case KnownField::OriginalMediaType:
return QT_TR_NOOP("Original media-type");
case KnownField::ContentType:
return QT_TR_NOOP("Content-type");
case KnownField::Subject:
return QT_TR_NOOP("Subject");
case KnownField::Keywords:
return QT_TR_NOOP("Keywords");
case KnownField::Summary:
return QT_TR_NOOP("Summary");
case KnownField::Synopsis:
return QT_TR_NOOP("Synopsis");
case KnownField::InitialKey:
return QT_TR_NOOP("Initial key");
case KnownField::Period:
return QT_TR_NOOP("Period");
case KnownField::LawRating:
return QT_TR_NOOP("Law rating");
case KnownField::EncodingDate:
return QT_TR_NOOP("Encoding date");
case KnownField::TaggingDate:
return QT_TR_NOOP("Tagging date");
case KnownField::DigitalizationDate:
return QT_TR_NOOP("Digitalization date");
case KnownField::WritingDate:
return QT_TR_NOOP("Writing date");
case KnownField::PurchasingDate:
return QT_TR_NOOP("Purchasing date");
case KnownField::RecordingLocation:
return QT_TR_NOOP("Recording location");
case KnownField::CompositionLocation:
return QT_TR_NOOP("Composition location");
case KnownField::ComposerNationality:
return QT_TR_NOOP("Composer nationality");
case KnownField::PlayCounter:
return QT_TR_NOOP("Play counter");
case KnownField::Measure:
return QT_TR_NOOP("Measure");
case KnownField::Tuning:
return QT_TR_NOOP("Tuning");
case KnownField::ISRC:
return QT_TR_NOOP("ISRC");
case KnownField::MCDI:
return QT_TR_NOOP("MCDI");
case KnownField::ISBN:
return QT_TR_NOOP("ISBN");
case KnownField::Barcode:
return QT_TR_NOOP("Barcode");
case KnownField::CatalogNumber:
return QT_TR_NOOP("Catalog number");
case KnownField::LabelCode:
return QT_TR_NOOP("Label code");
case KnownField::LCCN:
return QT_TR_NOOP("LCCN");
case KnownField::IMDB:
return QT_TR_NOOP("IMDB-ID");
case KnownField::TMDB:
return QT_TR_NOOP("TMDB-ID");
case KnownField::TVDB:
return QT_TR_NOOP("TVDB-ID");
case KnownField::PurchaseItem:
return QT_TR_NOOP("Purchase item");
case KnownField::PurchaseInfo:
return QT_TR_NOOP("Purchase info");
case KnownField::PurchaseOwner:
return QT_TR_NOOP("Purchase owner");
case KnownField::PurchasePrice:
return QT_TR_NOOP("Purchase price");
case KnownField::PurchaseCurrency:
return QT_TR_NOOP("Purchase currency");
case KnownField::Copyright:
return QT_TR_NOOP("Copyright");
case KnownField::ProductionCopyright:
return QT_TR_NOOP("Production copyright");
case KnownField::License:
return QT_TR_NOOP("License");
case KnownField::TermsOfUse:
return QT_TR_NOOP("Terms of use");
default:
return "";
}
@ -123,7 +259,74 @@ KnownFieldModel::KnownFieldModel(QObject *parent, DefaultSelection defaultSelect
mkItem(KnownField::Rating, Qt::Unchecked),
mkItem(KnownField::Description, Qt::Unchecked),
mkItem(KnownField::Vendor, Qt::Unchecked),
mkItem(KnownField::ReleaseDate, Qt::Unchecked),
mkItem(KnownField::ReleaseDate, Qt::Checked),
mkItem(KnownField::Subtitle, Qt::Unchecked),
mkItem(KnownField::LeadPerformer, Qt::Unchecked),
mkItem(KnownField::Arranger, Qt::Unchecked),
mkItem(KnownField::Conductor, Qt::Unchecked),
mkItem(KnownField::Director, Qt::Unchecked),
mkItem(KnownField::AssistantDirector, Qt::Unchecked),
mkItem(KnownField::DirectorOfPhotography, Qt::Unchecked),
mkItem(KnownField::SoundEngineer, Qt::Unchecked),
mkItem(KnownField::ArtDirector, Qt::Unchecked),
mkItem(KnownField::ProductionDesigner, Qt::Unchecked),
mkItem(KnownField::Choregrapher, Qt::Unchecked),
mkItem(KnownField::CostumeDesigner, Qt::Unchecked),
mkItem(KnownField::Actor, Qt::Unchecked),
mkItem(KnownField::Character, Qt::Unchecked),
mkItem(KnownField::WrittenBy, Qt::Unchecked),
mkItem(KnownField::ScreenplayBy, Qt::Unchecked),
mkItem(KnownField::EditedBy, Qt::Unchecked),
mkItem(KnownField::Producer, Qt::Unchecked),
mkItem(KnownField::Coproducer, Qt::Unchecked),
mkItem(KnownField::ExecutiveProducer, Qt::Unchecked),
mkItem(KnownField::DistributedBy, Qt::Unchecked),
mkItem(KnownField::MasteredBy, Qt::Unchecked),
mkItem(KnownField::EncodedBy, Qt::Unchecked),
mkItem(KnownField::MixedBy, Qt::Unchecked),
mkItem(KnownField::RemixedBy, Qt::Unchecked),
mkItem(KnownField::ProductionStudio, Qt::Unchecked),
mkItem(KnownField::ThanksTo, Qt::Unchecked),
mkItem(KnownField::Publisher, Qt::Unchecked),
mkItem(KnownField::Mood, Qt::Unchecked),
mkItem(KnownField::OriginalMediaType, Qt::Unchecked),
mkItem(KnownField::ContentType, Qt::Unchecked),
mkItem(KnownField::Subject, Qt::Unchecked),
mkItem(KnownField::Keywords, Qt::Unchecked),
mkItem(KnownField::Summary, Qt::Unchecked),
mkItem(KnownField::Synopsis, Qt::Unchecked),
mkItem(KnownField::InitialKey, Qt::Unchecked),
mkItem(KnownField::Period, Qt::Unchecked),
mkItem(KnownField::LawRating, Qt::Unchecked),
mkItem(KnownField::EncodingDate, Qt::Unchecked),
mkItem(KnownField::TaggingDate, Qt::Unchecked),
mkItem(KnownField::OriginalReleaseDate, Qt::Unchecked),
mkItem(KnownField::DigitalizationDate, Qt::Unchecked),
mkItem(KnownField::WritingDate, Qt::Unchecked),
mkItem(KnownField::PurchasingDate, Qt::Unchecked),
mkItem(KnownField::RecordingLocation, Qt::Unchecked),
mkItem(KnownField::CompositionLocation, Qt::Unchecked),
mkItem(KnownField::ComposerNationality, Qt::Unchecked),
mkItem(KnownField::PlayCounter, Qt::Unchecked),
mkItem(KnownField::Measure, Qt::Unchecked),
mkItem(KnownField::Tuning, Qt::Unchecked),
mkItem(KnownField::ISBN, Qt::Unchecked),
mkItem(KnownField::Barcode, Qt::Unchecked),
mkItem(KnownField::CatalogNumber, Qt::Unchecked),
mkItem(KnownField::LabelCode, Qt::Unchecked),
mkItem(KnownField::LCCN, Qt::Unchecked),
mkItem(KnownField::IMDB, Qt::Unchecked),
mkItem(KnownField::TMDB, Qt::Unchecked),
mkItem(KnownField::TVDB, Qt::Unchecked),
mkItem(KnownField::PurchaseItem, Qt::Unchecked),
mkItem(KnownField::PurchaseInfo, Qt::Unchecked),
mkItem(KnownField::PurchaseOwner, Qt::Unchecked),
mkItem(KnownField::PurchasePrice, Qt::Unchecked),
mkItem(KnownField::PurchaseCurrency, Qt::Unchecked),
mkItem(KnownField::Copyright, Qt::Unchecked),
mkItem(KnownField::ProductionCopyright, Qt::Unchecked),
mkItem(KnownField::License, Qt::Unchecked),
mkItem(KnownField::TermsOfUse, Qt::Unchecked),
});
// clang-format on
}

View File

@ -1,5 +1,6 @@
#include "./fieldmapping.h"
#include <tagparser/caseinsensitivecomparer.h>
#include <tagparser/tag.h>
using namespace TagParser;
@ -41,6 +42,75 @@ static constexpr struct {
{ "description", KnownField::Description },
{ "vendor", KnownField::Vendor },
{ "albumartist", KnownField::AlbumArtist },
{ "Subtitle", KnownField::Subtitle },
{ "LeadPerformer", KnownField::LeadPerformer },
{ "Arranger", KnownField::Arranger },
{ "Conductor", KnownField::Conductor },
{ "Director", KnownField::Director },
{ "AssistantDirector", KnownField::AssistantDirector },
{ "DirectorOfPhotography", KnownField::DirectorOfPhotography },
{ "SoundEngineer", KnownField::SoundEngineer },
{ "ArtDirector", KnownField::ArtDirector },
{ "ProductionDesigner", KnownField::ProductionDesigner },
{ "Choregrapher", KnownField::Choregrapher },
{ "CostumeDesigner", KnownField::CostumeDesigner },
{ "Actor", KnownField::Actor },
{ "Character", KnownField::Character },
{ "WrittenBy", KnownField::WrittenBy },
{ "ScreenplayBy", KnownField::ScreenplayBy },
{ "EditedBy", KnownField::EditedBy },
{ "Producer", KnownField::Producer },
{ "Coproducer", KnownField::Coproducer },
{ "ExecutiveProducer", KnownField::ExecutiveProducer },
{ "DistributedBy", KnownField::DistributedBy },
{ "MasteredBy", KnownField::MasteredBy },
{ "EncodedBy", KnownField::EncodedBy },
{ "MixedBy", KnownField::MixedBy },
{ "RemixedBy", KnownField::RemixedBy },
{ "ProductionStudio", KnownField::ProductionStudio },
{ "ThanksTo", KnownField::ThanksTo },
{ "Publisher", KnownField::Publisher },
{ "Mood", KnownField::Mood },
{ "OriginalMediaType", KnownField::OriginalMediaType },
{ "ContentType", KnownField::ContentType },
{ "Subject", KnownField::Subject },
{ "Keywords", KnownField::Keywords },
{ "Summary", KnownField::Summary },
{ "Synopsis", KnownField::Synopsis },
{ "InitialKey", KnownField::InitialKey },
{ "Period", KnownField::Period },
{ "LawRating", KnownField::LawRating },
{ "EncodingDate", KnownField::EncodingDate },
{ "TaggingDate", KnownField::TaggingDate },
{ "OriginalReleaseDate", KnownField::OriginalReleaseDate },
{ "DigitalizationDate", KnownField::DigitalizationDate },
{ "WritingDate", KnownField::WritingDate },
{ "PurchasingDate", KnownField::PurchasingDate },
{ "RecordingLocation", KnownField::RecordingLocation },
{ "CompositionLocation", KnownField::CompositionLocation },
{ "ComposerNationality", KnownField::ComposerNationality },
{ "PlayCounter", KnownField::PlayCounter },
{ "Measure", KnownField::Measure },
{ "Tuning", KnownField::Tuning },
{ "ISRC", KnownField::ISRC },
{ "MCDI", KnownField::MCDI },
{ "ISBN", KnownField::ISBN },
{ "Barcode", KnownField::Barcode },
{ "CatalogNumber", KnownField::CatalogNumber },
{ "LabelCode", KnownField::LabelCode },
{ "LCCN", KnownField::LCCN },
{ "IMDB", KnownField::IMDB },
{ "TMDB", KnownField::TMDB },
{ "TVDB", KnownField::TVDB },
{ "PurchaseItem", KnownField::PurchaseItem },
{ "PurchaseInfo", KnownField::PurchaseInfo },
{ "PurchaseOwner", KnownField::PurchaseOwner },
{ "PurchasePrice", KnownField::PurchasePrice },
{ "PurchaseCurrency", KnownField::PurchaseCurrency },
{ "Copyright", KnownField::Copyright },
{ "ProductionCopyright", KnownField::ProductionCopyright },
{ "License", KnownField::License },
{ "TermsOfUse", KnownField::TermsOfUse },
};
const char *fieldDenotation(TagParser::KnownField knownField)
@ -55,8 +125,20 @@ const char *fieldDenotation(TagParser::KnownField knownField)
TagParser::KnownField knownField(const char *fieldDenotation, std::size_t fieldDenotationSize)
{
const auto d = std::string_view(fieldDenotation, fieldDenotationSize);
for (const auto &mapping : fieldMapping) {
if (!strncmp(fieldDenotation, mapping.knownDenotation, fieldDenotationSize)) {
const char *mc = mapping.knownDenotation;
for (auto dc : d) {
if (!*mc) {
mc = mapping.knownDenotation;
break;
}
if (static_cast<unsigned char>(dc) != CaseInsensitiveCharComparer::toLower(static_cast<unsigned char>(*mc))) {
break;
}
++mc;
}
if (!*mc) {
return mapping.knownField;
}
}

View File

@ -5,6 +5,7 @@
#include <tagparser/mediafileinfo.h>
#include <tagparser/tag.h>
#include <tagparser/caseinsensitivecomparer.h>
#include <c++utilities/conversion/stringconversion.h>
@ -128,7 +129,11 @@ TagInfo::TagInfo(const Tag &tag, RAPIDJSON_NAMESPACE::Document::AllocatorType &a
for (const auto *tagValue : tagValues) {
valueObjects.emplace_back(*tagValue, allocator);
}
fields.insert(make_pair(FieldMapping::fieldDenotation(field), move(valueObjects)));
auto key = std::string(FieldMapping::fieldDenotation(field));
for (auto &c : key) {
c = static_cast<std::string::value_type>(CaseInsensitiveCharComparer::toLower(static_cast<unsigned char>(c)));
}
fields.insert(std::make_pair(std::move(key), std::move(valueObjects)));
}
}

View File

@ -73,7 +73,19 @@ namespace Cli {
#define FIELD_NAMES \
"title album artist genre recorddate comment bpm bps lyricist track disk part totalparts encoder\n" \
" releasedate performers duration language encodersettings lyrics synchronizedlyrics grouping\n" \
" recordlabel cover composer rating description vendor albumartist"
" recordlabel cover composer rating description vendor albumartist\n" \
" subtitle leadperformer arranger conductor director assistantdirector\n" \
" subtitle leadperformer arranger conductor director assistantdirector\n" \
" directorofphotography soundengineer artdirector productiondesigner choregrapher\n" \
" costumedesigner actor character writtenby screenplayby editedby producer\n" \
" coproducer exectiveproducer distributedby masteredby encodedby mixedby\n" \
" remixedby productionstudio thanksto publisher mood originalmediatype\n" \
" contenttype subject keywords summary synopsis initialkey period lawrating\n" \
" encodingdate taggingdate originalreleasedate digitalizationdate writingdate\n" \
" purchasingdate recordinglocation compositionlocation composernationality\n" \
" playcounter measure tuning isrc mcdi isbn barcode catalognumber labelcode\n" \
" lccn imdb tmdb tvdb purchaseitem purchaseinfo purchaseowner purchaseprice\n" \
" purchasecurrency copyright productioncopyright licnese termsofuse"
#define TRACK_ATTRIBUTE_NAMES "name tracknumber enabled=yes enabled=no forced=yes forced=no default=yes default=no"

View File

@ -4900,8 +4900,348 @@ Remarks
<source>Release date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="77"/>
<source>Subtitle</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="79"/>
<source>Lead performer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="81"/>
<source>Arranger</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="83"/>
<source>Conductor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="85"/>
<source>Director</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="87"/>
<source>Assistant directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="89"/>
<source>Director of photography</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="91"/>
<source>Sounc engineer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="93"/>
<source>Art director</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="95"/>
<source>Production designer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="97"/>
<source>Choregrapher</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="99"/>
<source>Costume designer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="101"/>
<source>Actor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="103"/>
<source>Character</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="105"/>
<source>Written by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="107"/>
<source>Screenplay by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="109"/>
<source>Edited by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="111"/>
<source>Producer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="113"/>
<source>Coproducer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="115"/>
<source>Executive producer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="117"/>
<source>Distributed by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="119"/>
<source>Mastered by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="121"/>
<source>Encoded by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="123"/>
<source>Mixed by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="125"/>
<source>Remixed by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="127"/>
<source>Production studio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="129"/>
<source>Thanks to</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="131"/>
<source>Publisher</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="133"/>
<source>Mood</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="135"/>
<source>Original media-type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="137"/>
<source>Content-type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="139"/>
<source>Subject</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="141"/>
<source>Keywords</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="143"/>
<source>Summary</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="145"/>
<source>Synopsis</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="147"/>
<source>Initial key</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="149"/>
<source>Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="151"/>
<source>Law rating</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="153"/>
<source>Encoding date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="155"/>
<source>Tagging date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="157"/>
<source>Digitalization date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="159"/>
<source>Writing date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="161"/>
<source>Purchasing date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="163"/>
<source>Recording location</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="165"/>
<source>Composition location</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="167"/>
<source>Composer nationality</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="169"/>
<source>Play counter</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="171"/>
<source>Measure</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="173"/>
<source>Tuning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="175"/>
<source>ISRC</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="177"/>
<source>MCDI</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="179"/>
<source>ISBN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="181"/>
<source>Barcode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="183"/>
<source>Catalog number</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="185"/>
<source>Label code</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="187"/>
<source>LCCN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="189"/>
<source>IMDB-ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="191"/>
<source>TMDB-ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="193"/>
<source>TVDB-ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="195"/>
<source>Purchase item</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="197"/>
<source>Purchase info</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="199"/>
<source>Purchase owner</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="201"/>
<source>Purchase price</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="203"/>
<source>Purchase currency</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="205"/>
<source>Copyright</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="207"/>
<source>Production copyright</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="209"/>
<source>License</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="211"/>
<source>Terms of use</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="348"/>
<source>Field</source>
<translation type="unfinished"></translation>
</message>

View File

@ -5037,8 +5037,348 @@ Remarks
<source>Release date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="77"/>
<source>Subtitle</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="79"/>
<source>Lead performer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="81"/>
<source>Arranger</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="83"/>
<source>Conductor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="85"/>
<source>Director</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="87"/>
<source>Assistant directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="89"/>
<source>Director of photography</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="91"/>
<source>Sounc engineer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="93"/>
<source>Art director</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="95"/>
<source>Production designer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="97"/>
<source>Choregrapher</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="99"/>
<source>Costume designer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="101"/>
<source>Actor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="103"/>
<source>Character</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="105"/>
<source>Written by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="107"/>
<source>Screenplay by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="109"/>
<source>Edited by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="111"/>
<source>Producer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="113"/>
<source>Coproducer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="115"/>
<source>Executive producer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="117"/>
<source>Distributed by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="119"/>
<source>Mastered by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="121"/>
<source>Encoded by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="123"/>
<source>Mixed by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="125"/>
<source>Remixed by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="127"/>
<source>Production studio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="129"/>
<source>Thanks to</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="131"/>
<source>Publisher</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="133"/>
<source>Mood</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="135"/>
<source>Original media-type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="137"/>
<source>Content-type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="139"/>
<source>Subject</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="141"/>
<source>Keywords</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="143"/>
<source>Summary</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="145"/>
<source>Synopsis</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="147"/>
<source>Initial key</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="149"/>
<source>Period</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="151"/>
<source>Law rating</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="153"/>
<source>Encoding date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="155"/>
<source>Tagging date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="157"/>
<source>Digitalization date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="159"/>
<source>Writing date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="161"/>
<source>Purchasing date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="163"/>
<source>Recording location</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="165"/>
<source>Composition location</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="167"/>
<source>Composer nationality</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="169"/>
<source>Play counter</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="171"/>
<source>Measure</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="173"/>
<source>Tuning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="175"/>
<source>ISRC</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="177"/>
<source>MCDI</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="179"/>
<source>ISBN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="181"/>
<source>Barcode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="183"/>
<source>Catalog number</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="185"/>
<source>Label code</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="187"/>
<source>LCCN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="189"/>
<source>IMDB-ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="191"/>
<source>TMDB-ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="193"/>
<source>TVDB-ID</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="195"/>
<source>Purchase item</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="197"/>
<source>Purchase info</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="199"/>
<source>Purchase owner</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="201"/>
<source>Purchase price</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="203"/>
<source>Purchase currency</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="205"/>
<source>Copyright</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="207"/>
<source>Production copyright</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="209"/>
<source>License</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="211"/>
<source>Terms of use</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../application/knownfieldmodel.cpp" line="348"/>
<source>Field</source>
<translation type="unfinished"></translation>
</message>