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 
15 static 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 
MetaIO::changeImageType
virtual bool changeImageType([[maybe_unused]] const QString &filename, [[maybe_unused]] const AlbumArtImage *albumart, [[maybe_unused]] ImageType newType)
Definition: metaio.h:85
MetaIO::TagExists
virtual bool TagExists([[maybe_unused]] const QString &filename)
Definition: metaio.h:123
discid.disc.read
def read(device=None, features=[])
Definition: disc.py:35
mythburn.write
def write(text, progress=True)
Definition: mythburn.py:307
MetaIO
Definition: metaio.h:17
MetaIO::m_filename
QString m_filename
Definition: metaio.h:168
MusicMetadata
Definition: musicmetadata.h:80
MetaIO::supportsEmbeddedImages
virtual bool supportsEmbeddedImages(void)
Does the tag support embedded cover art.
Definition: metaio.h:57
MetaIO::writeVolatileMetadata
virtual bool writeVolatileMetadata([[maybe_unused]] const QString &filename, [[maybe_unused]] MusicMetadata *mdata)
Writes rating and playcount back to a file.
Definition: metaio.h:38
MetaIO::removeAlbumArt
virtual bool removeAlbumArt([[maybe_unused]] const QString &filename, [[maybe_unused]] const AlbumArtImage *albumart)
Definition: metaio.h:79
MetaIO::m_fileinfo
Definition: metaio.h:171
MetaIO::getAlbumArt
virtual QImage * getAlbumArt([[maybe_unused]] const QString &filename, [[maybe_unused]] ImageType type)
Definition: metaio.h:92
AlbumArtList
QList< AlbumArtImage * > AlbumArtList
Definition: musicmetadata.h:56
MetaIO::getAlbumArtList
virtual AlbumArtList getAlbumArtList([[maybe_unused]] const QString &filename)
Reads the list of embedded images in the tag.
Definition: metaio.h:68
MYTH_MUSICBRAINZ_ALBUMARTIST_UUID
static constexpr const char * MYTH_MUSICBRAINZ_ALBUMARTIST_UUID
Definition: metaio.h:15
AlbumArtImage
Definition: musicmetadata.h:39
build_compdb.filename
filename
Definition: build_compdb.py:21
MetaIO::kValidFileExtensions
static const QString kValidFileExtensions
Definition: metaio.h:160
ImageType
ImageType
Definition: musicmetadata.h:28
META_PUBLIC
#define META_PUBLIC
Definition: mythmetaexp.h:9
MetaIO::m_filenameFormat
QString m_filenameFormat
Definition: metaio.h:169
musicmetadata.h
MetaIO::writeAlbumArt
virtual bool writeAlbumArt([[maybe_unused]] const QString &filename, [[maybe_unused]] const AlbumArtImage *albumart)
Definition: metaio.h:73