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(void)
21  : m_filenameFormat(gCoreContext->GetSetting("NonID3FileNameFormat").toUpper()) {};
22  virtual ~MetaIO(void) = default;
23 
31  virtual bool write(const QString &filename, MusicMetadata* mdata) = 0;
32 
39  virtual bool writeVolatileMetadata(const QString & filename, MusicMetadata* mdata)
40  {
41  // These are here so that the parameters can be documented
42  // with doxygen.
43  (void) filename;
44  (void) mdata;
45  return false;
46  }
47 
54  virtual MusicMetadata* read(const QString &filename) = 0;
55 
61  virtual bool supportsEmbeddedImages(void)
62  {
63  return false;
64  }
65 
72  virtual AlbumArtList getAlbumArtList(const QString &filename)
73  {
74  (void)filename;
75  return {};
76  }
77 
78  virtual bool writeAlbumArt(const QString &filename,
79  const AlbumArtImage *albumart)
80  {
81  (void)filename;
82  (void)albumart;
83  return false;
84  }
85 
86  virtual bool removeAlbumArt(const QString &filename,
87  const AlbumArtImage *albumart)
88  {
89  (void)filename;
90  (void)albumart;
91  return false;
92  }
93 
94  virtual bool changeImageType(const QString &filename,
95  const AlbumArtImage *albumart,
96  ImageType newType)
97  {
98  (void)filename;
99  (void)albumart;
100  (void)newType;
101  return false;
102  }
103 
104  virtual QImage *getAlbumArt(const QString &filename, ImageType type)
105  {
106  (void)filename;
107  (void)type;
108  return nullptr;
109  }
110 
121  void readFromFilename(const QString &filename, QString &artist,
122  QString &album, QString &title, QString &genre,
123  int &tracknum);
124 
132  MusicMetadata* readFromFilename(const QString &filename, bool blnLength = false);
133 
134  void readFromFilename(MusicMetadata *metadata);
135 
136  virtual bool TagExists(const QString &filename)
137  {
138  (void)filename;
139  return false;
140  }
141 
151  static MetaIO *createTagger(const QString &filename);
152 
161  static MusicMetadata *readMetadata(const QString &filename);
162 
172  static MusicMetadata *getMetadata(const QString &filename);
173 
174  static const QString kValidFileExtensions;
175 
176  protected:
177  void saveTimeStamps(void);
178  void restoreTimeStamps(void);
179 
180  virtual std::chrono::milliseconds getTrackLength(const QString &filename) = 0;
181 
182  QString m_filename;
184 
185  struct stat m_fileinfo {};
186 };
187 
188 #endif
189 
MetaIO::getAlbumArt
virtual QImage * getAlbumArt(const QString &filename, ImageType type)
Definition: metaio.h:104
discid.disc.read
def read(device=None, features=[])
Definition: disc.py:35
mythburn.write
def write(text, progress=True)
Definition: mythburn.py:308
MetaIO
Definition: metaio.h:17
MetaIO::m_filename
QString m_filename
Definition: metaio.h:182
MetaIO::writeAlbumArt
virtual bool writeAlbumArt(const QString &filename, const AlbumArtImage *albumart)
Definition: metaio.h:78
MusicMetadata
Definition: musicmetadata.h:80
MetaIO::changeImageType
virtual bool changeImageType(const QString &filename, const AlbumArtImage *albumart, ImageType newType)
Definition: metaio.h:94
MetaIO::supportsEmbeddedImages
virtual bool supportsEmbeddedImages(void)
Does the tag support embedded cover art.
Definition: metaio.h:61
MetaIO::MetaIO
MetaIO(void)
Definition: metaio.h:20
MetaIO::m_fileinfo
Definition: metaio.h:185
MetaIO::removeAlbumArt
virtual bool removeAlbumArt(const QString &filename, const AlbumArtImage *albumart)
Definition: metaio.h:86
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:54
MetaIO::getAlbumArtList
virtual AlbumArtList getAlbumArtList(const QString &filename)
Reads the list of embedded images in the tag.
Definition: metaio.h:72
AlbumArtList
QList< AlbumArtImage * > AlbumArtList
Definition: musicmetadata.h:56
MetaIO::writeVolatileMetadata
virtual bool writeVolatileMetadata(const QString &filename, MusicMetadata *mdata)
Writes rating and playcount back to a file.
Definition: metaio.h:39
MYTH_MUSICBRAINZ_ALBUMARTIST_UUID
static constexpr const char * MYTH_MUSICBRAINZ_ALBUMARTIST_UUID
Definition: metaio.h:15
AlbumArtImage
Definition: musicmetadata.h:39
MetaIO::TagExists
virtual bool TagExists(const QString &filename)
Definition: metaio.h:136
build_compdb.filename
filename
Definition: build_compdb.py:21
MetaIO::kValidFileExtensions
static const QString kValidFileExtensions
Definition: metaio.h:174
META_PUBLIC
#define META_PUBLIC
Definition: mythmetaexp.h:9
MetaIO::m_filenameFormat
QString m_filenameFormat
Definition: metaio.h:183
ImageType
ImageType
Definition: musicmetadata.h:28
musicmetadata.h