Changeset View
Changeset View
Standalone View
Standalone View
src/extractors/taglibextractor.h
Show All 16 Lines | 1 | /* | |||
---|---|---|---|---|---|
17 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 17 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
18 | */ | 18 | */ | ||
19 | 19 | | |||
20 | 20 | | |||
21 | #ifndef TAGLIBEXTRACTOR_H | 21 | #ifndef TAGLIBEXTRACTOR_H | ||
22 | #define TAGLIBEXTRACTOR_H | 22 | #define TAGLIBEXTRACTOR_H | ||
23 | 23 | | |||
24 | #include "extractorplugin.h" | 24 | #include "extractorplugin.h" | ||
25 | #include <tstring.h> | | |||
26 | #include <tstringlist.h> | | |||
27 | 25 | | |||
28 | namespace TagLib | 26 | namespace TagLib | ||
29 | { | 27 | { | ||
30 | namespace ASF { | 28 | namespace ASF { | ||
31 | class Tag; | 29 | class Tag; | ||
32 | } | 30 | } | ||
33 | namespace ID3v2 { | 31 | namespace ID3v2 { | ||
34 | class Tag; | 32 | class Tag; | ||
35 | } | 33 | } | ||
36 | namespace MP4 { | 34 | namespace MP4 { | ||
37 | class Tag; | 35 | class Tag; | ||
38 | } | 36 | } | ||
39 | namespace APE { | 37 | class PropertyMap; | ||
40 | class Tag; | | |||
41 | } | | |||
42 | namespace Ogg { | | |||
43 | class XiphComment; | | |||
44 | } | | |||
45 | } | 38 | } | ||
46 | 39 | | |||
47 | namespace KFileMetaData | 40 | namespace KFileMetaData | ||
48 | { | 41 | { | ||
49 | 42 | | |||
50 | class TagLibExtractor : public ExtractorPlugin | 43 | class TagLibExtractor : public ExtractorPlugin | ||
51 | { | 44 | { | ||
52 | Q_OBJECT | 45 | Q_OBJECT | ||
53 | Q_PLUGIN_METADATA(IID "org.kde.kf5.kfilemetadata.ExtractorPlugin") | 46 | Q_PLUGIN_METADATA(IID "org.kde.kf5.kfilemetadata.ExtractorPlugin") | ||
54 | Q_INTERFACES(KFileMetaData::ExtractorPlugin) | 47 | Q_INTERFACES(KFileMetaData::ExtractorPlugin) | ||
55 | 48 | | |||
56 | public: | 49 | public: | ||
57 | explicit TagLibExtractor(QObject* parent = nullptr); | 50 | explicit TagLibExtractor(QObject* parent = nullptr); | ||
58 | 51 | | |||
59 | void extract(ExtractionResult* result) override; | 52 | void extract(ExtractionResult* result) override; | ||
60 | QStringList mimetypes() const override; | 53 | QStringList mimetypes() const override; | ||
61 | 54 | | |||
62 | private: | 55 | private: | ||
63 | struct ExtractedData { | 56 | | ||
64 | TagLib::String artists; | 57 | void extractId3Tags(TagLib::ID3v2::Tag* Id3Tags, ExtractionResult* result); | ||
65 | TagLib::String albumArtists; | 58 | void extractMp4Tags(TagLib::MP4::Tag* mp4Tags, ExtractionResult* result); | ||
66 | TagLib::String composers; | 59 | void extractAsfTags(TagLib::ASF::Tag* asfTags, ExtractionResult* result); | ||
67 | TagLib::String lyricists; | 60 | void readGenericProperties(const TagLib::PropertyMap &savedProperties, ExtractionResult* result); | ||
68 | TagLib::String location; | | |||
69 | TagLib::String performer; | | |||
70 | TagLib::String conductor; | | |||
71 | TagLib::String copyright; | | |||
72 | TagLib::String ensemble; | | |||
73 | TagLib::String arranger; | | |||
74 | TagLib::String language; | | |||
75 | TagLib::String publisher; | | |||
76 | TagLib::String label; | | |||
77 | TagLib::String author; | | |||
78 | TagLib::String license; | | |||
79 | TagLib::String lyrics; | | |||
80 | TagLib::String compilation; | | |||
81 | TagLib::StringList genres; | | |||
82 | QString replayGainAlbumGain; | | |||
83 | QString replayGainAlbumPeak; | | |||
84 | QString replayGainTrackGain; | | |||
85 | QString replayGainTrackPeak; | | |||
86 | QVariant discNumber; | | |||
87 | QVariant opus; | | |||
88 | QVariant rating; | | |||
89 | }; | | |||
90 | void extractId3Tags(TagLib::ID3v2::Tag* id3Tags, ExtractedData& data); | | |||
91 | void extractMp4Tags(TagLib::MP4::Tag* mp4Tags, ExtractedData& data); | | |||
92 | void extractApeTags(TagLib::APE::Tag* apeTags, ExtractedData& data); | | |||
93 | void extractVorbisTags(TagLib::Ogg::XiphComment* vorbisTags, ExtractedData& data); | | |||
94 | void extractAsfTags(TagLib::ASF::Tag* asfTags, ExtractedData& data); | | |||
95 | }; | 61 | }; | ||
96 | 62 | | |||
97 | } | 63 | } | ||
98 | 64 | | |||
99 | #endif // TAGLIBEXTRACTOR_H | 65 | #endif // TAGLIBEXTRACTOR_H |