2264 | | cerr << "Unknown xmltv channel identifier: " << mapiter.key() |
2265 | | << endl << "Skipping channel.\n"; |
2266 | | continue; |
2267 | | } |
2268 | | |
2269 | | QValueList<ProgInfo> *sortlist = &((*proglist)[mapiter.key()]); |
2270 | | |
2271 | | fixProgramList(sortlist); |
2272 | | |
2273 | | QValueList<ProgInfo>::iterator i = sortlist->begin(); |
2274 | | for (; i != sortlist->end(); i++) |
2275 | | { |
2276 | | query.prepare("SELECT * FROM program WHERE " |
2277 | | "chanid=:CHANID AND " |
2278 | | "starttime=:START AND " |
2279 | | "endtime=:END AND " |
2280 | | "title=:TITLE AND " |
2281 | | "subtitle=:SUBTITLE AND " |
2282 | | "description=:DESC AND " |
2283 | | "category=:CATEGORY AND " |
2284 | | "category_type=:CATEGORY_TYPE AND " |
2285 | | "airdate=:AIRDATE AND " |
2286 | | "stars=:STARS AND " |
2287 | | "previouslyshown=:PREVIOUSLYSHOWN AND " |
2288 | | "title_pronounce=:TITLE_PRONOUNCE AND " |
2289 | | "stereo=:STEREO AND " |
2290 | | "subtitled=:SUBTITLED AND " |
2291 | | "hdtv=:HDTV AND " |
2292 | | "closecaptioned=:CLOSECAPTIONED AND " |
2293 | | "partnumber=:PARTNUMBER AND " |
2294 | | "parttotal=:PARTTOTAL AND " |
2295 | | "seriesid=:SERIESID AND " |
2296 | | "showtype=:SHOWTYPE AND " |
2297 | | "colorcode=:COLORCODE AND " |
2298 | | "syndicatedepisodenumber=:SYNDICATEDEPISODENUMBER AND " |
2299 | | "programid=:PROGRAMID;"); |
2300 | | query.bindValue(":CHANID", chanid); |
2301 | | query.bindValue(":START", (*i).start); |
2302 | | query.bindValue(":END", (*i).end); |
2303 | | query.bindValue(":TITLE", (*i).title.utf8()); |
2304 | | query.bindValue(":SUBTITLE", (*i).subtitle.utf8()); |
2305 | | query.bindValue(":DESC", (*i).desc.utf8()); |
2306 | | query.bindValue(":CATEGORY", (*i).category.utf8()); |
2307 | | query.bindValue(":CATEGORY_TYPE", (*i).catType.utf8()); |
2308 | | query.bindValue(":AIRDATE", (*i).airdate.utf8()); |
2309 | | query.bindValue(":STARS", (*i).stars.utf8()); |
2310 | | query.bindValue(":PREVIOUSLYSHOWN", (*i).previouslyshown); |
2311 | | query.bindValue(":TITLE_PRONOUNCE", (*i).title_pronounce.utf8()); |
2312 | | query.bindValue(":STEREO", (*i).stereo); |
2313 | | query.bindValue(":SUBTITLED", (*i).subtitled); |
2314 | | query.bindValue(":HDTV", (*i).hdtv); |
2315 | | query.bindValue(":CLOSECAPTIONED", (*i).closecaptioned); |
2316 | | query.bindValue(":PARTNUMBER", (*i).partnumber); |
2317 | | query.bindValue(":PARTTOTAL", (*i).parttotal); |
2318 | | query.bindValue(":SERIESID", (*i).seriesid); |
2319 | | query.bindValue(":SHOWTYPE", (*i).showtype); |
2320 | | query.bindValue(":COLORCODE", (*i).colorcode); |
2321 | | query.bindValue(":SYNDICATEDEPISODENUMBER", (*i).syndicatedepisodenumber); |
2322 | | query.bindValue(":PROGRAMID", (*i).programid); |
2323 | | query.exec(); |
2324 | | |
2325 | | if (query.isActive() && query.size() > 0) |
| 2265 | chanid = *it; |
| 2266 | if (chanid == 0) |
2341 | | if (!quiet) |
| 2280 | query.prepare("SELECT * FROM program WHERE " |
| 2281 | "chanid=:CHANID AND " |
| 2282 | "starttime=:START AND " |
| 2283 | "endtime=:END AND " |
| 2284 | "title=:TITLE AND " |
| 2285 | "subtitle=:SUBTITLE AND " |
| 2286 | "description=:DESC AND " |
| 2287 | "category=:CATEGORY AND " |
| 2288 | "category_type=:CATEGORY_TYPE AND " |
| 2289 | "airdate=:AIRDATE AND " |
| 2290 | "stars=:STARS AND " |
| 2291 | "previouslyshown=:PREVIOUSLYSHOWN AND " |
| 2292 | "title_pronounce=:TITLE_PRONOUNCE AND " |
| 2293 | "stereo=:STEREO AND " |
| 2294 | "subtitled=:SUBTITLED AND " |
| 2295 | "hdtv=:HDTV AND " |
| 2296 | "closecaptioned=:CLOSECAPTIONED AND " |
| 2297 | "partnumber=:PARTNUMBER AND " |
| 2298 | "parttotal=:PARTTOTAL AND " |
| 2299 | "seriesid=:SERIESID AND " |
| 2300 | "showtype=:SHOWTYPE AND " |
| 2301 | "colorcode=:COLORCODE AND " |
| 2302 | "syndicatedepisodenumber=:SYNDICATEDEPISODENUMBER AND " |
| 2303 | "programid=:PROGRAMID;"); |
| 2304 | query.bindValue(":CHANID", chanid); |
| 2305 | query.bindValue(":START", (*i).start); |
| 2306 | query.bindValue(":END", (*i).end); |
| 2307 | query.bindValue(":TITLE", (*i).title.utf8()); |
| 2308 | query.bindValue(":SUBTITLE", (*i).subtitle.utf8()); |
| 2309 | query.bindValue(":DESC", (*i).desc.utf8()); |
| 2310 | query.bindValue(":CATEGORY", (*i).category.utf8()); |
| 2311 | query.bindValue(":CATEGORY_TYPE", (*i).catType.utf8()); |
| 2312 | query.bindValue(":AIRDATE", (*i).airdate.utf8()); |
| 2313 | query.bindValue(":STARS", (*i).stars.utf8()); |
| 2314 | query.bindValue(":PREVIOUSLYSHOWN", (*i).previouslyshown); |
| 2315 | query.bindValue(":TITLE_PRONOUNCE", (*i).title_pronounce.utf8()); |
| 2316 | query.bindValue(":STEREO", (*i).stereo); |
| 2317 | query.bindValue(":SUBTITLED", (*i).subtitled); |
| 2318 | query.bindValue(":HDTV", (*i).hdtv); |
| 2319 | query.bindValue(":CLOSECAPTIONED", (*i).closecaptioned); |
| 2320 | query.bindValue(":PARTNUMBER", (*i).partnumber); |
| 2321 | query.bindValue(":PARTTOTAL", (*i).parttotal); |
| 2322 | query.bindValue(":SERIESID", (*i).seriesid); |
| 2323 | query.bindValue(":SHOWTYPE", (*i).showtype); |
| 2324 | query.bindValue(":COLORCODE", (*i).colorcode); |
| 2325 | query.bindValue(":SYNDICATEDEPISODENUMBER", (*i).syndicatedepisodenumber); |
| 2326 | query.bindValue(":PROGRAMID", (*i).programid); |
| 2327 | query.exec(); |
| 2328 | |
| 2329 | if (query.isActive() && query.size() > 0) |
2385 | | subquery.exec(); |
2386 | | } |
2387 | | |
2388 | | query.prepare("INSERT INTO program (chanid,starttime,endtime," |
2389 | | "title,subtitle,description,category,category_type," |
2390 | | "airdate,stars,previouslyshown,title_pronounce,stereo," |
2391 | | "subtitled,hdtv,closecaptioned,partnumber,parttotal," |
2392 | | "seriesid,originalairdate,showtype,colorcode," |
2393 | | "syndicatedepisodenumber,programid) " |
2394 | | "VALUES(:CHANID,:STARTTIME,:ENDTIME,:TITLE," |
2395 | | ":SUBTITLE,:DESCRIPTION,:CATEGORY,:CATEGORY_TYPE,:AIRDATE,:STARS," |
2396 | | ":PREVIOUSLYSHOWN,:TITLE_PRONOUNCE,:STEREO,:SUBTITLED," |
2397 | | ":HDTV,:CLOSECAPTIONED,:PARTNUMBER,:PARTTOTAL,:SERIESID," |
2398 | | ":ORIGINALAIRDATE,:SHOWTYPE,:COLORCODE,:SYNDICATEDEPISODENUMBER," |
2399 | | ":PROGRAMID);"); |
2400 | | query.bindValue(":CHANID", chanid); |
2401 | | query.bindValue(":STARTTIME", (*i).start); |
2402 | | query.bindValue(":ENDTIME", (*i).end); |
2403 | | query.bindValue(":TITLE", (*i).title.utf8()); |
2404 | | query.bindValue(":SUBTITLE", (*i).subtitle.utf8()); |
2405 | | query.bindValue(":DESCRIPTION", (*i).desc.utf8()); |
2406 | | query.bindValue(":CATEGORY", (*i).category.utf8()); |
2407 | | query.bindValue(":CATEGORY_TYPE", (*i).catType.utf8()); |
2408 | | query.bindValue(":AIRDATE", (*i).airdate.utf8()); |
2409 | | query.bindValue(":STARS", (*i).stars.utf8()); |
2410 | | query.bindValue(":PREVIOUSLYSHOWN", (*i).previouslyshown); |
2411 | | query.bindValue(":TITLE_PRONOUNCE", (*i).title_pronounce.utf8()); |
2412 | | query.bindValue(":STEREO", (*i).stereo); |
2413 | | query.bindValue(":SUBTITLED", (*i).subtitled); |
2414 | | query.bindValue(":HDTV", (*i).hdtv); |
2415 | | query.bindValue(":CLOSECAPTIONED", (*i).closecaptioned); |
2416 | | query.bindValue(":PARTNUMBER", (*i).partnumber); |
2417 | | query.bindValue(":PARTTOTAL", (*i).parttotal); |
2418 | | query.bindValue(":SERIESID", (*i).seriesid); |
2419 | | query.bindValue(":ORIGINALAIRDATE", (*i).originalairdate); |
2420 | | query.bindValue(":SHOWTYPE", (*i).showtype); |
2421 | | query.bindValue(":COLORCODE", (*i).colorcode); |
2422 | | query.bindValue(":SYNDICATEDEPISODENUMBER", (*i).syndicatedepisodenumber); |
2423 | | query.bindValue(":PROGRAMID", (*i).programid); |
2424 | | if (!query.exec()) |
2425 | | { |
2426 | | MythContext::DBError("program insert", query); |
2427 | | } |
2428 | | |
2429 | | updated++; |
2430 | | |
2431 | | QValueList<ProgRating>::iterator j = (*i).ratings.begin(); |
2432 | | for (; j != (*i).ratings.end(); j++) |
2433 | | { |
2434 | | query.prepare("INSERT INTO programrating (chanid,starttime," |
2435 | | "system,rating) VALUES (:CHANID, :START, :SYS, " |
2436 | | ":RATING);"); |
| 2392 | query.prepare("INSERT INTO program (chanid,starttime,endtime," |
| 2393 | "title,subtitle,description,category,category_type," |
| 2394 | "airdate,stars,previouslyshown,title_pronounce,stereo," |
| 2395 | "subtitled,hdtv,closecaptioned,partnumber,parttotal," |
| 2396 | "seriesid,originalairdate,showtype,colorcode," |
| 2397 | "syndicatedepisodenumber,programid) " |
| 2398 | "VALUES(:CHANID,:STARTTIME,:ENDTIME,:TITLE," |
| 2399 | ":SUBTITLE,:DESCRIPTION,:CATEGORY,:CATEGORY_TYPE,:AIRDATE,:STARS," |
| 2400 | ":PREVIOUSLYSHOWN,:TITLE_PRONOUNCE,:STEREO,:SUBTITLED," |
| 2401 | ":HDTV,:CLOSECAPTIONED,:PARTNUMBER,:PARTTOTAL,:SERIESID," |
| 2402 | ":ORIGINALAIRDATE,:SHOWTYPE,:COLORCODE,:SYNDICATEDEPISODENUMBER," |
| 2403 | ":PROGRAMID);"); |
2438 | | query.bindValue(":START", (*i).start); |
2439 | | query.bindValue(":SYS", (*j).system.utf8()); |
2440 | | query.bindValue(":RATING", (*j).rating.utf8()); |
2441 | | |
| 2405 | query.bindValue(":STARTTIME", (*i).start); |
| 2406 | query.bindValue(":ENDTIME", (*i).end); |
| 2407 | query.bindValue(":TITLE", (*i).title.utf8()); |
| 2408 | query.bindValue(":SUBTITLE", (*i).subtitle.utf8()); |
| 2409 | query.bindValue(":DESCRIPTION", (*i).desc.utf8()); |
| 2410 | query.bindValue(":CATEGORY", (*i).category.utf8()); |
| 2411 | query.bindValue(":CATEGORY_TYPE", (*i).catType.utf8()); |
| 2412 | query.bindValue(":AIRDATE", (*i).airdate.utf8()); |
| 2413 | query.bindValue(":STARS", (*i).stars.utf8()); |
| 2414 | query.bindValue(":PREVIOUSLYSHOWN", (*i).previouslyshown); |
| 2415 | query.bindValue(":TITLE_PRONOUNCE", (*i).title_pronounce.utf8()); |
| 2416 | query.bindValue(":STEREO", (*i).stereo); |
| 2417 | query.bindValue(":SUBTITLED", (*i).subtitled); |
| 2418 | query.bindValue(":HDTV", (*i).hdtv); |
| 2419 | query.bindValue(":CLOSECAPTIONED", (*i).closecaptioned); |
| 2420 | query.bindValue(":PARTNUMBER", (*i).partnumber); |
| 2421 | query.bindValue(":PARTTOTAL", (*i).parttotal); |
| 2422 | query.bindValue(":SERIESID", (*i).seriesid); |
| 2423 | query.bindValue(":ORIGINALAIRDATE", (*i).originalairdate); |
| 2424 | query.bindValue(":SHOWTYPE", (*i).showtype); |
| 2425 | query.bindValue(":COLORCODE", (*i).colorcode); |
| 2426 | query.bindValue(":SYNDICATEDEPISODENUMBER", (*i).syndicatedepisodenumber); |
| 2427 | query.bindValue(":PROGRAMID", (*i).programid); |
2491 | | query.prepare("INSERT INTO credits (chanid,starttime," |
2492 | | "role,person) VALUES " |
2493 | | "(:CHANID, :START, :ROLE, :PERSON);"); |
2494 | | query.bindValue(":CHANID", chanid); |
2495 | | query.bindValue(":START", (*i).start); |
2496 | | query.bindValue(":ROLE", (*k).role.utf8()); |
2497 | | query.bindValue(":PERSON", personid); |
2498 | | if (!query.exec()) |
2499 | | { |
2500 | | // be careful of the startime/timestamp "feature"! |
2501 | | query.prepare("UPDATE credits SET " |
2502 | | "role = concat(role,',:ROLE'), " |
2503 | | "starttime = :START " |
2504 | | "WHERE chanid = :CHANID AND " |
2505 | | "starttime = :START2 and person = :PERSON"); |
| 2476 | query.prepare("SELECT person FROM people WHERE " |
| 2477 | "name = :NAME;"); |
| 2478 | query.bindValue(":NAME", (*k).name.utf8()); |
| 2479 | if (!query.exec()) |
| 2480 | MythContext::DBError("person lookup", query); |
| 2481 | |
| 2482 | if (query.isActive() && query.size() > 0) |
| 2483 | { |
| 2484 | query.next(); |
| 2485 | personid = query.value(0).toInt(); |
| 2486 | } |
| 2487 | } |
| 2488 | |
| 2489 | if (personid < 0) |
| 2490 | { |
| 2491 | cerr << "Error inserting person\n"; |
| 2492 | continue; |
| 2493 | } |
| 2494 | |
| 2495 | query.prepare("INSERT INTO credits (chanid,starttime," |
| 2496 | "role,person) VALUES " |
| 2497 | "(:CHANID, :START, :ROLE, :PERSON);"); |
| 2498 | query.bindValue(":CHANID", chanid); |
| 2499 | query.bindValue(":START", (*i).start); |