17 : m_bellYear(
"[\\(]{1}[0-9]{4}[\\)]{1}"),
18 m_bellActors(
"\\set\\s|,"),
19 m_bellPPVTitleAllDayHD(
"\\s*\\(All Day\\, HD\\)\\s*$"),
20 m_bellPPVTitleAllDay(
"\\s*\\(All Day.*\\)\\s*$"),
21 m_bellPPVTitleHD(
"^HD\\s?-\\s?"),
22 m_bellPPVSubtitleAllDay(
"^All Day \\(.*\\sEastern\\)\\s*$"),
23 m_bellPPVDescriptionAllDay(
"^\\(.*\\sEastern\\)"),
24 m_bellPPVDescriptionAllDay2(
"^\\([0-9].*am-[0-9].*am\\sET\\)"),
25 m_bellPPVDescriptionEventId(
"\\([0-9]{5}\\)"),
26 m_dishPPVTitleHD(
"\\sHD\\s*$"),
27 m_dishPPVTitleColon(
"\\:\\s*$"),
28 m_dishPPVSpacePerenEnd(
"\\s\\)\\s*$"),
29 m_dishDescriptionNew(
"\\s*New\\.\\s*"),
30 m_dishDescriptionFinale(
"\\s*(Series|Season)\\sFinale\\.\\s*"),
31 m_dishDescriptionFinale2(
"\\s*Finale\\.\\s*"),
32 m_dishDescriptionPremiere(
"\\s*(Series|Season)\\s(Premier|Premiere)\\.\\s*"),
33 m_dishDescriptionPremiere2(
"\\s*(Premier|Premiere)\\.\\s*"),
34 m_dishPPVCode(
"\\s*\\(([A-Z]|[0-9]){5}\\)\\s*$"),
35 m_ukThen(
"\\s*(Then|Followed by) 60 Seconds\\.", Qt::CaseInsensitive),
36 m_ukNew(
"(New\\.|\\s*(Brand New|New)\\s*(Series|Episode)\\s*[:\\.\\-])",Qt::CaseInsensitive),
37 m_ukCEPQ(
"[:\\!\\.\\?]"),
38 m_ukColonPeriod(
"[:\\.]"),
39 m_ukDotSpaceStart(
"^\\. "),
41 m_ukSpaceColonStart(
"^[ |:]*"),
43 m_ukSeries(
"\\s*\\(?\\s*(?:Episode|Part|Pt)?\\s*(\\d{1,2})\\s*(?:of|/)\\s*(\\d{1,2})\\s*\\)?\\s*(?:\\.|:)?", Qt::CaseInsensitive),
44 m_ukCC(
"\\[(?:(AD|SL|S|W),?)+\\]"),
45 m_ukYear(
"[\\[\\(]([\\d]{4})[\\)\\]]"),
46 m_uk24ep(
"^\\d{1,2}:00[ap]m to \\d{1,2}:00[ap]m: "),
47 m_ukStarring(
"(?:Western\\s)?[Ss]tarring ([\\w\\s\\-']+)[Aa]nd\\s([\\w\\s\\-']+)[\\.|,](?:\\s)*(\\d{4})?(?:\\.\\s)?"),
48 m_ukBBC7rpt(
"\\[Rptd?[^]]+\\d{1,2}\\.\\d{1,2}[ap]m\\]\\."),
49 m_ukDescriptionRemove(
"^(?:CBBC\\s*\\.|CBeebies\\s*\\.|Class TV\\s*:|BBC Switch\\.)"),
50 m_ukTitleRemove(
"^(?:[tT]4:|Schools\\s*:)"),
51 m_ukDoubleDotEnd(
"\\.\\.+$"),
52 m_ukDoubleDotStart(
"^\\.\\.+"),
53 m_ukTime(
"\\d{1,2}[\\.:]\\d{1,2}\\s*(am|pm|)"),
54 m_ukBBC34(
"BBC (?:THREE|FOUR) on BBC (?:ONE|TWO)\\.",Qt::CaseInsensitive),
55 m_ukYearColon(
"^[\\d]{4}:"),
56 m_ukExclusionFromSubtitle(
"(starring|stars\\s|drama|series|sitcom)",Qt::CaseInsensitive),
57 m_ukCompleteDots(
"^\\.\\.+$"),
58 m_ukQuotedSubtitle(
"(?:^')([\\w\\s\\-,]+)(?:\\.' )"),
59 m_ukAllNew(
"All New To 4Music!\\s?"),
60 m_comHemCountry(
"^(\\(.+\\))?\\s?([^ ]+)\\s([^\\.0-9]+)"
61 "(?:\\sfrån\\s([0-9]{4}))(?:\\smed\\s([^\\.]+))?\\.?"),
62 m_comHemDirector(
"[Rr]egi"),
63 m_comHemActor(
"[Ss]kådespelare|[Ii] rollerna"),
64 m_comHemHost(
"[Pp]rogramledare"),
65 m_comHemSub(
"[.\\?\\!] "),
66 m_comHemRerun1(
"[Rr]epris\\sfrån\\s([^\\.]+)(?:\\.|$)"),
67 m_comHemRerun2(
"([0-9]+)/([0-9]+)(?:\\s-\\s([0-9]{4}))?"),
68 m_comHemTT(
"[Tt]ext-[Tt][Vv]"),
69 m_comHemPersSeparator(
"(, |\\soch\\s)"),
70 m_comHemPersons(
"\\s?([Rr]egi|[Ss]kådespelare|[Pp]rogramledare|"
71 "[Ii] rollerna):\\s([^\\.]+)\\."),
72 m_comHemSubEnd(
"\\s?\\.\\s?$"),
73 m_comHemSeries1(
"\\s?(?:[dD]el|[eE]pisode)\\s([0-9]+)"
74 "(?:\\s?(?:/|:|av)\\s?([0-9]+))?\\."),
75 m_comHemSeries2(
"\\s?-?\\s?([Dd]el\\s+([0-9]+))"),
76 m_comHemTSub(
"\\s+-\\s+([^\\-]+)"),
77 m_mcaIncompleteTitle(
"(.*).\\.\\.\\.$"),
78 m_mcaCompleteTitlea(
"^'?("),
79 m_mcaCompleteTitleb(
"[^\\.\\?]+[^\\'])'?[\\.\\?]\\s+(.+)"),
80 m_mcaSubtitle(
"^'([^\\.]+)'\\.\\s+(.+)"),
81 m_mcaSeries(
"^S?(\\d+)\\/E?(\\d+)\\s-\\s(.*)$"),
82 m_mcaCredits(
"(.*)\\s\\((\\d{4})\\)\\s*([^\\.]+)\\.?\\s*$"),
83 m_mcaAvail(
"\\s(Only available on [^\\.]*bouquet|Not available in RSA [^\\.]*)\\.?"),
84 m_mcaActors(
"(.*\\.)\\s+([^\\.]+\\s[A-Z][^\\.]+)\\.\\s*"),
85 m_mcaActorsSeparator(
"(,\\s+)"),
86 m_mcaYear(
"(.*)\\s\\((\\d{4})\\)\\s*$"),
87 m_mcaCC(
",?\\s(HI|English) Subtitles\\.?"),
88 m_mcaDD(
",?\\sDD\\.?"),
89 m_RTLrepeat(
"(\\(|\\s)?Wiederholung.+vo[m|n].+((?:\\d{2}\\.\\d{2}\\.\\d{4})|(?:\\d{2}[:\\.]\\d{2}\\sUhr))\\)?"),
90 m_RTLSubtitle(
"^([^\\.]{3,})\\.\\s+(.+)"),
92 m_RTLSubtitle1(
"^Folge\\s(\\d{1,4})\\s*:\\s+'(.*)'(?:\\s|\\.\\s*|$)"),
93 m_RTLSubtitle2(
"^Folge\\s(\\d{1,4})\\s+(.{,5}[^\\.]{,120})[\\?!\\.]\\s*"),
94 m_RTLSubtitle3(
"^(?:Folge\\s)?(\\d{1,4}(?:\\/[IVX]+)?)\\s+(.{,5}[^\\.]{,120})[\\?!\\.]\\s*"),
95 m_RTLSubtitle4(
"^Thema.{0,5}:\\s([^\\.]+)\\.\\s*"),
96 m_RTLSubtitle5(
"^'(.+)'\\.\\s*"),
97 m_RTLEpisodeNo1(
"^(Folge\\s\\d{1,4})\\.*\\s*"),
98 m_RTLEpisodeNo2(
"^(\\d{1,2}\\/[IVX]+)\\.*\\s*"),
99 m_fiRerun(
"\\ ?Uusinta[a-zA-Z\\ ]*\\.?"),
100 m_fiRerun2(
"\\([Uu]\\)"),
101 m_dePremiereInfos(
"([^.]+)?\\s?([0-9]{4})\\.\\s[0-9]+\\sMin\\.(?:\\sVon"
102 "\\s([^,]+)(?:,|\\su\\.\\sa\\.)\\smit\\s(.+)\\.)?"),
103 m_dePremiereOTitle(
"\\s*\\(([^\\)]*)\\)$"),
105 m_nlWide(
"breedbeeld"),
108 m_nlSub(
"\\sAfl\\.:\\s([^\\.]+)\\."),
109 m_nlSub2(
"\\s\"([^\"]+)\""),
110 m_nlActors(
"\\sMet:\\s.+e\\.a\\."),
111 m_nlPres(
"\\sPresentatie:\\s([^\\.]+)\\."),
112 m_nlPersSeparator(
"(, |\\sen\\s)"),
113 m_nlRub(
"\\s?\\({1}\\W+\\){1}\\s?"),
114 m_nlYear1(
"(?=\\suit\\s)([1-2]{2}[0-9]{2})"),
115 m_nlYear2(
"([\\s]{1}[\\(]{1}[A-Z]{0,3}/?)([1-2]{2}[0-9]{2})([\\)]{1})"),
116 m_nlDirector(
"(?=\\svan\\s)(([A-Z]{1}[a-z]+\\s)|([A-Z]{1}\\.\\s))"),
117 m_nlCat(
"^(Amusement|Muziek|Informatief|Nieuws/actualiteiten|Jeugd|Animatie|Sport|Serie/soap|Kunst/Cultuur|Documentaire|Film|Natuur|Erotiek|Comedy|Misdaad|Religieus)\\.\\s"),
118 m_nlOmroep (
"\\s\\(([A-Z]+/?)+\\)$"),
119 m_noRerun(
"\\(R\\)"),
120 m_noHD(
"[\\(\\[]HD[\\)\\]]"),
121 m_noColonSubtitle(
"^([^:]+): (.+)"),
122 m_noNRKCategories(
"^(Superstrek[ea]r|Supersomm[ea]r|Superjul|Barne-tv|Fantorangen|Kuraffen|Supermorg[eo]n|Julemorg[eo]n|Sommermorg[eo]n|"
123 "Kuraffen-TV|Sport i dag|NRKs sportsl.rdag|NRKs sportss.ndag|Dagens dokumentar|"
124 "NRK2s historiekveld|Detektimen|Nattkino|Filmklassiker|Film|Kortfilm|P.skemorg[eo]n|"
125 "Radioteatret|Opera|P2-Akademiet|Nyhetsmorg[eo]n i P2 og Alltid Nyheter:): (.+)"),
126 m_noPremiere(
"\\s+-\\s+(Sesongpremiere|Premiere|premiere)!?$"),
127 m_Stereo(
"\\b\\(?[sS]tereo\\)?\\b"),
128 m_dkEpisode(
"\\(([0-9]+)\\)"),
129 m_dkPart(
"\\(([0-9]+):([0-9]+)\\)"),
130 m_dkSubtitle1(
"^([^:]+): (.+)"),
131 m_dkSubtitle2(
"^([^:]+) - (.+)"),
132 m_dkSeason1(
"Sæson ([0-9]+)\\."),
133 m_dkSeason2(
"- år ([0-9]+)(?: :)"),
134 m_dkFeatures(
"Features:(.+)"),
135 m_dkWidescreen(
" 16:9"),
137 m_dkSurround(
" \\(\\(S\\)\\)"),
139 m_dkReplay(
" \\(G\\)"),
142 m_dkActors(
"(?:Medvirkende: |Medv\\.: )(.+)"),
143 m_dkPersonsSeparator(
"(, )|(og )"),
144 m_dkDirector(
"(?:Instr.: |Instrukt.r: )(.+)$"),
145 m_dkYear(
" fra ([0-9]{4})[ \\.]"),
146 m_AUFreeviewSY(
"(.*) \\((.+)\\) \\(([12][0-9][0-9][0-9])\\)$"),
147 m_AUFreeviewY(
"(.*) \\(([12][0-9][0-9][0-9])\\)$"),
148 m_AUFreeviewYC(
"(.*) \\(([12][0-9][0-9][0-9])\\) \\((.+)\\)$"),
149 m_AUFreeviewSYC(
"(.*) \\((.+)\\) \\(([12][0-9][0-9][0-9])\\) \\((.+)\\)$")
158 event.subtitle = QString(
"");
160 if (event.
description.isEmpty() && !
event.subtitle.isEmpty())
162 event.description =
event.subtitle;
163 event.subtitle = QString(
"");
229 if (!event.
title.isEmpty())
231 event.title =
event.title.replace(QChar(
'\0'),
"");
232 event.title =
event.title.trimmed();
237 event.subtitle =
event.subtitle.replace(QChar(
'\0'),
"");
238 event.subtitle =
event.subtitle.trimmed();
243 event.description =
event.description.replace(QChar(
'\0'),
"");
244 event.description =
event.description.trimmed();
276 QString crid =
id.toLower();
279 if (crid.startsWith(
"crid://"))
283 if (crid.length() >= 1 && crid[0] !=
'/')
287 if (authority.isEmpty())
290 return authority + crid;
304 int position =
event.description.indexOf(0x0D);
310 event.subtitle =
event.description.left(position);
311 event.description =
event.description.right(
317 position =
event.description.indexOf(
".");
325 event.category =
"Unknown";
334 position =
event.description.indexOf(
".");
339 if ((position > -1) && position < 20)
341 const QString stmp =
event.description;
342 event.description = stmp.right(stmp.length() - position - 2);
343 event.category = stmp.left(position);
345 int position_p =
event.category.indexOf(
"(");
346 if (position_p == -1)
347 event.description = stmp.right(stmp.length() - position - 2);
349 event.category =
"Unknown";
353 event.category =
"Unknown";
359 event.category =
"OffAir";
367 event.description =
event.description.replace(theme,
"");
375 position =
event.description.indexOf(
m_bellYear);
376 if (position != -1 && !event.
category.isEmpty())
381 uint y =
event.description.mid(position + 1, 4).toUInt(&ok);
384 event.originalairdate = QDate(y, 1, 1);
386 event.previouslyshown =
true;
392 tmp =
event.description.left(position-3);
395 QStringList::const_iterator it = actors.begin();
396 for (; it != actors.end(); ++it)
400 event.description =
event.description.right(
406 position =
event.description.indexOf(
"(CC)");
410 event.description =
event.description.replace(
"(CC)",
"");
414 position =
event.description.indexOf(
m_Stereo);
418 event.description =
event.description.replace(
m_Stereo,
"");
445 position =
event.description.indexOf(
"(HD)");
448 event.description =
event.description.replace(
"(HD)",
"");
453 position =
event.title.indexOf(
"(HD)");
456 event.description =
event.title.replace(
"(HD)",
"");
469 position =
event.description.indexOf(
"(DD)");
472 event.description =
event.description.replace(
"(DD)",
"");
478 position =
event.description.indexOf(
"(SAP)");
481 event.description =
event.description.replace(
"(SAP",
"");
496 event.previouslyshown =
false;
504 event.previouslyshown =
false;
512 event.previouslyshown =
false;
520 event.previouslyshown =
false;
528 event.previouslyshown =
false;
534 ppvcode.setCaseSensitivity(Qt::CaseInsensitive);
535 position =
event.description.indexOf(ppvcode);
538 event.description =
event.description.replace(ppvcode,
"");
583 QStringList strListColon =
event.description.split(
":");
584 QStringList strListEnd;
586 bool fColon =
false, fQuotedSubtitle =
false;
589 if (strListColon.count()>1)
591 bool fDoubleDot =
false;
592 bool fSingleDot =
true;
593 int nLength = strListColon[0].length();
595 nPosition1 =
event.description.indexOf(
"..");
596 if ((nPosition1 < nLength) && (nPosition1 >= 0))
598 nPosition1 =
event.description.indexOf(
".");
601 if (nPosition1 > nLength)
605 QString strTmp =
event.description.mid(nPosition1+1,
608 QStringList
tmp = strTmp.split(
" ");
615 strListEnd = strListColon;
618 else if (!fSingleDot)
620 QStringList strListTmp;
624 for (i =0; (i<(
int)strListColon.count()) && (nTitleMax==-1);i++)
626 const QStringList
tmp = strListColon[i].split(
" ");
628 nTitle += tmp.size();
631 strListTmp.push_back(strListColon[i]);
636 for (i=0;i<(nTitleMax-1);i++)
637 strPartial+=strListTmp[i]+
":";
640 strPartial+=strListTmp[nTitleMax-1];
641 strListEnd.push_back(strPartial);
643 for (i=nTitleMax+1;i<(
int)strListColon.count();i++)
644 strListEnd.push_back(strListColon[i]);
649 if (tmpQuotedSubtitle.indexIn(event.
description) != -1)
651 event.subtitle = tmpQuotedSubtitle.cap(1);
653 fQuotedSubtitle =
true;
655 QStringList strListPeriod;
656 QStringList strListQuestion;
657 QStringList strListExcl;
658 if (!(fColon || fQuotedSubtitle))
660 strListPeriod =
event.description.split(
".");
661 if (strListPeriod.count() >1)
663 nPosition1 =
event.description.indexOf(
".");
664 int nPosition2 =
event.description.indexOf(
"..");
665 if ((nPosition1 < nPosition2) || (nPosition2==-1))
666 strListEnd = strListPeriod;
669 strListQuestion =
event.description.split(
"?");
670 strListExcl =
event.description.split(
"!");
671 if ((strListQuestion.size() > 1) &&
674 strListEnd = strListQuestion;
677 else if ((strListExcl.size() > 1) &&
680 strListEnd = strListExcl;
684 strEnd = QString::null;
687 if (!strListEnd.empty())
689 QStringList strListSpace = strListEnd[0].split(
690 " ", QString::SkipEmptyParts);
697 event.subtitle = strListEnd[0]+strEnd;
700 event.description.mid(strListEnd[0].length()+1);
716 bool isMovie =
event.category.startsWith(
"Movie",Qt::CaseInsensitive);
718 event.description =
event.description.remove(
m_ukThen);
719 event.description =
event.description.remove(
m_ukNew);
726 event.description =
event.description.remove(
m_ukBBC34);
729 event.description =
event.description.remove(
m_ukBBC7rpt);
732 event.description =
event.description.remove(
m_ukAllNew);
736 if ((position1 = tmpCC.indexIn(event.
description)) != -1)
738 QStringList tmpCCitems = tmpCC.cap(0).remove(
"[").remove(
"]").split(
",");
739 if (tmpCCitems.contains(
"AD"))
741 if (tmpCCitems.contains(
"S"))
743 if (tmpCCitems.contains(
"SL"))
745 if (tmpCCitems.contains(
"W"))
750 event.title =
event.title.trimmed();
751 event.description =
event.description.trimmed();
756 if ((position1 = tmpExp1.indexIn(event.
title)) != -1)
758 if ((tmpExp1.cap(1).toUInt() <= tmpExp1.cap(2).toUInt())
759 && tmpExp1.cap(2).toUInt()<=50)
761 event.partnumber = tmpExp1.cap(1).toUInt();
762 event.parttotal = tmpExp1.cap(2).toUInt();
764 event.title =
event.title.left(position1) +
765 event.title.mid(position1 + tmpExp1.cap(0).length());
769 else if ((position1 = tmpExp1.indexIn(event.
description)) != -1)
771 if ((tmpExp1.cap(1).toUInt() <= tmpExp1.cap(2).toUInt())
772 && tmpExp1.cap(2).toUInt()<=50)
774 event.partnumber = tmpExp1.cap(1).toUInt();
775 event.parttotal = tmpExp1.cap(2).toUInt();
776 #if 0 // Remove from the description
777 event.description =
event.description.left(position1) +
778 event.description.mid(position1+tmpExp1.cap(0).length());
792 if (tmpStarring.cap(3).length() > 0)
795 uint y = tmpStarring.cap(3).toUInt(&ok);
799 event.originalairdate = QDate(y, 1, 1);
805 if (!event.
title.startsWith(
"CSI:") && !
event.title.startsWith(
"CD:"))
813 ((position1 = strFull.indexOf(
m_ukCEPQ,strPart.length())) != -1))
815 if (strFull[position1] ==
'!' || strFull[position1] ==
'?')
817 event.title = strFull.left(position1);
818 event.description = strFull.mid(position1 + 1);
821 else if ((position1 = strFull.indexOf(
m_ukCEPQ)) != -1)
823 if (strFull[position1] ==
'!' || strFull[position1] ==
'?')
825 event.title = strFull.left(position1);
826 event.description = strFull.mid(position1 + 1);
830 if ((position1 = strFull.indexOf(
m_ukYear)) != -1)
835 event.description =
event.title.mid(position1);
836 event.title =
event.title.left(position1);
840 else if ((position1 = tmp24ep.indexIn(event.
description)) != -1)
844 event.subtitle =
event.description.mid(position1,
845 tmp24ep.cap(0).length() - 2);
846 event.description =
event.description.remove(tmp24ep.cap(0));
852 if (((position1 = event.
title.indexOf(
":")) != -1) &&
853 (
event.description.indexOf(
":") < 0 ))
858 QString strTmp =
event.title.mid(position1+1);
859 event.title.resize(position1);
860 event.subtitle = strTmp+
event.subtitle;
864 event.subtitle =
event.title.mid(position1 + 1);
865 event.title =
event.title.left(position1);
874 if (!isMovie && event.
subtitle.isEmpty())
879 if ((position2>=0) && (position2 < (position1-2)))
882 else if ((position1=event.
title.indexOf(
"-")) != -1)
886 event.subtitle =
event.title.mid(position1 + 1);
888 event.title =
event.title.left(position1);
897 if ((position1 = tmpUKYear.indexIn(event.
description)) != -1)
899 QString stmp =
event.description;
900 int itmp = position1 + tmpUKYear.cap(0).length();
901 event.description = stmp.left(position1) + stmp.mid(itmp);
903 uint y = tmpUKYear.cap(1).toUInt(&ok);
907 event.originalairdate = QDate(y, 1, 1);
917 if (event.
description.isEmpty() && !
event.subtitle.isEmpty())
919 event.description=
event.subtitle;
920 event.subtitle=QString::null;
930 int position =
event.description.indexOf(
':');
933 const QString stmp =
event.description;
934 event.subtitle = stmp.left(position);
935 event.description = stmp.right(stmp.length() - position - 2);
945 if (event.
subtitle.isEmpty() && !
event.description.isEmpty())
947 event.subtitle =
event.description;
948 event.description =
"";
954 bool isSeries =
false;
959 if ((pos = tmpSeries2.indexIn(event.
title)) != -1)
961 QStringList list = tmpSeries2.capturedTexts();
962 event.partnumber = list[2].toUInt();
963 event.title =
event.title.replace(list[0],
"");
965 else if ((pos = tmpSeries1.indexIn(event.
description)) != -1)
967 QStringList list = tmpSeries1.capturedTexts();
968 if (!list[1].isEmpty())
970 event.partnumber = list[1].toUInt();
972 if (!list[2].isEmpty())
974 event.parttotal = list[2].toUInt();
980 event.description =
event.description.replace(list[0],
"");
988 event.subtitle = QString(
"Del %1").arg(event.
partnumber);
991 event.subtitle += QString(
" av %1").arg(event.
parttotal);
997 if (tmpTSub.indexIn(event.
title) != -1)
999 event.subtitle = tmpTSub.cap(1);
1000 event.title =
event.title.replace(tmpTSub.cap(0),
"");
1013 QStringList list = tmpCountry.capturedTexts();
1014 QString replacement;
1018 if (list[1].length() > 0)
1020 replacement = list[1] +
" ";
1025 if (list[2].length() > 0)
1027 replacement += list[2] +
" ";
1032 if (list[3].length() > 0)
1034 replacement += list[3] +
".";
1037 event.category = list[3];
1040 if(list[3].indexOf(
"serie")!=-1)
1047 if (list[4].length() > 0)
1050 uint y = list[4].trimmed().toUInt(&ok);
1056 if (list[5].length() > 0)
1058 const QStringList actors =
1060 QStringList::const_iterator it = actors.begin();
1061 for (; it != actors.end(); ++it)
1068 event.description =
event.description.replace(list[0],replacement);
1076 while(pos = tmpPersons.indexIn(event.
description),pos!=-1)
1079 QStringList list = tmpPersons.capturedTexts();
1084 if (tmpDirector.indexIn(list[1])!=-1)
1088 else if(tmpActor.indexIn(list[1])!=-1)
1092 else if(tmpHost.indexIn(list[1])!=-1)
1098 event.description=
event.description.replace(list[0],
"");
1102 const QStringList actors =
1104 QStringList::const_iterator it = actors.begin();
1105 for (; it != actors.end(); ++it)
1109 event.description=
event.description.replace(list[0],
"");
1116 if (process_subtitle)
1119 bool pvalid = pos != -1 && pos <= 55;
1120 if (pvalid && (event.
description.length() - (pos + 2)) > 0)
1122 event.subtitle =
event.description.left(
1124 event.description =
event.description.mid(pos + 2);
1129 int position =
event.description.indexOf(
m_comHemTT);
1141 QStringList list = tmpRerun1.capturedTexts();
1142 if (list[1] ==
"i dag")
1144 event.originalairdate =
event.starttime.date();
1149 if (list[1] ==
"eftermiddagen")
1151 event.originalairdate =
event.starttime.date().addDays(-1);
1157 if (tmpRerun2.indexIn(list[1]) != -1)
1159 QStringList datelist = tmpRerun2.capturedTexts();
1160 int day = datelist[1].toInt();
1161 int month = datelist[2].toInt();
1169 if (day > 0 && month > 0)
1171 QDate date(event.
starttime.date().year(), month, day);
1174 date = date.addYears(-1);
1175 event.originalairdate = date;
1186 event.category =
event.subtitle;
1188 int position =
event.description.indexOf(
':');
1191 const QString stmp =
event.description;
1192 event.subtitle = stmp.left(position);
1193 event.description = stmp.right(stmp.length() - position - 2);
1202 if (event.
description.startsWith(
"[Program data ") ||
event.description.startsWith(
"[Program info "))
1204 event.description =
"";
1206 if (event.
description.endsWith(
"Copyright West TV Ltd. 2011)"))
1209 if (event.
description.isEmpty() && !
event.subtitle.isEmpty())
1211 event.description =
event.subtitle;
1212 event.subtitle = QString::null;
1216 if (event.
title.startsWith(
"LIVE: ", Qt::CaseInsensitive))
1218 event.title.remove(0, 6);
1219 event.description.prepend(
"(Live) ");
1227 QRegExp
rating(
"\\((G|PG|M|MA)\\)");
1231 prograting.
system=
"AU"; prograting.
rating = rating.cap(1);
1232 event.ratings.push_back(prograting);
1233 event.description.remove(0,rating.matchedLength()+1);
1238 event.description.remove(0,5);
1243 event.description.remove(0,5);
1247 event.subtitle = QString::null;
1260 event.previouslyshown =
true;
1261 event.description.resize(event.
description.size()-4);
1263 QRegExp year(
"(\\d{4})$");
1266 event.airdate = year.cap(3).toUInt();
1267 event.description.resize(event.
description.size()-5);
1272 event.description.resize(event.
description.size()-3);
1275 QRegExp adv(
"(\\([A-Z,]+\\))$");
1278 advisories = adv.cap(1);
1279 event.description.resize(event.
description.size()-(adv.matchedLength()+1));
1281 QRegExp
rating(
"(C|G|PG|M|MA)$");
1285 prograting.
system=
""; prograting.
rating = rating.cap(1);
1286 if (!advisories.isEmpty())
1287 prograting.
rating.append(
" ").append(advisories);
1288 event.ratings.push_back(prograting);
1289 event.description.resize(event.
description.size()-(rating.matchedLength()+1));
1318 for (
int i = 0; i < actors.size(); ++i)
1326 for (
int i = 0; i < actors.size(); ++i)
1337 const uint SUBTITLE_PCT = 60;
1343 event.subtitle = QString(
"");
1351 if (tmpExp1.indexIn(event.
title) != -1)
1355 tmpExp1.setCaseSensitivity(Qt::CaseInsensitive);
1358 event.title = tmpExp1.cap(1).trimmed();
1359 event.description = tmpExp1.cap(2).trimmed();
1361 tmpExp1.setCaseSensitivity(Qt::CaseSensitive);
1366 if ((position = tmpExp1.indexIn(event.
description)) != -1)
1368 uint tmpExp1Len = tmpExp1.cap(1).length();
1371 if ((tmpExp1Len < SUBTITLE_MAX_LEN) &&
1372 ((tmpExp1Len * 100 / evDescLen) < SUBTITLE_PCT))
1374 event.subtitle = tmpExp1.cap(1);
1375 event.description = tmpExp1.cap(2);
1381 if ((position = tmpExp1.indexIn(event.
subtitle)) != -1)
1383 uint season = tmpExp1.cap(1).toUInt();
1384 uint episode = tmpExp1.cap(2).toUInt();
1385 event.subtitle = tmpExp1.cap(3).trimmed();
1386 event.syndicatedepisodenumber =
1387 QString(
"E%1S%2").arg(episode).arg(season);
1392 position =
event.description.indexOf(
m_mcaCC);
1396 event.description.replace(
m_mcaCC,
"");
1400 position =
event.description.indexOf(
m_mcaDD);
1401 if ((position > 0) && (position > (
int) (event.
description.length() - 7)))
1404 event.description.replace(
m_mcaDD,
"");
1411 bool isMovie =
false;
1417 event.description = tmpExp1.cap(1).trimmed();
1419 uint y = tmpExp1.cap(2).trimmed().toUInt(&ok);
1432 event.description = tmpExp1.cap(1).trimmed();
1434 uint y = tmpExp1.cap(2).trimmed().toUInt(&ok);
1446 const QStringList actors = tmpExp1.cap(2).split(
1448 QStringList::const_iterator it = actors.begin();
1449 for (; it != actors.end(); ++it)
1451 event.description = tmpExp1.cap(1).trimmed();
1466 if (event.
description.length() <= 0 ||
event.subtitle.length() > 0)
1471 if ((pos = tmpExpRepeat.indexIn(event.
description)) != -1)
1474 int length = tmpExpRepeat.cap(0).length() + (pos ? 0 : 1);
1475 event.description =
event.description.remove(pos, length).trimmed();
1480 tmpExpSubtitle1.setMinimal(
true);
1485 tmpExpSubtitle5.setMinimal(
true);
1490 if (tmpExpSubtitle1.indexIn(event.
description) != -1)
1492 event.syndicatedepisodenumber = tmpExpSubtitle1.cap(1);
1493 event.subtitle = tmpExpSubtitle1.cap(2);
1495 event.description.remove(0, tmpExpSubtitle1.matchedLength());
1498 else if (tmpExpSubtitle2.indexIn(event.
description) != -1)
1500 event.syndicatedepisodenumber = tmpExpSubtitle2.cap(1);
1501 event.subtitle = tmpExpSubtitle2.cap(2);
1503 event.description.remove(0, tmpExpSubtitle2.matchedLength());
1506 else if (tmpExpSubtitle3.indexIn(event.
description) != -1)
1508 event.syndicatedepisodenumber = tmpExpSubtitle3.cap(1);
1509 event.subtitle = tmpExpSubtitle3.cap(2);
1511 event.description.remove(0, tmpExpSubtitle3.matchedLength());
1514 else if (tmpExpSubtitle4.indexIn(event.
description) != -1)
1516 event.subtitle = tmpExpSubtitle4.cap(1);
1518 event.description.remove(0, tmpExpSubtitle4.matchedLength());
1521 else if (tmpExpSubtitle5.indexIn(event.
description) != -1)
1523 event.subtitle = tmpExpSubtitle5.cap(1);
1525 event.description.remove(0, tmpExpSubtitle5.matchedLength());
1528 else if (tmpExpEpisodeNo1.indexIn(event.
description) != -1)
1530 event.syndicatedepisodenumber = tmpExpEpisodeNo1.cap(2);
1531 event.subtitle = tmpExpEpisodeNo1.cap(1);
1533 event.description.remove(0, tmpExpEpisodeNo1.matchedLength());
1536 else if (tmpExpEpisodeNo2.indexIn(event.
description) != -1)
1538 event.syndicatedepisodenumber = tmpExpEpisodeNo2.cap(2);
1539 event.subtitle = tmpExpEpisodeNo2.cap(1);
1541 event.description.remove(0, tmpExpEpisodeNo2.matchedLength());
1554 const uint SUBTITLE_PCT = 35;
1557 if ((position = tmpExp1.indexIn(event.
description)) != -1)
1559 uint tmpExp1Len = tmpExp1.cap(1).length();
1562 if ((tmpExp1Len < SUBTITLE_MAX_LEN) &&
1563 (tmpExp1Len * 100 / evDescLen < SUBTITLE_PCT))
1565 event.subtitle = tmpExp1.cap(1);
1566 event.description = tmpExp1.cap(2);
1577 int position =
event.description.indexOf(
m_fiRerun);
1580 event.previouslyshown =
true;
1581 event.description =
event.description.replace(
m_fiRerun,
"");
1584 position =
event.description.indexOf(
m_fiRerun2);
1587 event.previouslyshown =
true;
1588 event.description =
event.description.replace(
m_fiRerun2,
"");
1592 position =
event.description.indexOf(
m_Stereo);
1596 event.description =
event.description.replace(
m_Stereo,
"");
1606 QString country =
"";
1612 country = tmpInfos.cap(1).trimmed();
1614 uint y = tmpInfos.cap(2).toUInt(&ok);
1618 const QStringList actors = tmpInfos.cap(4).split(
1619 ", ", QString::SkipEmptyParts);
1620 QStringList::const_iterator it = actors.begin();
1621 for (; it != actors.end(); ++it)
1623 event.description =
event.description.replace(tmpInfos.cap(0),
"");
1628 if (tmpOTitle.indexIn(event.
title) != -1)
1630 event.subtitle = QString(
"%1, %2").arg(tmpOTitle.cap(1)).arg(country);
1631 event.title =
event.title.replace(tmpOTitle.cap(0),
"");
1640 QString fullinfo =
"";
1643 event.subtitle =
"";
1648 if (event.
category ==
"Documentary")
1650 event.category =
"Documentaire";
1655 event.category =
"Nieuws/actualiteiten";
1660 event.category =
"Jeugd";
1663 if (event.
category ==
"Show/game Show")
1665 event.category =
"Amusement";
1668 if (event.
category ==
"Music/Ballet/Dance")
1670 event.category =
"Muziek";
1673 if (event.
category ==
"News magazine")
1675 event.category =
"Informatief";
1680 event.category =
"Film";
1683 if (event.
category ==
"Nature/animals/Environment")
1685 event.category =
"Natuur";
1688 if (event.
category ==
"Movie - Adult")
1690 event.category =
"Erotiek";
1693 if (event.
category ==
"Movie - Soap/melodrama/folkloric")
1695 event.category =
"Serie/soap";
1698 if (event.
category ==
"Arts/Culture")
1700 event.category =
"Kunst/Cultuur";
1705 event.category =
"Sport";
1708 if (event.
category ==
"Cartoons/Puppets")
1710 event.category =
"Animatie";
1713 if (event.
category ==
"Movie - Comedy")
1715 event.category =
"Comedy";
1718 if (event.
category ==
"Movie - Detective/Thriller")
1720 event.category =
"Misdaad";
1723 if (event.
category ==
"Social/Spiritual Sciences")
1725 event.category =
"Religieus";
1730 if (event.
category.startsWith(
"Film -"))
1737 if ((position = fullinfo.indexOf(
m_Stereo)) != -1)
1740 fullinfo = fullinfo.replace(
m_Stereo,
".");
1744 if ((position = fullinfo.indexOf(
m_nlWide)) != -1)
1746 fullinfo = fullinfo.replace(
"breedbeeld",
".");
1750 if ((position = fullinfo.indexOf(
m_nlRepeat)) != -1)
1752 fullinfo = fullinfo.replace(
"herh.",
".");
1756 if ((position = fullinfo.indexOf(
m_nlTxt)) != -1)
1759 fullinfo = fullinfo.replace(
"txt",
".");
1763 if ((position = event.
title.indexOf(
m_nlHD)) != -1)
1766 event.title =
event.title.replace(
m_nlHD,
"");
1771 QString tmpSubString;
1772 if (tmpSub.indexIn(fullinfo) != -1)
1774 tmpSubString = tmpSub.cap(0);
1775 tmpSubString = tmpSubString.right(tmpSubString.length() - 7);
1776 event.subtitle = tmpSubString.left(tmpSubString.length() -1);
1777 fullinfo = fullinfo.replace(tmpSub.cap(0),
"");
1783 if (tmpSub2.indexIn(fullinfo) != -1)
1785 tmpSubString = tmpSub2.cap(0);
1786 tmpSubString = tmpSubString.right(tmpSubString.length() - 2);
1787 event.subtitle = tmpSubString.left(tmpSubString.length() -1);
1788 fullinfo = fullinfo.replace(tmpSub2.cap(0),
"");
1794 if (((position = event.
title.indexOf(
":")) != -1) &&
1795 (
event.title[position + 1].toUpper() ==
event.title[position + 1]) &&
1798 event.subtitle =
event.title.mid(position + 1);
1799 event.title =
event.title.left(position);
1805 if (tmpActors.indexIn(fullinfo) != -1)
1807 QString tmpActorsString = tmpActors.cap(0);
1808 tmpActorsString = tmpActorsString.right(tmpActorsString.length() - 6);
1809 tmpActorsString = tmpActorsString.left(tmpActorsString.length() - 5);
1810 const QStringList actors =
1811 tmpActorsString.split(
", ", QString::SkipEmptyParts);
1812 QStringList::const_iterator it = actors.begin();
1813 for (; it != actors.end(); ++it)
1815 fullinfo = fullinfo.replace(tmpActors.cap(0),
"");
1820 if (tmpPres.indexIn(fullinfo) != -1)
1822 QString tmpPresString = tmpPres.cap(0);
1823 tmpPresString = tmpPresString.right(tmpPresString.length() - 14);
1824 tmpPresString = tmpPresString.left(tmpPresString.length() -1);
1825 const QStringList host =
1827 QStringList::const_iterator it = host.begin();
1828 for (; it != host.end(); ++it)
1830 fullinfo = fullinfo.replace(tmpPres.cap(0),
"");
1836 if ((position = tmpYear1.indexIn(fullinfo)) != -1)
1839 uint y = tmpYear1.cap(0).toUInt(&ok);
1841 event.originalairdate = QDate(y, 1, 1);
1844 if ((position = tmpYear2.indexIn(fullinfo)) != -1)
1847 uint y = tmpYear2.cap(2).toUInt(&ok);
1849 event.originalairdate = QDate(y, 1, 1);
1854 QString tmpDirectorString;
1857 tmpDirectorString = tmpDirector.cap(0);
1862 if ((position = fullinfo.indexOf(
m_nlRub)) != -1)
1864 fullinfo = fullinfo.replace(
m_nlRub,
"");
1868 if ((position = fullinfo.indexOf(
m_nlCat)) != -1)
1870 fullinfo = fullinfo.replace(
m_nlCat,
"");
1876 event.title =
event.title.replace(
m_nlOmroep,
"");
1881 event.description = fullinfo;
1882 event.description =
event.description.trimmed();
1883 event.title =
event.title.trimmed();
1884 event.subtitle =
event.subtitle.trimmed();
1905 int position =
event.title.indexOf(
m_noRerun);
1908 event.previouslyshown =
true;
1909 event.title =
event.title.replace(
m_noRerun,
"");
1912 position =
event.subtitle.indexOf(
m_noHD);
1916 event.subtitle =
event.subtitle.replace(
m_noHD,
"");
1919 position =
event.description.indexOf(
m_noHD);
1923 event.description =
event.description.replace(
m_noHD,
"");
1935 position =
event.title.indexOf(
m_noRerun);
1938 event.previouslyshown =
true;
1939 event.title =
event.title.replace(
m_noRerun,
"");
1942 position =
event.description.indexOf(
m_noRerun);
1945 event.previouslyshown =
true;
1950 while (((position = tmpExp1.indexIn(event.
title)) != -1) &&
1951 (tmpExp1.cap(2).length() > 1))
1953 event.title = tmpExp1.cap(2);
1954 event.description =
"(" + tmpExp1.cap(1) +
") " +
event.description;
1958 if ((position = tmpExp1.indexIn(event.
title)) >=3)
1964 if (!event.
title.startsWith(
"CSI:") &&
1965 !
event.title.startsWith(
"CD:") &&
1966 !
event.title.startsWith(
"Distriktsnyheter: fra"))
1968 if ((position = tmpExp1.indexIn(event.
title)) != -1)
1973 event.title = tmpExp1.cap(1);
1974 event.subtitle = tmpExp1.cap(2);
1976 else if (event.
subtitle == tmpExp1.cap(2))
1978 event.title = tmpExp1.cap(1);
1998 position =
event.title.indexOf(tmpRegEx);
2001 episode = tmpRegEx.cap(1).toInt();
2002 event.partnumber = tmpRegEx.cap(1).toInt();
2003 event.title =
event.title.replace(tmpRegEx,
"");
2007 position =
event.title.indexOf(tmpRegEx);
2010 episode = tmpRegEx.cap(1).toInt();
2011 event.partnumber = tmpRegEx.cap(1).toInt();
2012 event.parttotal = tmpRegEx.cap(2).toInt();
2013 event.title =
event.title.replace(tmpRegEx,
"");
2018 position =
event.title.indexOf(tmpRegEx);
2021 event.title = tmpRegEx.cap(1);
2022 event.subtitle = tmpRegEx.cap(2);
2027 if(event.
title.indexOf(tmpRegEx) != -1)
2029 event.title = tmpRegEx.cap(1);
2030 event.subtitle = tmpRegEx.cap(2);
2037 position =
event.description.indexOf(tmpRegEx);
2040 season = tmpRegEx.cap(1).toInt();
2047 season = tmpRegEx.cap(1).toInt();
2053 position =
event.description.indexOf(tmpRegEx);
2056 QString features = tmpRegEx.cap(1);
2057 event.description =
event.description.replace(tmpRegEx,
"");
2062 if (features.indexOf(
m_dkHD) != -1)
2086 if (event.
seriesId.length() >= 1 &&
event.seriesId[0] ==
'/')
2090 newid = QString(
"%1%2").arg(event.
chanid).
2093 newid =
event.seriesId.mid(2,8);
2094 event.seriesId = newid;
2097 if (event.
programId.length() >= 1 &&
event.programId[0] ==
'/')
2103 event.subtitle = QString(
"%1 (%2").arg(event.
subtitle).arg(episode);
2105 event.subtitle = QString(
"%1:%2").arg(event.
subtitle).
2109 event.syndicatedepisodenumber =
2110 QString(
"E%1S%2").arg(episode).arg(season);
2111 event.subtitle = QString(
"%1 Sæson %2").arg(event.
subtitle).
2114 event.subtitle = QString(
"%1)").arg(event.
subtitle);
2118 bool directorPresent =
false;
2119 position =
event.description.indexOf(tmpRegEx);
2122 QString tmpDirectorsString = tmpRegEx.cap(1);
2123 const QStringList directors =
2125 QStringList::const_iterator it = directors.begin();
2126 for (; it != directors.end(); ++it)
2128 tmpDirectorsString = it->split(
":").last().trimmed().
2129 remove(QRegExp(
"\\.$"));
2130 if (tmpDirectorsString !=
"")
2133 directorPresent =
true;
2137 position =
event.description.indexOf(tmpRegEx);
2140 QString tmpActorsString = tmpRegEx.cap(1);
2141 if (directorPresent)
2142 tmpActorsString = tmpActorsString.replace(
m_dkDirector,
"");
2143 const QStringList actors =
2145 QStringList::const_iterator it = actors.begin();
2146 for (; it != actors.end(); ++it)
2148 tmpActorsString = it->split(
":").last().trimmed().
2149 remove(QRegExp(
"\\.$"));
2150 if (tmpActorsString !=
"")
2156 position =
event.description.indexOf(tmpRegEx);
2160 uint y = tmpRegEx.cap(1).toUInt(&ok);
2162 event.originalairdate = QDate(y, 1, 1);
2165 event.description =
event.description.trimmed();
2166 event.title =
event.title.trimmed();
2167 event.subtitle =
event.subtitle.trimmed();