|
MythTV
0.26-pre
|
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 // Have to delete the old row for this item 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 // Now we can insert the new 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 }
1.7.6.1