MythTV master
metaio.h
Go to the documentation of this file.
1#ifndef METAIO_H_
2#define METAIO_H_
3
4// POSIX C headers
5#include <unistd.h>
6#include <fcntl.h>
7#include <sys/stat.h>
8
9// QT
10#include <QString>
11
12// libmythmetadata
13#include "musicmetadata.h"
14
15static constexpr const char* MYTH_MUSICBRAINZ_ALBUMARTIST_UUID { "89ad4ac3-39f7-470e-963a-56509c546377" };
16
18{
19 public:
20 MetaIO();
21 virtual ~MetaIO(void) = default;
22
30 virtual bool write(const QString &filename, MusicMetadata* mdata) = 0;
31
38 virtual bool writeVolatileMetadata([[maybe_unused]] const QString & filename,
39 [[maybe_unused]] MusicMetadata* mdata)
40 {
41 return false;
42 }
43
50 virtual MusicMetadata* read(const QString &filename) = 0;
51
57 virtual bool supportsEmbeddedImages(void)
58 {
59 return false;
60 }
61
68 virtual AlbumArtList getAlbumArtList([[maybe_unused]] const QString &filename)
69 {
70 return {};
71 }
72
73 virtual bool writeAlbumArt([[maybe_unused]] const QString &filename,
74 [[maybe_unused]] const AlbumArtImage *albumart)
75 {
76 return false;
77 }
78
79 virtual bool removeAlbumArt([[maybe_unused]] const QString &filename,
80 [[maybe_unused]] const AlbumArtImage *albumart)
81 {
82 return false;
83 }
84
85 virtual bool changeImageType([[maybe_unused]] const QString &filename,
86 [[maybe_unused]] const AlbumArtImage *albumart,
87 [[maybe_unused]] ImageType newType)
88 {
89 return false;
90 }
91
92 virtual QImage *getAlbumArt([[maybe_unused]] const QString &filename,
93 [[maybe_unused]] ImageType type)
94 {
95 return nullptr;
96 }
97
108 void readFromFilename(const QString &filename, QString &artist,
109 QString &album, QString &title, QString &genre,
110 int &tracknum);
111
119 MusicMetadata* readFromFilename(const QString &filename, bool blnLength = false);
120
121 void readFromFilename(MusicMetadata *metadata);
122
123 virtual bool TagExists([[maybe_unused]] const QString &filename)
124 {
125 return false;
126 }
127
137 static MetaIO *createTagger(const QString &filename);
138
147 static MusicMetadata *readMetadata(const QString &filename);
148
158 static MusicMetadata *getMetadata(const QString &filename);
159
160 static const QString kValidFileExtensions;
161
162 protected:
163 void saveTimeStamps(void);
164 void restoreTimeStamps(void);
165
166 virtual std::chrono::milliseconds getTrackLength(const QString &filename) = 0;
167
168 QString m_filename;
170
171 struct stat m_fileinfo {};
172};
173
174#endif
175
Definition: metaio.h:18
virtual bool changeImageType(const QString &filename, const AlbumArtImage *albumart, ImageType newType)
Definition: metaio.h:85
virtual bool write(const QString &filename, MusicMetadata *mdata)=0
Writes all metadata back to a file.
virtual MusicMetadata * read(const QString &filename)=0
Reads MusicMetadata from a file.
QString m_filenameFormat
Definition: metaio.h:169
virtual ~MetaIO(void)=default
static const QString kValidFileExtensions
Definition: metaio.h:160
virtual bool writeAlbumArt(const QString &filename, const AlbumArtImage *albumart)
Definition: metaio.h:73
virtual QImage * getAlbumArt(const QString &filename, ImageType type)
Definition: metaio.h:92
QString m_filename
Definition: metaio.h:168
virtual std::chrono::milliseconds getTrackLength(const QString &filename)=0
virtual bool TagExists(const QString &filename)
Definition: metaio.h:123
virtual bool supportsEmbeddedImages(void)
Does the tag support embedded cover art.
Definition: metaio.h:57
virtual bool removeAlbumArt(const QString &filename, const AlbumArtImage *albumart)
Definition: metaio.h:79
virtual bool writeVolatileMetadata(const QString &filename, MusicMetadata *mdata)
Writes rating and playcount back to a file.
Definition: metaio.h:38
virtual AlbumArtList getAlbumArtList(const QString &filename)
Reads the list of embedded images in the tag.
Definition: metaio.h:68
static constexpr const char * MYTH_MUSICBRAINZ_ALBUMARTIST_UUID
Definition: metaio.h:15
ImageType
Definition: musicmetadata.h:29
QList< AlbumArtImage * > AlbumArtList
Definition: musicmetadata.h:56
#define META_PUBLIC
Definition: mythmetaexp.h:9