summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY3
-rw-r--r--HISTORY.DE3
-rw-r--r--doc-src/de/epgsearch.1.txt9
-rw-r--r--doc-src/en/epgsearch.1.txt9
-rw-r--r--doc-src/en/epgsearch.4.txt1
-rw-r--r--epgsearchext.c46
-rw-r--r--epgsearchext.h1
-rw-r--r--epgsearchtools.c27
-rw-r--r--epgsearchtools.h3
-rw-r--r--menu_searchedit.c35
-rw-r--r--po/ca_ES.po7
-rw-r--r--po/cs_CZ.po7
-rw-r--r--po/da_DK.po7
-rw-r--r--po/de_DE.po8
-rw-r--r--po/el_GR.po7
-rw-r--r--po/es_ES.po9
-rw-r--r--po/et_EE.po7
-rw-r--r--po/fi_FI.po9
-rw-r--r--po/fr_FR.po9
-rw-r--r--po/hr_HR.po7
-rw-r--r--po/hu_HU.po8
-rw-r--r--po/it_IT.po9
-rw-r--r--po/lt_LT.po9
-rw-r--r--po/nl_NL.po9
-rw-r--r--po/nn_NO.po7
-rw-r--r--po/pl_PL.po7
-rw-r--r--po/pt_PT.po7
-rw-r--r--po/ro_RO.po7
-rw-r--r--po/ru_RU.po7
-rw-r--r--po/sk_SK.po9
-rw-r--r--po/sl_SI.po8
-rw-r--r--po/sv_SE.po7
-rw-r--r--po/tr_TR.po7
-rw-r--r--recdone.c94
-rw-r--r--recdone.h2
-rw-r--r--uservars.h19
36 files changed, 304 insertions, 126 deletions
diff --git a/HISTORY b/HISTORY
index 866d143..9f262b0 100644
--- a/HISTORY
+++ b/HISTORY
@@ -3,6 +3,9 @@ VDR Plugin 'epgsearch' Revision History
2010-xx-xx; Version 0.9.25
new:
+- avoid repeats with new 'compare expression' entry: compare two events by an arbitrary
+ expression. E.g: the epxression '%year%-%month%' will avoid all repeats within one month,
+ '%week%' will avoid the repeats within the week,...
- global blacklists: blacklists for search timers can now be global to exclude
generally unwanted events (like on my double SD/HD channels). Default mode for search
timers is now 'only global', but can be set to 'none' to ignore also global blacklists.
diff --git a/HISTORY.DE b/HISTORY.DE
index e791d34..96f3ecb 100644
--- a/HISTORY.DE
+++ b/HISTORY.DE
@@ -3,6 +3,9 @@ VDR Plugin 'epgsearch' Revision History
2010-xx-xx; Version 0.9.25
neu:
+- Vermeide Wiederholungen mit dem neuen 'Vergleiche Ausdruck'-Eintrag: dabei werden
+ 2 Sendungen anhand eines beliebigen Ausdruck verglichen. Z.B. '%year%-%month%' vermeidet
+ Wiederholungen innerhalb eines Monats, '%week%' innerhalb einer Wochen,...
- Globale Ausschlusslisten: Ausschlusslisten für Suchtimer können nun als global markiert
werden, um unerwünschte Sendungen generell auszuschliessen (wie z.B auf doppelten SD/HD-
Kanälen). Vorbelegung für Suchtimer ist nun "nur globale", kann aber auch auf "keine"
diff --git a/doc-src/de/epgsearch.1.txt b/doc-src/de/epgsearch.1.txt
index ca5bebb..8d35196 100644
--- a/doc-src/de/epgsearch.1.txt
+++ b/doc-src/de/epgsearch.1.txt
@@ -362,6 +362,15 @@ wird er als gleich behandelt.
Die notwendige bereinstimmung zweier Beschreibung in %.
+=item - B<Vergl. Ausdruck>
+
+Manchmal wird eine Sendung hufig innerhalb einer gewissen Zeitspanne (Woche, Monat,...)
+wiederholt, die einzelnen Sendungen lassen sich aber anhand des EPG Inhalts nicht unterscheiden.
+Somit ist der Zeitpunkt also die einzige Information. Um damit zu vergelichen, kann man diesen
+Eintrag mit den entsprechenden Variablen fllen. Z.B. Mit dem Ausdruck
+'%year%-%month%' werden die Wiederholungen innerhalb eines Monats dieses Jahres vermieden,
+'%year%-%week%' vermeidet die Wiederholungen innerhalb einer Woche des Jahres,...
+
=item - B<Vergl. Kategorien>
ber die Schaltflche 'Einstellungen' kann angegeben werden welche
diff --git a/doc-src/en/epgsearch.1.txt b/doc-src/en/epgsearch.1.txt
index 04e6c2b..b6f5d38 100644
--- a/doc-src/en/epgsearch.1.txt
+++ b/doc-src/en/epgsearch.1.txt
@@ -358,6 +358,15 @@ compared. If this is similar at the value of the next option
The needed minimum match of descriptions in percent.
+=item - B<Compare expression:>
+
+Sometimes an event is repeated many times within some period (week, month,...), but one
+cannot distinguish the repeats based on the EPG contents. So the only information is its time.
+To use this for comparison you can fill this entry with the corresponding variables.
+E.g: the epxression
+'%year%-%month%' will avoid all repeats within one month of the year,
+'%year%-%week%' will avoid the repeats within the week of the year,...
+
=item - B<Compare categories:>
With the button 'setup' you can also specify which categories should
diff --git a/doc-src/en/epgsearch.4.txt b/doc-src/en/epgsearch.4.txt
index 6257499..c19eaec 100644
--- a/doc-src/en/epgsearch.4.txt
+++ b/doc-src/en/epgsearch.4.txt
@@ -533,6 +533,7 @@ The following variables exist:
%year% - year with century
%month% - month (1-12)
%day% - day (1-31)
+ %week% - week number of the year (Monday as the first day of the week) as a decimal number [01,53]
%time_w% - weekday name
%time_d% - start day in format TT
%time_lng% - start time in seconds since 1970-01-01 00:00
diff --git a/epgsearchext.c b/epgsearchext.c
index d1422b8..a73a31b 100644
--- a/epgsearchext.c
+++ b/epgsearchext.c
@@ -116,6 +116,7 @@ cSearchExt::cSearchExt(void)
ignoreMissingEPGCats = 0;
unmuteSoundOnSwitch = 0;
skipRunningEvents = false;
+ *compareExpression = 0;
}
cSearchExt::~cSearchExt(void)
@@ -218,6 +219,7 @@ cSearchExt& cSearchExt::operator= (const cSearchExt &SearchExt)
compareSubtitle = templ->compareSubtitle;
compareSummary = templ->compareSummary;
compareSummaryMatchInPercent = templ->compareSummaryMatchInPercent;
+ strcpy(compareExpression, templ->compareExpression);
allowedRepeats = templ->allowedRepeats;
catvaluesAvoidRepeat = templ->catvaluesAvoidRepeat;
repeatsWithinDays = templ->repeatsWithinDays;
@@ -249,6 +251,15 @@ bool cSearchExt::operator< (const cListObject &ListObject)
return strcasecmp(search, SE->search) < 0;
}
+char* replaceSpecialChars(const char* in)
+{
+ char* tmp_in = strdup(in);
+ while(strstr(tmp_in, "|"))
+ tmp_in = strreplace(tmp_in, "|", "!^pipe^!"); // ugly: replace a pipe with something,
+ strreplace(tmp_in, ':', '|');
+ return tmp_in;
+}
+
const char *cSearchExt::ToText()
{
char tmp_Start[5] = "";
@@ -256,23 +267,14 @@ const char *cSearchExt::ToText()
char tmp_minDuration[5] = "";
char tmp_maxDuration[5] = "";
cString tmp_chanSel;
- char* tmp_search = NULL;
- char* tmp_directory = NULL;
char* tmp_catvalues = NULL;
char* tmp_blacklists = NULL;
free(buffer);
- tmp_search = strdup(search);
- while(strstr(tmp_search, "|"))
- tmp_search = strreplace(tmp_search, "|", "!^pipe^!"); // ugly: replace a pipe with something,
- // that should not happen to be part of a search string
- tmp_directory = strdup(directory);
- while(strstr(tmp_directory, "|"))
- tmp_directory = strreplace(tmp_directory, "|", "!^pipe^!"); // ugly: replace a pipe with something,
- // that should not happen to be part of a search string
-
- strreplace(tmp_search, ':', '|');
- strreplace(tmp_directory, ':', '|');
+ char* tmp_search = replaceSpecialChars(search);
+ char* tmp_directory = replaceSpecialChars(directory);
+ char* tmp_contentsFilter = replaceSpecialChars(contentsFilter.c_str());
+ char* tmp_compareExpression = replaceSpecialChars(compareExpression);
if (useTime)
{
@@ -350,7 +352,7 @@ const char *cSearchExt::ToText()
}
}
- msprintf(&buffer, "%d:%s:%d:%s:%s:%d:%s:%d:%d:%d:%d:%d:%d:%s:%s:%d:%d:%d:%d:%s:%d:%d:%d:%d:%d:%d:%d:%s:%d:%d:%d:%d:%d:%ld:%d:%d:%d:%d:%d:%d:%s:%d:%d:%d:%d:%d:%d:%ld:%ld:%d:%d:%d:%s",
+ msprintf(&buffer, "%d:%s:%d:%s:%s:%d:%s:%d:%d:%d:%d:%d:%d:%s:%s:%d:%d:%d:%d:%s:%d:%d:%d:%d:%d:%d:%d:%s:%d:%d:%d:%d:%d:%ld:%d:%d:%d:%d:%d:%d:%s:%d:%d:%d:%d:%d:%d:%ld:%ld:%d:%d:%d:%s:%s",
ID,
tmp_search,
useTime,
@@ -403,12 +405,15 @@ const char *cSearchExt::ToText()
ignoreMissingEPGCats,
unmuteSoundOnSwitch,
compareSummaryMatchInPercent,
- contentsFilter.c_str());
+ contentsFilter.c_str(),
+ compareExpression);
if (tmp_search) free(tmp_search);
if (tmp_directory) free(tmp_directory);
if (tmp_catvalues) free(tmp_catvalues);
if (tmp_blacklists) free(tmp_blacklists);
+ if (tmp_contentsFilter) free(tmp_contentsFilter);
+ if (tmp_compareExpression) free(tmp_compareExpression);
return buffer;
}
@@ -614,6 +619,9 @@ bool cSearchExt::Parse(const char *s)
case 53:
contentsFilter = value;
break;
+ case 54:
+ strcpy(compareExpression, value);
+ break;
default:
break;
} //switch
@@ -625,10 +633,16 @@ bool cSearchExt::Parse(const char *s)
strreplace(directory, '|', ':');
strreplace(search, '|', ':');
+ strreplace(contentsFilter, "|", ":");
+ strreplace(compareExpression, '|', ':');
+
while(strstr(search, "!^pipe^!"))
strreplace(search, "!^pipe^!", "|");
while(strstr(directory, "!^pipe^!"))
strreplace(directory, "!^pipe^!", "|");
+ strreplace(contentsFilter, "!^pipe^!", "|");
+ while(strstr(compareExpression, "!^pipe^!"))
+ strreplace(compareExpression, "!^pipe^!", "|");
if (disableSearchtimer && useAsSearchTimer)
{
@@ -1191,7 +1205,7 @@ void cSearchExt::CheckRepeatTimers(cSearchResults* pResults)
if (!pResultObjP->needsTimer) continue;
- if (EventsMatch(pEvent, pEventP, compareTitle, compareSubtitle, compareSummary, catvaluesAvoidRepeat))
+ if (EventsMatch(pEvent, pEventP, compareTitle, compareSubtitle, compareSummary, compareExpression, catvaluesAvoidRepeat))
{
if (!pFirstResultMatching) pFirstResultMatching = pResultObjP;
plannedTimers++;
diff --git a/epgsearchext.h b/epgsearchext.h
index 4677b07..9a61f5b 100644
--- a/epgsearchext.h
+++ b/epgsearchext.h
@@ -150,6 +150,7 @@ public:
int compareSubtitle;
int compareSummary;
int compareSummaryMatchInPercent;
+ char compareExpression[MaxFileName];
int allowedRepeats;
unsigned long catvaluesAvoidRepeat;
int repeatsWithinDays;
diff --git a/epgsearchtools.c b/epgsearchtools.c
index d36cd15..7beaed6 100644
--- a/epgsearchtools.c
+++ b/epgsearchtools.c
@@ -54,7 +54,7 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
#include <regex.h>
#endif
-const char AllowedChars[] = trNOOP("$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&");
+const char AllowedChars[] = trNOOP("$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_");
extern bool isUTF8;
int CompareEventTime(const void *p1, const void *p2)
@@ -564,6 +564,21 @@ char *strreplacei(char *s, const char *s1, const char *s2)
return s;
}
+std::string strreplace(
+ std::string& result,
+ const std::string& replaceWhat,
+ const std::string& replaceWithWhat)
+{
+ while(1)
+ {
+ const int pos = result.find(replaceWhat);
+ if (pos==-1) break;
+ result.replace(pos,replaceWhat.size(),replaceWithWhat);
+ }
+ return result;
+}
+
+
void sleepMSec(long ms)
{
cCondWait::SleepMs(ms);
@@ -791,7 +806,7 @@ void PrepareTimerFile(const cEvent* event, cTimer* timer)
}
}
-bool EventsMatch(const cEvent* event1, const cEvent* event2, bool compareTitle, int compareSubtitle, bool compareSummary, unsigned long catvaluesAvoidRepeat, int matchLimit)
+bool EventsMatch(const cEvent* event1, const cEvent* event2, bool compareTitle, int compareSubtitle, bool compareSummary, const char* compareExpression, unsigned long catvaluesAvoidRepeat, int matchLimit)
{
if (!event1 || !event2) return false;
if (event1 == event2) return true;
@@ -835,6 +850,14 @@ bool EventsMatch(const cEvent* event1, const cEvent* event2, bool compareTitle,
free(rawDescr2);
if (!match) return false;
}
+ if (compareExpression != NULL && strlen(compareExpression) > 0)
+ {
+ cVarExpr varExpr(compareExpression);
+ string resEvent1 = varExpr.Evaluate(event1);
+ string resEvent2 = varExpr.Evaluate(event2);
+ if (resEvent1 != resEvent2)
+ return false;
+ }
if (catvaluesAvoidRepeat != 0) // check categories
{
bool bCatMatch = ((Descr1 && Descr2) || (!Descr1 && !Descr2));
diff --git a/epgsearchtools.h b/epgsearchtools.h
index 0f44ad8..6973995 100644
--- a/epgsearchtools.h
+++ b/epgsearchtools.h
@@ -141,6 +141,7 @@ string UpdateAuxValue(string aux, string section, string value);
string UpdateAuxValue(string aux, string section, long num);
void ToLower(char* szText);
char *strreplacei(char *s, const char *s1, const char *s2);
+std::string strreplace(std::string& result, const std::string& replaceWhat, const std::string& replaceWithWhat);
// replace s1 with s2 in s ignoring the case of s1
inline char *strreplacei(char *s, const char *s1, const char s2)
@@ -170,7 +171,7 @@ char* GetRawDescription(const char* descr);
void PrepareTimerFile(const cEvent* event, cTimer* timer);
int CompareEventTime(const void *p1, const void *p2);
int CompareEventChannel(const void *p1, const void *p2);
-bool EventsMatch(const cEvent* event1, const cEvent* event2, bool compareTitle, int compareSubtitle, bool compareSummary, unsigned long catvaluesAvoidRepeat, int matchLimit=90);
+bool EventsMatch(const cEvent* event1, const cEvent* event2, bool compareTitle, int compareSubtitle, bool compareSummary, const char* compareExpression, unsigned long catvaluesAvoidRepeat, int matchLimit=90);
int ChannelNrFromEvent(const cEvent* pEvent);
void DelTimer(int index);
char* FixSeparators(char* buffer, char sep);
diff --git a/menu_searchedit.c b/menu_searchedit.c
index f415e51..ebf4da9 100644
--- a/menu_searchedit.c
+++ b/menu_searchedit.c
@@ -367,30 +367,31 @@ void cMenuEditSearchExt::Set()
if (data.avoidRepeats)
{
Add(new cMenuEditIntItem(IndentMenuItem(tr("Allowed repeats"),2), &data.allowedRepeats, 0, 99));
- if (data.allowedRepeats > 0)
- Add(new cMenuEditIntItem(IndentMenuItem(tr("Only repeats within ... days"),2), &data.repeatsWithinDays, 0, 999));
- Add(new cMenuEditBoolItem(IndentMenuItem(tr("Compare title"),2), &data.compareTitle, trVDR("no"), trVDR("yes")));
- Add(new cMenuEditStraItem(IndentMenuItem(tr("Compare subtitle"),2), &data.compareSubtitle, 2, CompareSubtitleModes));
- Add(new cMenuEditBoolItem(IndentMenuItem(tr("Compare summary"),2), &data.compareSummary, trVDR("no"), trVDR("yes")));
- if (data.compareSummary)
- Add(new cMenuEditIntItem(IndentMenuItem(tr("Min. match in %"),3), &data.compareSummaryMatchInPercent, 1, 100));
- // show 'Compare categories' only if we have them
- if (SearchExtCats.Count() > 0)
- {
+ if (data.allowedRepeats > 0)
+ Add(new cMenuEditIntItem(IndentMenuItem(tr("Only repeats within ... days"),2), &data.repeatsWithinDays, 0, 999));
+ Add(new cMenuEditBoolItem(IndentMenuItem(tr("Compare title"),2), &data.compareTitle, trVDR("no"), trVDR("yes")));
+ Add(new cMenuEditStraItem(IndentMenuItem(tr("Compare subtitle"),2), &data.compareSubtitle, 2, CompareSubtitleModes));
+ Add(new cMenuEditBoolItem(IndentMenuItem(tr("Compare summary"),2), &data.compareSummary, trVDR("no"), trVDR("yes")));
+ if (data.compareSummary)
+ Add(new cMenuEditIntItem(IndentMenuItem(tr("Min. match in %"),3), &data.compareSummaryMatchInPercent, 1, 100));
+ Add(new cMenuEditStrItem(IndentMenuItem(tr("Compare expression")), data.compareExpression, sizeof(data.compareExpression), tr(AllowedChars)));
+ // show 'Compare categories' only if we have them
+ if (SearchExtCats.Count() > 0)
+ {
cSearchExtCat *SearchExtCat = SearchExtCats.First();
int iUsed = 0;
int index = 0;
while (SearchExtCat)
- {
- if (catarrayAvoidRepeats[index])
+ {
+ if (catarrayAvoidRepeats[index])
iUsed++;
- SearchExtCat = SearchExtCats.Next(SearchExtCat);
- index++;
- }
-
+ SearchExtCat = SearchExtCats.Next(SearchExtCat);
+ index++;
+ }
+
cString itemtext = cString::sprintf("%s (%d/%d)", tr("Compare categories"), iUsed, SearchExtCats.Count());
Add(new cOsdItem(IndentMenuItem(IndentMenuItem(itemtext))));
- }
+ }
}
Add(new cMenuEditIntItem(IndentMenuItem(trVDR("Priority")), &data.Priority, 0, MAXPRIORITY));
diff --git a/po/ca_ES.po b/po/ca_ES.po
index 6363ef3..fc221ce 100644
--- a/po/ca_ES.po
+++ b/po/ca_ES.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Jordi Vil <jvila@tinet.org>\n"
"Language-Team: Catalan <vdr@linuxtv.org>\n"
@@ -556,7 +556,7 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr ""
msgid "Start/Stop time has changed"
@@ -1078,6 +1078,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/po/cs_CZ.po b/po/cs_CZ.po
index cb1bf47..60017a0 100644
--- a/po/cs_CZ.po
+++ b/po/cs_CZ.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Vladimr Brta <vladimir.barta@k2atmitec.cz>\n"
"Language-Team: Czech <vdr@linuxtv.org>\n"
@@ -554,7 +554,7 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr ""
msgid "Start/Stop time has changed"
@@ -1076,6 +1076,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/po/da_DK.po b/po/da_DK.po
index ad49b34..1c2fe60 100644
--- a/po/da_DK.po
+++ b/po/da_DK.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
"Language-Team: Danish <vdr@linuxtv.org>\n"
@@ -554,7 +554,7 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr ""
msgid "Start/Stop time has changed"
@@ -1076,6 +1076,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/po/de_DE.po b/po/de_DE.po
index 902d437..8fc692c 100644
--- a/po/de_DE.po
+++ b/po/de_DE.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Klaus Schmidinger <kls@cadsoft.de>\n"
"Language-Team: German <vdr@linuxtv.org>\n"
@@ -594,7 +594,8 @@ msgstr "Mailkonto-Prfung fehlgeschlagen!"
msgid "Button$Test"
msgstr "Test"
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+#, fuzzy
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr " abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "Start/Stop time has changed"
@@ -1124,6 +1125,9 @@ msgstr "Vergleiche Beschreibung"
msgid "Min. match in %"
msgstr "Min. bereinstimmung in %"
+msgid "Compare expression"
+msgstr "Vergleiche Ausdruck"
+
msgid "Compare categories"
msgstr "Vergl. Kategorien"
diff --git a/po/el_GR.po b/po/el_GR.po
index 2c391c5..d53f2fd 100644
--- a/po/el_GR.po
+++ b/po/el_GR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
"Language-Team: Greek <vdr@linuxtv.org>\n"
@@ -554,7 +554,7 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr ""
msgid "Start/Stop time has changed"
@@ -1076,6 +1076,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/po/es_ES.po b/po/es_ES.po
index fe13ef2..ffbf13e 100644
--- a/po/es_ES.po
+++ b/po/es_ES.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-11-18 20:09+0200\n"
"Last-Translator: bittor from open7x0.org <bittor7x0 _at_ gmail.com>\n"
"Language-Team: Spanish <vdr@linuxtv.org>\n"
@@ -597,7 +597,8 @@ msgstr "Fall la prueba de cuenta de correo!"
msgid "Button$Test"
msgstr "Probar"
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+#, fuzzy
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr " abcdefghijklmnopqrstuvwxyz0123456789-_.,#~\\^$[]|()*+?{}/:%@&"
msgid "Start/Stop time has changed"
@@ -1132,6 +1133,10 @@ msgstr "Comparar resumen"
msgid "Min. match in %"
msgstr " Duracin mn."
+#, fuzzy
+msgid "Compare expression"
+msgstr "expresin regular"
+
msgid "Compare categories"
msgstr "Comparar categoras"
diff --git a/po/et_EE.po b/po/et_EE.po
index 5259744..0cbdf0f 100644
--- a/po/et_EE.po
+++ b/po/et_EE.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Arthur Konovalov <kasjas@hot.ee>\n"
"Language-Team: Estonian <vdr@linuxtv.org>\n"
@@ -554,7 +554,7 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr ""
msgid "Start/Stop time has changed"
@@ -1076,6 +1076,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/po/fi_FI.po b/po/fi_FI.po
index 3097725..bb484fe 100644
--- a/po/fi_FI.po
+++ b/po/fi_FI.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: EPGSearch 0.9.25\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2011-01-04 21:07+0200\n"
"Last-Translator: Ville Skyttä <ville.skytta@iki.fi>\n"
"Language-Team: Finnish <vdr@linuxtv.org>\n"
@@ -598,7 +598,8 @@ msgstr "Sähköpostilaatikon tarkistus epäonnistui!"
msgid "Button$Test"
msgstr "Testaa"
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+#, fuzzy
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr " abcdefghijklmnopqrstuvwxyzåäö0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "Start/Stop time has changed"
@@ -1128,6 +1129,10 @@ msgstr "Vertaa kuvausta"
msgid "Min. match in %"
msgstr "Vaadittava yhdenmukaisuus [%]"
+#, fuzzy
+msgid "Compare expression"
+msgstr "säännöllinen lauseke"
+
msgid "Compare categories"
msgstr "Vertaa kategorioita"
diff --git a/po/fr_FR.po b/po/fr_FR.po
index 6cfcff3..0a00948 100644
--- a/po/fr_FR.po
+++ b/po/fr_FR.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2008-04-30 08:36+0200\n"
"Last-Translator: Patrice Staudt <patrice.staudt@laposte.net>\n"
"Language-Team: French <vdr@linuxtv.org>\n"
@@ -597,7 +597,8 @@ msgstr "La vrification du compte mail a chou"
msgid "Button$Test"
msgstr "Test"
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+#, fuzzy
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr " abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "Start/Stop time has changed"
@@ -1126,6 +1127,10 @@ msgstr "Comparer les descriptions"
msgid "Min. match in %"
msgstr " Dure min."
+#, fuzzy
+msgid "Compare expression"
+msgstr "expression rguliere"
+
msgid "Compare categories"
msgstr "Comparer categories"
diff --git a/po/hr_HR.po b/po/hr_HR.po
index 3922824..d74f696 100644
--- a/po/hr_HR.po
+++ b/po/hr_HR.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Drazen Dupor <drazen.dupor@dupor.com>\n"
"Language-Team: Croatian <vdr@linuxtv.org>\n"
@@ -555,7 +555,7 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr ""
msgid "Start/Stop time has changed"
@@ -1077,6 +1077,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/po/hu_HU.po b/po/hu_HU.po
index 7ce420a..7936ff9 100644
--- a/po/hu_HU.po
+++ b/po/hu_HU.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Istvan Koenigsberger <istvnko@hotmail.com>, Guido Josten <guido.josten@t-online.de>\n"
"Language-Team: Hungarian <vdr@linuxtv.org>\n"
@@ -554,7 +554,8 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+#, fuzzy
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr " abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "Start/Stop time has changed"
@@ -1076,6 +1077,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/po/it_IT.po b/po/it_IT.po
index 6079bd3..e39808b 100644
--- a/po/it_IT.po
+++ b/po/it_IT.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2010-03-29 01:42+0100\n"
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
"Language-Team: Italian <vdr@linuxtv.org>\n"
@@ -607,7 +607,8 @@ msgstr "Verifica account email fallita!"
msgid "Button$Test"
msgstr "Prova"
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+#, fuzzy
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr " aàbcdeéèfghiîìjklmnoòpqrstuùvwxyz0123456789-.#~\\^$[]|()*+?{}/:%"
msgid "Start/Stop time has changed"
@@ -1140,6 +1141,10 @@ msgstr "Confronta sommario"
msgid "Min. match in %"
msgstr " Durata Minima"
+#, fuzzy
+msgid "Compare expression"
+msgstr "espressione regolare"
+
msgid "Compare categories"
msgstr "Confronta categorie"
diff --git a/po/lt_LT.po b/po/lt_LT.po
index d1b4d0c..e2861e1 100644
--- a/po/lt_LT.po
+++ b/po/lt_LT.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.7.10\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
"Language-Team: Lithuanian <vdr@linuxtv.org>\n"
@@ -602,7 +602,8 @@ msgstr "Pašto prisijungimo patikra!"
msgid "Button$Test"
msgstr "Testas"
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+#, fuzzy
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr " aąbcčdeęėfghiįjklmnopqrsštuųūvzž0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "Start/Stop time has changed"
@@ -1135,6 +1136,10 @@ msgstr "Palyginti santrauką"
msgid "Min. match in %"
msgstr " Min. trukmė"
+#, fuzzy
+msgid "Compare expression"
+msgstr "reguliari išraiška"
+
msgid "Compare categories"
msgstr "Palyginti kategorijas"
diff --git a/po/nl_NL.po b/po/nl_NL.po
index 7d8c0ba..57c99c6 100644
--- a/po/nl_NL.po
+++ b/po/nl_NL.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Maarten Wisse <Maarten.Wisse@urz.uni-hd.de>\n"
"Language-Team: Dutch <vdr@linuxtv.org>\n"
@@ -595,7 +595,8 @@ msgstr "Mail abonnement verificatie mislukt!"
msgid "Button$Test"
msgstr "Test"
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+#, fuzzy
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr " abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "Start/Stop time has changed"
@@ -1130,6 +1131,10 @@ msgstr "Vergelijk samenvatting"
msgid "Min. match in %"
msgstr " Min. duur"
+#, fuzzy
+msgid "Compare expression"
+msgstr "reguliere uitdrukking"
+
msgid "Compare categories"
msgstr "vergelijk categorien"
diff --git a/po/nn_NO.po b/po/nn_NO.po
index 23b51c1..8e74467 100644
--- a/po/nn_NO.po
+++ b/po/nn_NO.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
"Language-Team: Norwegian Nynorsk <vdr@linuxtv.org>\n"
@@ -554,7 +554,7 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr ""
msgid "Start/Stop time has changed"
@@ -1076,6 +1076,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/po/pl_PL.po b/po/pl_PL.po
index 7c19bb3..315d33e 100644
--- a/po/pl_PL.po
+++ b/po/pl_PL.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Michael Rakowski <mrak@gmx.de>\n"
"Language-Team: Polish <vdr@linuxtv.org>\n"
@@ -554,7 +554,7 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr ""
msgid "Start/Stop time has changed"
@@ -1076,6 +1076,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/po/pt_PT.po b/po/pt_PT.po
index bdf8a4e..1e4a447 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Paulo Lopes <pmml@netvita.pt>\n"
"Language-Team: Portuguese <vdr@linuxtv.org>\n"
@@ -553,7 +553,7 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr ""
msgid "Start/Stop time has changed"
@@ -1075,6 +1075,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/po/ro_RO.po b/po/ro_RO.po
index 3cc11ec..ecfbf4c 100644
--- a/po/ro_RO.po
+++ b/po/ro_RO.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
"Language-Team: Romanian <vdr@linuxtv.org>\n"
@@ -554,7 +554,7 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr ""
msgid "Start/Stop time has changed"
@@ -1076,6 +1076,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/po/ru_RU.po b/po/ru_RU.po
index 2f501d7..fa7bd36 100644
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Vyacheslav Dikonov <sdiconov@mail.ru>\n"
"Language-Team: Russian <vdr@linuxtv.org>\n"
@@ -553,7 +553,7 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr ""
msgid "Start/Stop time has changed"
@@ -1075,6 +1075,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/po/sk_SK.po b/po/sk_SK.po
index 4fcf93e..5c8e6f3 100644
--- a/po/sk_SK.po
+++ b/po/sk_SK.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: epgsearch\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2009-11-02 09:40+0100\n"
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
"Language-Team: Slovak <hrala.milan@gmail.com>\n"
@@ -597,7 +597,8 @@ msgstr "Chyba kontroly mailovho tu!"
msgid "Button$Test"
msgstr "Testova"
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+#, fuzzy
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr " $ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "Start/Stop time has changed"
@@ -1134,6 +1135,10 @@ msgstr "porovna celkovo"
msgid "Min. match in %"
msgstr " Min. doba"
+#, fuzzy
+msgid "Compare expression"
+msgstr "ben vraz"
+
msgid "Compare categories"
msgstr "porovna kategrie"
diff --git a/po/sl_SI.po b/po/sl_SI.po
index 25f0dbd..cf84b9a 100644
--- a/po/sl_SI.po
+++ b/po/sl_SI.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
"Language-Team: Slovenian <vdr@linuxtv.org>\n"
@@ -554,7 +554,8 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+#, fuzzy
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr " abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "Start/Stop time has changed"
@@ -1076,6 +1077,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/po/sv_SE.po b/po/sv_SE.po
index 5b763b7..4ae11c3 100644
--- a/po/sv_SE.po
+++ b/po/sv_SE.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Tomas Prybil <tomas@prybil.se>\n"
"Language-Team: Swedish <vdr@linuxtv.org>\n"
@@ -554,7 +554,7 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr ""
msgid "Start/Stop time has changed"
@@ -1076,6 +1076,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/po/tr_TR.po b/po/tr_TR.po
index 7bf0fb6..6887b78 100644
--- a/po/tr_TR.po
+++ b/po/tr_TR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <cwieninger@gmx.de>\n"
-"POT-Creation-Date: 2011-05-30 19:07+0200\n"
+"POT-Creation-Date: 2011-06-12 10:15+0200\n"
"PO-Revision-Date: 2007-08-14 20:21+0200\n"
"Last-Translator: Oktay Yolgeen <oktay_73@yahoo.de>\n"
"Language-Team: Turkish <vdr@linuxtv.org>\n"
@@ -553,7 +553,7 @@ msgstr ""
msgid "Button$Test"
msgstr ""
-msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgid "$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&_"
msgstr ""
msgid "Start/Stop time has changed"
@@ -1075,6 +1075,9 @@ msgstr ""
msgid "Min. match in %"
msgstr ""
+msgid "Compare expression"
+msgstr ""
+
msgid "Compare categories"
msgstr ""
diff --git a/recdone.c b/recdone.c
index 7556c5b..f40a884 100644
--- a/recdone.c
+++ b/recdone.c
@@ -28,6 +28,7 @@ The project's page is at http://winni.vdr-developer.org/epgsearch
#include "epgsearchcfg.h"
#include "epgsearchcats.h"
#include "searchtimer_thread.h"
+#include "uservars.h"
#include <vdr/tools.h>
@@ -229,10 +230,50 @@ int cRecDone::ChannelNr()
// -- cRecsDone -----------------------------------------------------------------
int cRecsDone::GetCountRecordings(const cEvent* event, cSearchExt* search, cRecDone** first, int matchLimit)
{
- return GetCountRecordings(event, search->compareTitle, search->compareSubtitle, search->compareSummary, search->catvaluesAvoidRepeat, first, matchLimit);
+ return GetCountRecordings(event, search->compareTitle, search->compareSubtitle, search->compareSummary, search->compareExpression, search->catvaluesAvoidRepeat, first, matchLimit);
}
-int cRecsDone::GetCountRecordings(const cEvent* event, bool compareTitle, int compareSubtitle, bool compareSummary, unsigned long catvaluesAvoidRepeat, cRecDone** first, int matchLimit)
+bool CatValuesMatch(unsigned long catvaluesAvoidRepeat, const string& rDescr, const string& eDescr)
+{
+ bool bCatMatch = ((rDescr != "" && eDescr != "") || (rDescr == "" && eDescr == ""));
+ cSearchExtCat *SearchExtCat = SearchExtCats.First();
+ int index = 0;
+ while (catvaluesAvoidRepeat > 0 && SearchExtCat && bCatMatch)
+ {
+ if (catvaluesAvoidRepeat & (1<<index))
+ {
+ char* eCatValue = GetExtEPGValue(eDescr.c_str(), SearchExtCat->name);
+ char* rCatValue = GetExtEPGValue(rDescr.c_str(), SearchExtCat->name);
+ if ((!eCatValue && rCatValue) ||
+ (!rCatValue && eCatValue) ||
+ (eCatValue && rCatValue && strcmp(eCatValue, rCatValue) != 0))
+ bCatMatch = false;
+ free(eCatValue);
+ free(rCatValue);
+ }
+ SearchExtCat = SearchExtCats.Next(SearchExtCat);
+ index++;
+ }
+ return bCatMatch;
+}
+
+bool MatchesInExpression(const string& expression, const cRecDone* recDone, const cEvent* event)
+{
+ cVarExpr varExpr(expression);
+
+ cEvent recDoneEvent(0);
+ recDoneEvent.SetTitle(recDone->title);
+ recDoneEvent.SetShortText(recDone->shortText);
+ recDoneEvent.SetDescription(recDone->description);
+ recDoneEvent.SetStartTime(recDone->startTime);
+ recDoneEvent.SetDuration(recDone->duration);
+
+ string resRecDone = varExpr.Evaluate(&recDoneEvent);
+ string resEvent = varExpr.Evaluate(event);
+ return resRecDone == resEvent;
+}
+
+int cRecsDone::GetCountRecordings(const cEvent* event, bool compareTitle, int compareSubtitle, bool compareSummary, const char* compareExpression, unsigned long catvaluesAvoidRepeat, cRecDone** first, int matchLimit)
{
if (first)
*first = NULL;
@@ -265,7 +306,7 @@ int cRecsDone::GetCountRecordings(const cEvent* event, bool compareTitle, int co
eRawDescr = rawDescr?rawDescr:"";
if (rawDescr) free(rawDescr);
}
-
+
cRecDone* firstrecDone = NULL;
cRecDone* recDone = First();
while (recDone)
@@ -296,46 +337,15 @@ int cRecsDone::GetCountRecordings(const cEvent* event, bool compareTitle, int co
if ((!compareTitle || rTitle == eTitle) &&
(!compareSubtitle || (rSubtitle == eSubtitle && rSubtitle !="")) &&
- (!compareSummary || DescriptionMatches(eRawDescr.c_str(), rRawDescr.c_str(), matchLimit)))
+ (!compareSummary || DescriptionMatches(eRawDescr.c_str(), rRawDescr.c_str(), matchLimit)) &&
+ (catvaluesAvoidRepeat == 0 || CatValuesMatch(catvaluesAvoidRepeat, rDescr, eDescr)) &&
+ (compareExpression == NULL || strlen(compareExpression) == 0 || MatchesInExpression(compareExpression, recDone, event)))
{
- if (catvaluesAvoidRepeat != 0) // check categories
- {
- bool bCatMatch = ((rDescr != "" && eDescr != "") || (rDescr == "" && eDescr == ""));
- cSearchExtCat *SearchExtCat = SearchExtCats.First();
- int index = 0;
- while (catvaluesAvoidRepeat > 0 && SearchExtCat && bCatMatch)
- {
- if (catvaluesAvoidRepeat & (1<<index))
- {
- char* eCatValue = GetExtEPGValue(eDescr.c_str(), SearchExtCat->name);
- char* rCatValue = GetExtEPGValue(rDescr.c_str(), SearchExtCat->name);
- if ((!eCatValue && rCatValue) ||
- (!rCatValue && eCatValue) ||
- (eCatValue && rCatValue && strcmp(eCatValue, rCatValue) != 0))
- bCatMatch = false;
- free(eCatValue);
- free(rCatValue);
- }
- SearchExtCat = SearchExtCats.Next(SearchExtCat);
- index++;
- }
- if (bCatMatch)
- {
- if (!firstrecDone) firstrecDone = recDone;
- else
- if (firstrecDone->startTime > recDone->startTime)
- firstrecDone = recDone;
- count++;
- }
- }
- else
- {
- if (!firstrecDone) firstrecDone = recDone;
- else
- if (firstrecDone->startTime > recDone->startTime)
- firstrecDone = recDone;
- count++;
- }
+ if (!firstrecDone) firstrecDone = recDone;
+ else
+ if (firstrecDone->startTime > recDone->startTime)
+ firstrecDone = recDone;
+ count++;
}
recDone = Next(recDone);
diff --git a/recdone.h b/recdone.h
index 9f570d4..291a2d9 100644
--- a/recdone.h
+++ b/recdone.h
@@ -69,7 +69,7 @@ class cRecsDone : public cList<cRecDone>, public cMutex {
}
cRecsDone(void) {}
int GetCountRecordings(const cEvent* event, cSearchExt* search, cRecDone** first = NULL, int matchLimit = 90);
- int GetCountRecordings(const cEvent*, bool compareTitle, int compareSubtitle, bool compareSummary, unsigned long, cRecDone** first = NULL, int matchLimit = 90);
+ int GetCountRecordings(const cEvent*, bool compareTitle, int compareSubtitle, bool compareSummary, const char* compareExpression, unsigned long, cRecDone** first = NULL, int matchLimit = 90);
int GetTotalCountRecordings(cSearchExt* search, cRecDone** first);
void RemoveSearchID(int ID);
bool Load(const char *FileName = NULL);
diff --git a/uservars.h b/uservars.h
index 735420a..e98c0ec 100644
--- a/uservars.h
+++ b/uservars.h
@@ -354,7 +354,7 @@ public:
class cMonthVar : public cInternalVar {
public:
- cMonthVar() : cInternalVar("%year%") {}
+ cMonthVar() : cInternalVar("%month%") {}
string Evaluate(const cEvent* e, bool escapeStrings = false)
{
if (!e) return "";
@@ -382,6 +382,21 @@ public:
}
};
+class cWeekVar : public cInternalVar {
+public:
+ cWeekVar() : cInternalVar("%week%") {}
+ string Evaluate(const cEvent* e, bool escapeStrings = false)
+ {
+ if (!e) return "";
+ char day[3] = "";
+ struct tm tm_r;
+ const time_t t = e->StartTime();
+ tm *tm = localtime_r(&t, &tm_r);
+ strftime(day, sizeof(day), "%V", tm);
+ if (escapeStrings) return "'" + EscapeString(day) + "'"; else return day;
+ }
+};
+
class cChannelNrVar : public cInternalVar {
public:
cChannelNrVar() : cInternalVar("%chnr%") {}
@@ -719,6 +734,7 @@ class cUserVars : public cList<cUserVar> {
cYearVar yearVar;
cMonthVar monthVar;
cDayVar dayVar;
+ cWeekVar weekVar;
cChannelNrVar chnrVar;
cChannelShortVar chShortVar;
cChannelLongVar chLongVar;
@@ -775,6 +791,7 @@ class cUserVars : public cList<cUserVar> {
internalVars[yearVar.Name()] = &yearVar;
internalVars[monthVar.Name()] = &monthVar;
internalVars[dayVar.Name()] = &dayVar;
+ internalVars[weekVar.Name()] = &weekVar;
internalVars[chnrVar.Name()] = &chnrVar;
internalVars[chShortVar.Name()] = &chShortVar;
internalVars[chLongVar.Name()] = &chLongVar;