chrisrichner / argus-tv-guideenhancer Goto Github PK
View Code? Open in Web Editor NEWElectronic Program Guide Enhancer for Argus TV
Home Page: https://code.google.com/p/ftr-guide-enhancer/
License: Apache License 2.0
Electronic Program Guide Enhancer for Argus TV
Home Page: https://code.google.com/p/ftr-guide-enhancer/
License: Apache License 2.0
Hi All
I think, I reached the capacity limit of seriesMap entries.
Since I added the most recent 2 mappings, GE didn't start anymore.
If I start it manually, I get the message:
"Services ¦ Error 14001 [...] Side-by-Side configuration is invalid" - see attachment:
The Windows Protocol / Application shows:
But the text is not correct.. If I remove one or two entries - no matter which - it is startable again
GReetz - Chris
PS: ask me - I can send you the "non-working config"
I am struggling getting GuideEnricher to work after installing the most recent version. It will not startup; there seems to be a fatal error right away, which leads me to beleive I am doing something wrong or am missing something obvious. Can you please give me some ideas where to start looking?
Thanks.
Log file:
2015-06-26 09:24:04 [5] INFO GuideEnricher.Service - Starting
2015-06-26 09:24:04 [7] INFO GuideEnricher.Service - Connection and event listener task started...
2015-06-26 09:24:15 [11] INFO GuideEnricher.Service - SubscribeServiceEvents() succeeded
2015-06-26 09:24:19 [5] DEBUG GuideEnricher.tvdb.TvdbLibAccess - Language: de
2015-06-26 09:24:21 [5] ERROR GuideEnricher.Service - Error enriching
System.AggregateException: One or more errors occurred. ---> System.ArgumentNullException: Value cannot be null.
Parameter name: input
at System.Text.RegularExpressions.Regex.IsMatch(String input)
at GuideEnricher.Enricher.d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at GuideEnricher.Enricher.d__8.MoveNext()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at GuideEnricher.Service.Enrich(Object state, ElapsedEventArgs eventArgs)
---> (Inner Exception #0) System.ArgumentNullException: Value cannot be null.
Parameter name: input
at System.Text.RegularExpressions.Regex.IsMatch(String input)
at GuideEnricher.Enricher.d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at GuideEnricher.Enricher.d__8.MoveNext()<---
2015-06-26 09:26:20 [4] INFO GuideEnricher.Service - Service stopping
2015-06-26 09:26:22 [5] INFO GuideEnricher.Service - Starting
2015-06-26 09:26:22 [7] INFO GuideEnricher.Service - Connection and event listener task started...
2015-06-26 09:26:33 [10] INFO GuideEnricher.Service - SubscribeServiceEvents() succeeded
2015-06-26 09:26:38 [12] DEBUG GuideEnricher.tvdb.TvdbLibAccess - Language: en
2015-06-26 09:26:38 [12] ERROR GuideEnricher.Service - Error enriching
System.AggregateException: One or more errors occurred. ---> System.ArgumentNullException: Value cannot be null.
Parameter name: input
at System.Text.RegularExpressions.Regex.IsMatch(String input)
at GuideEnricher.Enricher.d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at GuideEnricher.Enricher.d__8.MoveNext()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at GuideEnricher.Service.Enrich(Object state, ElapsedEventArgs eventArgs)
---> (Inner Exception #0) System.ArgumentNullException: Value cannot be null.
Parameter name: input
at System.Text.RegularExpressions.Regex.IsMatch(String input)
at GuideEnricher.Enricher.d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at GuideEnricher.Enricher.d__8.MoveNext()<---
Config file:
or
<logger name="GuideEnricher.EpisodeMatchMethods">
<level value="error" />
</logger>
-->
I am running 2.3 for both Argus and GE. I have two shows that are not returning episode matches. One because it is not being updated at the TVdb. I have no problem ignoring that one. The other was working till this last episode. I am not sure why the direct title match is not working. They look the same to me. I will post the error below, but my main question / feature request / bug report is instead of having the whole update fail when one episode doesn't match, can't GE just skip updating that one episode? This also causes a problem when I try and record the local news.
http://www.argus-tv.com/forum/viewtopic.php?f=76&t=4003&start=130#p35635
2015-01-25 17:28:14 [46] ERROR GuideEnricher.Service - Error enriching
System.ArgumentNullException: Value cannot be null.
Parameter name: input
at System.Text.RegularExpressions.Regex.Match(String input)
at GuideEnricher.EpisodeMatchMethods.InQuotesInDescriptionMatchMethod.Match(GuideEnricherProgram enrichedGuideProgram, List`1 episodes)
at GuideEnricher.tvdb.TvdbLibAccess.EnrichProgram(GuideEnricherProgram existingProgram, TvdbSeries tvdbSeries)
at GuideEnricher.Enricher.EnrichProgramsInSeries(GuideEnricherSeries series, TvdbSeries OnlineSeries)
at GuideEnricher.Enricher.EnrichSeries(GuideEnricherSeries series)
at GuideEnricher.Enricher.EnrichUpcomingPrograms()
at GuideEnricher.Service.Enrich(Object state, ElapsedEventArgs eventArgs)
Create a https://pages.github.com/ site for the project.
Importance: very low
Part 1
Dear Chris, dear all
I encountered a series which is (officially) named as "Special Unit 2"
In EPG it comes up as
Not a problem for core functionality of Guide Enricher - I simply mapped two regex entries to one TheTVDB-ID - so far, so good.
Proposal: section "renameMap" with tags/entries/function "renameSeries"
What if GE implemented a config section "renameMap" with which a EPG series TITLE could also be "renamed"?
Positive side-effects:
Negative side-effects:
From my point of view, this is not very difficult to implement.
The benefit out of this function for Argus Users would potentially be huge. Some (many?) would probably use it just because of this functionality - and it bases on functions that all are already inherent withing GuideEnricher.
Many of them would THEN also start to use the core functionality as well.
I hope, this in understandable. I would be... hmmm, let's say: enthusiastic 💃
Greetz - Chris
Not sure if this is the right place to leave this observation, but recently I have had repeated issues with GuideEnhancer where I lose all the season and episode information that has already been written to Argus. When I go into the log I always find an entry stating that:
Couldn't connect to Thetvdb.com to retrieve search results
the full message looks like:
TvdbLib.Exceptions.TvdbNotAvailableException: Couldn't connect to Thetvdb.com to retrieve search results for Lone Survivor, check your internet connection and the status of http://thetvdb.com
at TvdbLib.TvdbDownloader.DownloadSearchResults(String _name, TvdbLanguage _language)
at GuideEnricher.tvdb.TvDbService.SearchSeries(String name, TvdbLanguage language)
at GuideEnricher.tvdb.TvdbLibAccess.getSeriesId(String seriesName)
at GuideEnricher.Enricher.EnrichSeries(GuideEnricherSeries series)
at GuideEnricher.Enricher.EnrichUpcomingPrograms()
at GuideEnricher.Service.Enrich(Object state, ElapsedEventArgs eventArgs)
Doesa anyone have suggestions / thoughts?
If xmbc / kodi is installed the tvdb caching folder should be shared between xbmc and guide enhancer. Otherwise both use their own copy of exactly the same data. The current Caching structure needs a few teaks to be the same format as xmbc writes it's cache.
The Folder is located here %XbmcProfileRoot%\cache\scrapers\metadata.tvdb.com
This should be an opt-in feature that is not activated by default
With the update to the new version not any enrichment takes place on my system!
I see for any series (even those that are not programmed) the following (same) pattern:
2015-04-17 10:16:06 [175] DEBUG GuideEnricher.tvdb.TvdbLibAccess - Starting lookup for Grimm -
2015-04-17 10:16:06 [175] DEBUG GuideEnricher.EpisodeMatchMethods.MatchMethodBase - [Episode Title] Grimm - 04/28 10:10 PM does not have a "SubTitle"
2015-04-17 10:16:06 [175] DEBUG GuideEnricher.EpisodeMatchMethods.AbsoluteEpisodeNumberMatchMethod - Cannot use match method [Absolute Episode Number] Grimm does not have an episode number
2015-04-17 10:16:06 [175] DEBUG GuideEnricher.EpisodeMatchMethods.MatchMethodBase - [Remove common words] Grimm - 04/28 10:10 PM does not have a "SubTitle"
2015-04-17 10:16:06 [175] DEBUG GuideEnricher.EpisodeMatchMethods.MatchMethodBase - [Three or Four Digit Season Episode] Could not match Grimm -
2015-04-17 10:16:06 [175] DEBUG GuideEnricher.EpisodeMatchMethods.MatchMethodBase - [No Punctuation] Grimm - 04/28 10:10 PM does not have a "SubTitle"
2015-04-17 10:16:06 [175] DEBUG GuideEnricher.EpisodeMatchMethods.MatchMethodBase - [Season and Episode in Description] Could not match Grimm -
2015-04-17 10:16:06 [175] DEBUG GuideEnricher.Enricher - The first run for the series Grimm had unmatched episodes. Checking for online updates.
You can freely exchange the series names...
Greetz - Chris
PS: if others face this, too, we IMMEDIATELY need to inform in the forum thread and supply the former version - and for us development supporter the latest "patch" with case INsensitive search.
Current Guide Enricher seeks for the title (only).
It would be good, if it also seeks for AKA entries ("also known as").
Ex.: Broadcasted series title in German TV: "Sanctuary - Wächter der Kreaturen"
Series name under TheTVDB is simply "Sanctuary"
But an AKA "Sanctuary - Wächter der Kreaturen" is registered.
Would be perfect, if a seek for this AKA would also return a "successful".
Greetz - Chris
The ARGUS-TV GuideEnhancer (ATGE) fails with an exception to register Listener - Events.
From what I see is that GE service can't be stopped (and hangs), if the site is offline and (I assume) GE tries to fetch at the time of shutting down the service.
Probably also valid for the case, if the LAN is down.
It's best practices to put writeable application files into a %ProgramData% folder rather than the application installation folder.
Dear Chris, dear All
Using seriesMapping I found a minor issue (but may be tricky to find it):
If you use a seriesMap with an umlaut, it:
I think I tried it with that one:
- seriesMap schedulesDirectName="regex=Der Trödeltrupp*" tvdbComName="" ignore="true"
What I didn't try, was, how it would behave in a NON-regex expression like
- seriesMap schedulesDirectName="Der Trödeltrupp" tvdbComName="" ignore="true"
Greetz - Chris
The current folder is C:\tvdblibcache\71697e, that's a bad practice.
The folder should be in %ProgramData%\Guide Enricher\
Importance: very low
Dear All
When browsing through EPG, every now and then I find new series to map.
What if we would create within the Github Repo a sub-directory (and maybe include the file also in the installer) that collects an xml file as a copy & paste-template for "seriesMapping"?
We could easily collect our findings.
I would cluster it in at least two sections:
What u think? Chris would have just to add a file, to which we can commit, in the installer and drop a default note / referrer within the config file on top of the mapping section.
Everything els could be contributed by us through pull requests.
Greetz - Chris
We see thetvdb.com was offline the recent days.
This leads to a complete non-enhancement after import of new XMLTV, even though, information is cached.
Pls add a step, if thetvdb.com is offline, that GE uses the cached information.
Probably also valid for the case, if the LAN is down.
Importance: very low (doesn't happen often, hopefully)
Dear All, dear Chris
I encountered a season, that couldn't be dispatched, although mapped by id.
I found out, that the search (at least for mappings; probably for all searches?), must be case sensitive. I changed the mapping entry - and it worked.
As TV guide providers might be a bit sloppy, implementing a case-insensitive search may ameliorate the hit rate.
In my earlier programming days, I had developed a "normalization algorithms" for such searches, treating any kind of potential misspellings, umlauts, etc. Could be in a second step also an idea.
I'll upload the changed mapping entry to the repository for the time being.
Greetz - Chris
Any known issues when using this with WebGrab+?
The whole configuration aspect is done manually in the app.config file.
Possible scenarios
Dear Chris
While having the need to uninstall GE, I found two (minor; first one: more severe than second) issues in the uninstall procedure:
Greetz - Chris
Dear All
First a question - if you encountered this, too.
There's a kids series without description but a correct title. My scrabber adds (age information) and "()", if the description is empty.
Results in a description of, eg: "(ab 8 Jahren) ()"
Example is: Transformers prime - today at 9:25 on Nick/Comedy. Episode: Verstreut - S03E02
The season/episode information is correctly identified and added to the S/E information within Argus (shown in the show title). Whereas... the S/E information is not added to the description as in other shows (and configured).
Can anyone confirm before we call it "a bug"?
Greetz - Chris
I am using Guide Enricher (2.3.0.42695) with Argus 2.3RC. I am not sure if there is a pattern to this, but usually after running Argus / GuideEnricher for 6-8 weeks I start having issues, beginning with Argus crashing. After rebooting Argus works fine, but GuideEnricher is not. In the log I will typically see something like what you can see from below - it seems GE is not able to match a show, using all different methods, and then it crashes.
If I disable the show just before the error, in Argus, and restart GuideEnricher the error re-occurs after not being able to match a different show.
Could you give some ideas what I should be looking for that may cause this error?
Thanks,
Anders
2015-03-09 06:45:17 [5] DEBUG GuideEnricher.tvdb.TvdbLibAccess - SD-TvDb: Search for Madam Secretary return 1 results
2015-03-09 06:45:17 [5] DEBUG GuideEnricher.tvdb.TvdbLibAccess - SD-TvDb: series: Madam Secretary id: 281623
2015-03-09 06:45:17 [5] DEBUG GuideEnricher.Enricher - Beginning enrichment of episodes for series Madam Secretary
2015-03-09 06:45:17 [5] DEBUG GuideEnricher.tvdb.TvdbLibAccess - Starting lookup for Madam Secretary - Tamerlane
2015-03-09 06:45:17 [5] DEBUG GuideEnricher.EpisodeMatchMethods.MatchMethodBase - [Episode Title] Correctly matched Madam Secretary - Tamerlane as S01E16
2015-03-09 06:45:17 [5] DEBUG GuideEnricher.tvdb.TvdbLibAccess - SD-TvDb: Search for Once Upon a Time (2011) return 1 results
2015-03-09 06:45:17 [5] DEBUG GuideEnricher.tvdb.TvdbLibAccess - SD-TvDb: series: Once Upon a Time (2011) id: 248835
2015-03-09 06:45:17 [5] DEBUG GuideEnricher.Enricher - Beginning enrichment of episodes for series Once Upon a Time
2015-03-09 06:45:17 [5] DEBUG GuideEnricher.tvdb.TvdbLibAccess - Starting lookup for Once Upon a Time - Enter the Dragon
2015-03-09 06:45:17 [5] DEBUG GuideEnricher.EpisodeMatchMethods.MatchMethodBase - [Episode Title] Could not match Once Upon a Time - Enter the Dragon
2015-03-09 06:45:17 [5] DEBUG GuideEnricher.EpisodeMatchMethods.MatchMethodBase - [Original Air Date] Could not match Once Upon a Time - Enter the Dragon
2015-03-09 06:45:17 [5] DEBUG GuideEnricher.EpisodeMatchMethods.MatchMethodBase - [Three or Four Digit Season Episode] Could not match Once Upon a Time - Enter the Dragon
2015-03-09 06:45:17 [5] DEBUG GuideEnricher.EpisodeMatchMethods.MatchMethodBase - [No Punctuation] Could not match Once Upon a Time - Enter the Dragon
2015-03-09 06:45:17 [5] DEBUG GuideEnricher.EpisodeMatchMethods.MatchMethodBase - [Remove common words] Could not match Once Upon a Time - Enter the Dragon
2015-03-09 06:45:17 [5] ERROR GuideEnricher.Service - Error enriching
System.ArgumentNullException: Value cannot be null.
Parameter name: input
at System.Text.RegularExpressions.Regex.Match(String input)
at GuideEnricher.EpisodeMatchMethods.FirstSentenceInDescriptionMatchMethod.Match(GuideEnricherProgram enrichedGuideProgram, List`1 episodes)
at GuideEnricher.tvdb.TvdbLibAccess.EnrichProgram(GuideEnricherProgram existingProgram, TvdbSeries tvdbSeries)
at GuideEnricher.Enricher.EnrichProgramsInSeries(GuideEnricherSeries series, TvdbSeries OnlineSeries)
at GuideEnricher.Enricher.EnrichSeries(GuideEnricherSeries series)
at GuideEnricher.Enricher.EnrichUpcomingPrograms()
at GuideEnricher.Service.Enrich(Object state, ElapsedEventArgs eventArgs)
Could you at least add a description to sleepTimeInHours that this is actually minutes, not hours?
Or is it a small bug in the software?
And if this should remain minutes, select maybe a different "default" in the spread config, eg 720 (=12 hours)
Greetz - Chris
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.