00001 #include <QUrl>
00002
00003 #include "mythdirs.h"
00004 #include "mythdbcon.h"
00005
00006 #include "metadataimagehelper.h"
00007
00008 ArtworkMap GetArtwork(QString inetref,
00009 uint season,
00010 bool strict)
00011 {
00012 ArtworkMap map;
00013
00014 MSqlQuery query(MSqlQuery::InitCon());
00015
00016 QString querystring = "SELECT host, coverart, fanart, banner "
00017 "FROM recordedartwork WHERE inetref = :INETREF ";
00018
00019 if (strict)
00020 querystring += "AND season = :SEASON;";
00021 else
00022 {
00023 if (season > 0)
00024 {
00025 querystring += "ORDER BY season = :SEASON DESC, season DESC;";
00026 }
00027 else
00028 querystring += "ORDER BY season DESC;";
00029 }
00030
00031 query.prepare(querystring);
00032
00033 query.bindValue(":INETREF", inetref);
00034 if (strict || season > 0)
00035 query.bindValue(":SEASON", season);
00036
00037 if (!query.exec())
00038 {
00039 MythDB::DBError("GetArtwork SELECT", query);
00040 return map;
00041 }
00042
00043 if (query.next())
00044 {
00045 QString host = query.value(0).toString();
00046 QString coverart = query.value(1).toString();
00047 QString fanart = query.value(2).toString();
00048 QString banner = query.value(3).toString();
00049
00050 if (!coverart.isEmpty())
00051 {
00052 ArtworkInfo coverartinfo;
00053 coverartinfo.url = generate_myth_url("Coverart", host, coverart);
00054 map.insert(kArtworkCoverart, coverartinfo);
00055 }
00056
00057 if (!fanart.isEmpty())
00058 {
00059 ArtworkInfo fanartinfo;
00060 fanartinfo.url = generate_myth_url("Fanart", host, fanart);
00061 map.insert(kArtworkFanart, fanartinfo);
00062 }
00063
00064 if (!banner.isEmpty())
00065 {
00066 ArtworkInfo bannerinfo;
00067 bannerinfo.url = generate_myth_url("Banners", host, banner);
00068 map.insert(kArtworkBanner, bannerinfo);
00069 }
00070 }
00071
00072 return map;
00073 }
00074
00075 bool SetArtwork(const QString &inetref,
00076 uint season,
00077 const QString &host,
00078 const QString &coverart,
00079 const QString &fanart,
00080 const QString &banner)
00081 {
00082 bool ret = false;
00083 ArtworkMap map;
00084
00085 if (!coverart.isEmpty())
00086 {
00087 ArtworkInfo coverartinfo;
00088 coverartinfo.url = generate_myth_url("Coverart", host, coverart);
00089 map.insert(kArtworkCoverart, coverartinfo);
00090 }
00091
00092 if (!fanart.isEmpty())
00093 {
00094 ArtworkInfo fanartinfo;
00095 fanartinfo.url = generate_myth_url("Fanart", host, fanart);
00096 map.insert(kArtworkFanart, fanartinfo);
00097 }
00098
00099 if (!banner.isEmpty())
00100 {
00101 ArtworkInfo bannerinfo;
00102 bannerinfo.url = generate_myth_url("Banners", host, banner);
00103 map.insert(kArtworkBanner, bannerinfo);
00104 }
00105
00106 ret = SetArtwork(inetref, season, host, map);
00107
00108 return ret;
00109 }
00110
00111 bool SetArtwork(const QString &inetref,
00112 uint season,
00113 const QString &host,
00114 const ArtworkMap map)
00115 {
00116 if (inetref.isEmpty())
00117 return false;
00118
00119 QString coverart, fanart, banner;
00120
00121 QUrl coverurl(map.value(kArtworkCoverart).url);
00122 if (!coverurl.path().isEmpty())
00123 {
00124 coverart = coverurl.path();
00125 coverart = coverart.remove(0,1);
00126 }
00127
00128 QUrl fanarturl(map.value(kArtworkFanart).url);
00129 if (!fanarturl.path().isEmpty())
00130 {
00131 fanart = fanarturl.path();
00132 fanart = fanart.remove(0,1);
00133 }
00134
00135 QUrl bannerurl(map.value(kArtworkBanner).url);
00136 if (!bannerurl.path().isEmpty())
00137 {
00138 banner = bannerurl.path();
00139 banner = banner.remove(0,1);
00140 }
00141
00142
00143
00144 MSqlQuery prequery(MSqlQuery::InitCon());
00145 prequery.prepare("DELETE FROM recordedartwork WHERE "
00146 "inetref = :INETREF AND season = :SEASON;");
00147
00148 prequery.bindValue(":INETREF", inetref);
00149 prequery.bindValue(":SEASON", season);
00150
00151 if (!prequery.exec())
00152 {
00153 MythDB::DBError("SetArtwork DELETE FROM", prequery);
00154 return false;
00155 }
00156
00157
00158 MSqlQuery query(MSqlQuery::InitCon());
00159 query.prepare("INSERT INTO recordedartwork(inetref,"
00160 "season,host,coverart,fanart,banner) VALUES( "
00161 ":INETREF, :SEASON, :HOST, :COVERART, "
00162 ":FANART, :BANNER);");
00163
00164 query.bindValue(":INETREF", inetref);
00165 query.bindValue(":SEASON", season);
00166 query.bindValue(":HOST", host);
00167 query.bindValue(":COVERART", coverart.isNull() ? "" : coverart);
00168 query.bindValue(":FANART", fanart.isNull() ? "" : fanart);
00169 query.bindValue(":BANNER", banner.isNull() ? "" : banner);
00170
00171 if (!query.exec())
00172 {
00173 MythDB::DBError("SetArtwork INSERT INTO", query);
00174 return false;
00175 }
00176
00177 return true;
00178 }