25 changes: 18 additions & 7 deletions mythtv/bindings/python/ttvdbv4/definitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def _handle_list(handle, data):
return l


"""Generated API for thetvdb.com TVDB API V4 v 4.4.0"""
"""Generated API for thetvdb.com TVDB API V4 v 4.4.0 @6c60be0 """
# modifications marked with '### XXX'


Expand Down Expand Up @@ -210,8 +210,8 @@ def __init__(self, data):
class CompanyType(object):
"""A company type record"""
def __init__(self, data):
self.id = data.get('id', 0) # integer
self.name = data.get('name', '') # string
self.companyTypeId = data.get('companyTypeId', 0) # integer
self.companyTypeName = data.get('companyTypeName', '') # string


class ContentRating(object):
Expand Down Expand Up @@ -604,7 +604,12 @@ def __init__(self, data):


class SeriesBaseRecord(object):
"""The base record for a series"""
"""
The base record for a series. All series airs time like firstAired, lastAired, nextAired, etc.
are in US EST for US series, and for all non-US series, the time of the show’s
country capital or most populous city. For streaming services, is the official release time.
See https://support.thetvdb.com/kb/faq.php?id=29.
"""
def __init__(self, data):
self.abbreviation = data.get('abbreviation', '') # string
self.aliases = _handle_list(Alias, data.get('aliases'))
Expand All @@ -630,7 +635,12 @@ def __init__(self, data):


class SeriesExtendedRecord(object):
"""The extended record for a series"""
"""
The extended record for a series. All series airs time like firstAired, lastAired, nextAired, etc.
are in US EST for US series, and for all non-US series, the time of the show’s country capital
or most populous city. For streaming services, is the official release time.
See https://support.thetvdb.com/kb/faq.php?id=29.
"""
def __init__(self, data):
self.abbreviation = data.get('abbreviation', '') # string
self.airsDays = _handle_single(SeriesAirsDays, data.get('airsDays'))
Expand Down Expand Up @@ -660,8 +670,8 @@ def __init__(self, data):
self.status = _handle_single(Status, data.get('status'))
self.trailers = _handle_list(Trailer, data.get('trailers'))
# additional attributes needed by the mythtv grabber script:
# self.translations = [] # ### XXX
self.translations = _handle_single(Translations, data.get('translations'))
self.translations = [] # ### XXX
#self.translations = _handle_single(Translations, data.get('translations'))
self.name_similarity = 0.0


Expand Down Expand Up @@ -792,6 +802,7 @@ def __init__(self, data):
self.self = data.get('self', '') # string
self.next = data.get('next', '') # string


# ### XXX items not in OAS API Spec:

class Translations(object):
Expand Down
57 changes: 16 additions & 41 deletions mythtv/bindings/python/ttvdbv4/myth4ttvdbv4.py
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,6 @@ def _get_info_from_translations(self, translations):
name_found = True
desc = t.overview
if name_found and desc:
# print(desc)
raise StopIteration
except (KeyError, ValueError):
continue
Expand Down Expand Up @@ -511,38 +510,21 @@ def buildSingle(self):
episode = self.tvdata[2]

# get series data:
ser_x = ttvdb.getSeriesExtended(inetref, meta='translations')

# get preferred translations if not already there (see 'meta' argument)
if ser_x.translations:
# remove unwanted translations:
translations = [x for x in ser_x.translations.nameTranslations
if x.language in self.languagelist]
# sort the translations
ser_x.translations = sort_list_by_lang(translations, self.languagelist)
else:
ser_x.translations = []
for lang in self._select_preferred_langs(ser_x.nameTranslations):
translation = ttvdb.getSeriesTranslation(inetref, lang)
ser_x.translations.append(translation)
ser_x = ttvdb.getSeriesExtended(inetref)

ser_x.translations = []
for lang in self._select_preferred_langs(ser_x.nameTranslations):
translation = ttvdb.getSeriesTranslation(inetref, lang)
ser_x.translations.append(translation)

if self.debug:
print("%04d: buildSingle: Series information for %s:"
% (self._get_ellapsed_time(), inetref))
_print_class_content(ser_x)

# get episode information:
gen_episodes = ttvdb.getSeriesEpisodes(inetref, season_type='default', yielded=True)
try:
while True:
# get the episode and check season#
ep = next(gen_episodes)
if ep.seasonNumber == season and ep.number == episode:
break
except StopIteration:
print("Nothing found")
raise

gen_episodes = ttvdb.getSeriesEpisodes(inetref, season_type='default', season=season,
episodeNumber=episode, yielded=True)
ep = next(gen_episodes)
epi_x = ttvdb.getEpisodeExtended(ep.id)
for lang in self._select_preferred_langs(epi_x.nameTranslations):
translation = ttvdb.getEpisodeTranslation(epi_x.id, lang)
Expand Down Expand Up @@ -590,20 +572,13 @@ def buildCollection(self, other_inetref=None, xml_output=True):
% (self._get_ellapsed_time(), tvinetref, xml_output))

# get data for passed inetref and preferred translations
ser_x = ttvdb.getSeriesExtended(tvinetref, meta='translations')

# get preferred translations if not already there (see 'meta' argument)
if ser_x.translations:
# remove unwanted translations:
translations = [x for x in ser_x.translations.nameTranslations
if x.language in self.languagelist]
# sort the translations
ser_x.translations = sort_list_by_lang(translations, self.languagelist)
else:
ser_x.translations = []
for lang in self._select_preferred_langs(ser_x.nameTranslations):
translation = ttvdb.getSeriesTranslation(tvinetref, lang)
ser_x.translations.append(translation)
ser_x = ttvdb.getSeriesExtended(tvinetref)

ser_x.translations = []
for lang in self._select_preferred_langs(ser_x.nameTranslations):
translation = ttvdb.getSeriesTranslation(tvinetref, lang)
ser_x.translations.append(translation)

# define exact name found:
ser_x.name_similarity = 1.0

Expand Down
8 changes: 5 additions & 3 deletions mythtv/bindings/python/ttvdbv4/ttvdbv4_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
from .definitions import *


MYTHTV_TTVDBV4_API_VERSION = "4.4.0.0"
MYTHTV_TTVDBV4_API_VERSION = "4.4.0.1"

# set this to true for showing raw json data
#JSONDEBUG = True
Expand Down Expand Up @@ -91,7 +91,7 @@ def _query_yielded(record, path, params, listname=None):
params['page'] = curr_page


"""Generated API for thetvdb.com TVDB API V4 v 4.4.0"""
"""Generated API for thetvdb.com TVDB API V4 v 4.4.0 @6c60be0 """
# modifications marked with '### XXX'


Expand Down Expand Up @@ -529,10 +529,12 @@ def getSeriesExtended(id, meta=None):
return( SeriesExtendedRecord(data) if data is not None else None )


def getSeriesEpisodes(id, season_type, season=None, page=0, yielded=False):
def getSeriesEpisodes(id, season_type, season=None, episodeNumber=None, page=0, yielded=False):
params = {}
if season is not None:
params['season'] = season
if episodeNumber is not None:
params['episodeNumber'] = episodeNumber
if page is not None:
params['page'] = page
path = getSeriesEpisodes_path.format(id=str(id), season_type=season_type)
Expand Down
2 changes: 1 addition & 1 deletion mythtv/libs/libmythbase/mythcoreutil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ QByteArray gzipCompress(const QByteArray& data)
std::array <char,1024> out {};

// allocate inflate state
z_stream strm;
z_stream strm {};

strm.zalloc = Z_NULL;
strm.zfree = Z_NULL;
Expand Down
16 changes: 0 additions & 16 deletions mythtv/libs/libmythtv/channelscan/panedvbs2.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,20 +65,4 @@ class PaneDVBS2 : public GroupSetting
ScanRollOff *m_prolloff {nullptr};
};

// Update default tuning parameters from reference transponder
void PaneDVBS2::SetTuningParameters(StandardSetting *setting)
{
QString sat = setting->getValue();
QString frequency = m_transponder->getFrequency(sat);
if (!frequency.isEmpty())
{
setFrequency(frequency.toUInt());
setPolarity(m_transponder->getPolarity(sat));
setSymbolrate(m_transponder->getSymbolrate(sat));
setModulation(m_transponder->getModulation(sat));
setModSys(m_transponder->getModSys(sat));
setFec(m_transponder->getFec(sat));
}
}

#endif // PANE_DVBS2_H
16 changes: 16 additions & 0 deletions mythtv/libs/libmythtv/channelscan/scanwizardconfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,22 @@
#include "satiputils.h"
#endif

// Update default tuning parameters from reference transponder
void PaneDVBS2::SetTuningParameters(StandardSetting *setting)
{
QString sat = setting->getValue();
QString frequency = m_transponder->getFrequency(sat);
if (!frequency.isEmpty())
{
setFrequency(frequency.toUInt());
setPolarity(m_transponder->getPolarity(sat));
setSymbolrate(m_transponder->getSymbolrate(sat));
setModulation(m_transponder->getModulation(sat));
setModSys(m_transponder->getModSys(sat));
setFec(m_transponder->getFec(sat));
}
}

void ScanWizard::SetupConfig(
uint default_sourceid, uint default_cardid,
const QString& default_inputname)
Expand Down
7 changes: 4 additions & 3 deletions mythtv/libs/libmythtv/mpeg/dvbdescriptors.h
Original file line number Diff line number Diff line change
Expand Up @@ -2894,11 +2894,12 @@ class DVBContentIdentifierDescriptor : public MPEGDescriptor
// A content identifier is a URI. It may contain UTF-8 encoded using %XX.
QString ContentId(size_t n=0) const
{
// cppcheck-suppress AssignmentAddressToInteger
int length = m_crid[n][1];
// Access the array in two steps so cppcheck doesn't get confused.
const uint8_t* cridN = m_crid[n];
int length = cridN[1];
int positionOfHash = length-1;
while (positionOfHash >= 0) {
if (m_crid[n][2 + positionOfHash] == '#') {
if (cridN[2 + positionOfHash] == '#') {
length = positionOfHash; /* remove the hash and the following IMI */
break;
}
Expand Down
2 changes: 1 addition & 1 deletion mythtv/libs/libmythtv/mpeg/dvbstreamdata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -619,7 +619,7 @@ bool DVBStreamData::HasCachedAnyNIT(bool current) const
LOG(VB_GENERAL, LOG_WARNING, LOC +
"Currently we ignore \'current\' param");

return (bool)(m_cachedNit.size());
return !m_cachedNit.empty();
}

bool DVBStreamData::HasCachedAllNIT(bool current) const
Expand Down
2 changes: 1 addition & 1 deletion mythtv/libs/libmythtv/mpeg/mpegtables.h
Original file line number Diff line number Diff line change
Expand Up @@ -748,7 +748,7 @@ class MTV_PUBLIC ProgramMapTable : public PSIPTable
{ return m_ptrs[i] + 5; }

uint StreamCount(void) const
{ return (m_ptrs.size()) ? m_ptrs.size()-1 : 0; }
{ return (!m_ptrs.empty()) ? m_ptrs.size()-1 : 0; }

// sets
void SetPCRPID(uint pid)
Expand Down
4 changes: 3 additions & 1 deletion mythtv/libs/libmythtv/mpeg/splicedescriptors.h
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,9 @@ class SegmentationDescriptor : public SpliceDescriptor
// segmentation_upid() ? _ptrs[1]+2
const unsigned char *SegmentationUPID(void) const
{
return _ptrs[1]+2;
// Access the array in two steps so cppcheck doesn't get confused.
unsigned char const *p = _ptrs[1];
return p+2;
}
QString SegmentationUPIDString(void) const
{
Expand Down
6 changes: 3 additions & 3 deletions mythtv/libs/libmythtv/mythtvmenu.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,13 @@ class MythTVMenuItemContext
bool IsMenu, const QString& TextArg) const;

MythTVMenuItemContext(const MythTVMenu& Menu, const QDomNode& Node,
QString Name, MenuCurrentContext Current, bool Display);
QString Name, MenuCurrentContext Current, bool Visible);
MythTVMenuItemContext(const MythTVMenu& Menu, const QDomNode& Node,
MenuShowContext Context, MenuCurrentContext Current,
QString Action, QString ActionText, bool Display);
QString Action, QString ActionText, bool Visible);
MythTVMenuItemContext(const MythTVMenu& Menu, const QDomNode& Node,
MenuShowContext Context, MenuCurrentContext Current,
QString Action, bool Display);
QString Action, bool Visible);

const MythTVMenu& m_menu;
const QDomNode& m_node;
Expand Down
4 changes: 3 additions & 1 deletion mythtv/libs/libmythtv/mythvideogpu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ MythVideoGPU::MythVideoGPU(MythRender *Render, MythVideoColourSpace* ColourSpace
if (m_videoColourSpace)
{
m_videoColourSpace->IncrRef();
connect(m_videoColourSpace, &MythVideoColourSpace::Updated, this, &MythVideoGPU::UpdateColourSpace);
// Not a call to UpdateColourSpace. Only a callback registration.
connect(m_videoColourSpace, &MythVideoColourSpace::Updated,
this, &MythVideoGPU::UpdateColourSpace);
}

m_stereoMode = gCoreContext->GetBoolSetting("DiscardStereo3D", true) ?
Expand Down
10 changes: 8 additions & 2 deletions mythtv/libs/libmythtv/mythvideogpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ class MythVideoGPU : public QObject

static QString VideoResizeToString(VideoResizing Resize);

MythVideoGPU(MythRender* Render, MythVideoColourSpace* ColourSpace,
MythVideoBounds* Bounds, const MythVideoProfilePtr& VideoProfile, QString Profile);
~MythVideoGPU() override;

virtual void StartFrame () = 0;
Expand Down Expand Up @@ -66,6 +64,14 @@ class MythVideoGPU : public QObject
void UpscalerChanged (const QString& Upscaler);

protected:
// Protecting this function means its not possible to create an
// instance of this base class. Because ColourSpaceUpdate is a
// pure virtual all sub-classes must override this function, which
// should make it safe to quiet the cppcheck warning about the
// constructor calling ColourSpaceUpdate.
MythVideoGPU(MythRender* Render, MythVideoColourSpace* ColourSpace,
MythVideoBounds* Bounds, const MythVideoProfilePtr& VideoProfile, QString Profile);
// cppcheck-suppress pureVirtualCall
virtual void ColourSpaceUpdate (bool PrimariesChanged) = 0;

MythRender* m_render { nullptr };
Expand Down
18 changes: 9 additions & 9 deletions mythtv/libs/libmythtv/recorders/DeviceReadBuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ void DeviceReadBuffer::run(void)

uint errcnt = 0;
uint cnt = 0;
ssize_t len = 0;
ssize_t read_len = 0;
size_t total = 0;
size_t throttle = m_devReadSize * m_devBufferCount / 2;

Expand Down Expand Up @@ -340,8 +340,8 @@ void DeviceReadBuffer::run(void)

/* Some device drivers segment their buffer into small pieces,
* So allow for the reading of multiple buffers */
for (cnt = 0, len = 0, total = 0;
m_doRun && len >= 0 && cnt < m_devBufferCount; ++cnt)
for (cnt = 0, read_len = 0, total = 0;
m_doRun && read_len >= 0 && cnt < m_devBufferCount; ++cnt)
{
// Limit read size for faster return from read
auto unused = static_cast<size_t>(WaitForUnused(m_readQuanta));
Expand All @@ -350,17 +350,17 @@ void DeviceReadBuffer::run(void)
// if read_size > 0 do the read...
if (read_size)
{
len = read(m_streamFd, m_writePtr, read_size);
if (!CheckForErrors(len, read_size, errcnt))
read_len = read(m_streamFd, m_writePtr, read_size);
if (!CheckForErrors(read_len, read_size, errcnt))
break;
errcnt = 0;

// if we wrote past the official end of the buffer,
// copy to start
if (m_writePtr + len > m_endPtr)
memcpy(m_buffer, m_endPtr, m_writePtr + len - m_endPtr);
IncrWritePointer(len);
total += len;
if (m_writePtr + read_len > m_endPtr)
memcpy(m_buffer, m_endPtr, m_writePtr + read_len - m_endPtr);
IncrWritePointer(read_len);
total += read_len;
}
}
if (errcnt > 5)
Expand Down
1 change: 0 additions & 1 deletion mythtv/libs/libmythui/mythrect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,6 @@ QRect MythRect::toQRect() const
///////////////////////////////////////////////////////////////////

MythPoint::MythPoint(const QString &sX, const QString &sY)
: QPoint()
{
setX(sX);
setY(sY);
Expand Down
2 changes: 1 addition & 1 deletion mythtv/libs/libmythui/mythrect.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ class MUI_PUBLIC MythPoint : public QPoint

public:
MythPoint()
: QPoint(), m_valid(false) {};
: m_valid(false) {};
MythPoint(int x, int y)
: QPoint(x, y) {}
MythPoint(const QString &sX, const QString &sY);
Expand Down
1 change: 0 additions & 1 deletion mythtv/libs/libmythui/mythrender.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
MythRender::MythRender(RenderType type)
: ReferenceCounter(QString("MythRender:%1").arg(type)),
m_type(type),
m_size(QSize()),
m_errored(false)
{
}
Expand Down
5 changes: 3 additions & 2 deletions mythtv/libs/libmythui/platforms/mythnvcontrol.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,8 @@ NVControl MythNVControl::Create()
auto queryversion = reinterpret_cast<bool(*)(Display*,int,int)>(lib.resolve("XNVCTRLQueryVersion"));
if (isnvscreen && queryversion)
{
if (auto * xdisplay = MythXDisplay::OpenMythXDisplay(false); xdisplay && xdisplay->GetDisplay())
auto * xdisplay = MythXDisplay::OpenMythXDisplay(false);
if (xdisplay && xdisplay->GetDisplay())
{
int major = 0;
int minor = 0;
Expand All @@ -162,8 +163,8 @@ NVControl MythNVControl::Create()
return res;
}
}
delete xdisplay;
}
delete xdisplay;
}
lib.unload();
}
Expand Down
2 changes: 1 addition & 1 deletion mythtv/libs/libmythupnp/upnpsubscription.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class Subscription
{
public:
Subscription(QUrl url, QString path)
: m_url(std::move(url)), m_path(std::move(path)), m_uuid(QString()) { }
: m_url(std::move(url)), m_path(std::move(path)) { }
QUrl m_url;
QString m_path;
QString m_uuid;
Expand Down
30 changes: 19 additions & 11 deletions mythtv/programs/mythbackend/scheduler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4372,41 +4372,49 @@ void Scheduler::AddNewRecords(void)

if (prefinputpri)
pwrpri += QString(" + "
"(capturecard.cardid = RECTABLE.prefinput) * %1").arg(prefinputpri);
"IF(capturecard.cardid = RECTABLE.prefinput, 1, 0) * %1")
.arg(prefinputpri);

if (hdtvpriority)
pwrpri += QString(" + (program.hdtv > 0 OR "
"FIND_IN_SET('HDTV', program.videoprop) > 0) * %1").arg(hdtvpriority);
pwrpri += QString(" + IF(program.hdtv > 0 OR "
"FIND_IN_SET('HDTV', program.videoprop) > 0, 1, 0) * %1")
.arg(hdtvpriority);

if (wspriority)
pwrpri += QString(" + "
"(FIND_IN_SET('WIDESCREEN', program.videoprop) > 0) * %1").arg(wspriority);
"IF(FIND_IN_SET('WIDESCREEN', program.videoprop) > 0, 1, 0) * %1")
.arg(wspriority);

if (slpriority)
pwrpri += QString(" + "
"(FIND_IN_SET('SIGNED', program.subtitletypes) > 0) * %1").arg(slpriority);
"IF(FIND_IN_SET('SIGNED', program.subtitletypes) > 0, 1, 0) * %1")
.arg(slpriority);

if (onscrpriority)
pwrpri += QString(" + "
"(FIND_IN_SET('ONSCREEN', program.subtitletypes) > 0) * %1").arg(onscrpriority);
"IF(FIND_IN_SET('ONSCREEN', program.subtitletypes) > 0, 1, 0) * %1")
.arg(onscrpriority);

if (ccpriority)
{
pwrpri += QString(" + "
"(FIND_IN_SET('NORMAL', program.subtitletypes) > 0 OR "
"program.closecaptioned > 0 OR program.subtitled > 0) * %1").arg(ccpriority);
"IF(FIND_IN_SET('NORMAL', program.subtitletypes) > 0 OR "
"program.closecaptioned > 0 OR program.subtitled > 0, 1, 0) * %1")
.arg(ccpriority);
}

if (hhpriority)
{
pwrpri += QString(" + "
"(FIND_IN_SET('HARDHEAR', program.subtitletypes) > 0 OR "
"FIND_IN_SET('HARDHEAR', program.audioprop) > 0) * %1").arg(hhpriority);
"IF(FIND_IN_SET('HARDHEAR', program.subtitletypes) > 0 OR "
"FIND_IN_SET('HARDHEAR', program.audioprop) > 0, 1, 0) * %1")
.arg(hhpriority);
}

if (adpriority)
pwrpri += QString(" + "
"(FIND_IN_SET('VISUALIMPAIR', program.audioprop) > 0) * %1").arg(adpriority);
"IF(FIND_IN_SET('VISUALIMPAIR', program.audioprop) > 0, 1, 0) * %1")
.arg(adpriority);

MSqlQuery result(m_dbConn);

Expand Down
1 change: 1 addition & 0 deletions mythtv/programs/mythbackend/services/dvr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,7 @@ bool Dvr::AddRecordedCredits(int RecordedId, const QJsonObject &jsonObj)
"%1 to DB").arg(person.toString());
}

delete credits;
return true;
}

Expand Down
3 changes: 3 additions & 0 deletions mythtv/programs/mythfilldatabase/xmltvparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,10 @@ bool XMLTVParser::parseFile(
do
{
if (!readNextWithErrorCheck(xml))
{
delete pginfo;
return false;
}
if (xml.name() == QString("title"))
{
QString text2=xml.readElementText(QXmlStreamReader::SkipChildElements);
Expand Down
2 changes: 0 additions & 2 deletions mythtv/programs/mythfrontend/playbackbox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -382,8 +382,6 @@ void * PlaybackBox::RunPlaybackBox(void * player, bool showTV)
PlaybackBox::PlaybackBox(MythScreenStack *parent, const QString& name,
TV *player, bool /*showTV*/)
: ScheduleCommon(parent, name),
// Artwork Variables
m_artHostOverride(),
// Recording Group settings
m_groupDisplayName(ProgramInfo::i18n("All Programs")),
m_recGroup("All Programs"),
Expand Down
3 changes: 1 addition & 2 deletions mythtv/programs/mythfrontend/upnpscanner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,12 @@ class UpnpMediaServer : public MediaServerItem
public:
UpnpMediaServer()
: MediaServerItem(QString("0"), QString(), QString(), QString()),
m_eventSubPath(QString()),
m_friendlyName(QString("Unknown"))
{
}
explicit UpnpMediaServer(QUrl URL)
: MediaServerItem(QString("0"), QString(), QString(), QString()),
m_serverURL(std::move(URL)), m_eventSubPath(QString()),
m_serverURL(std::move(URL)),
m_friendlyName(QString("Unknown"))
{
}
Expand Down
2 changes: 2 additions & 0 deletions mythtv/programs/mythutil/musicmetautils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ static int ExtractImage(const MythUtilCommandLineParser &cmdline)
if (!image->m_embedded || !tagger->supportsEmbeddedImages())
{
LOG(VB_GENERAL, LOG_ERR, QString("Either the image isn't embedded or the tagger doesn't support embedded images"));
delete tagger;
return GENERIC_EXIT_NOT_OK;
}

Expand All @@ -150,6 +151,7 @@ static int ExtractImage(const MythUtilCommandLineParser &cmdline)
if (!QDir(path).exists())
{
LOG(VB_GENERAL, LOG_ERR, "Cannot find a directory in the 'MusicArt' storage group to save to");
delete tagger;
return GENERIC_EXIT_NOT_OK;
}

Expand Down
2 changes: 1 addition & 1 deletion mythtv/programs/scripts/metadata/Television/ttvdb4.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

__title__ = "TheTVDatabaseV4"
__author__ = "Roland Ernst"
__version__ = "0.3.3"
__version__ = "0.4.0"


def print_etree(etostr):
Expand Down