Giter Site home page Giter Site logo

chrisrichner / argus-tv-guideenhancer Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 3.0 4.81 MB

Electronic Program Guide Enhancer for Argus TV

Home Page: https://code.google.com/p/ftr-guide-enhancer/

License: Apache License 2.0

C# 99.72% Batchfile 0.28%
argus-tv-guideenhancer epg guide-enricher kodi webgrab

argus-tv-guideenhancer's People

Contributors

chrisrichner avatar christoph21x avatar dependabot[bot] avatar malyngo avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

argus-tv-guideenhancer's Issues

Capaciry limit of seriesMap?

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:
zwischenablage01

The Windows Protocol / Application shows:
zwischenablage02
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"

Installation issue

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:







































<!--
If you wish to overide logging level for specific class or namespace you can do so like the following


  or
  <logger name="GuideEnricher.EpisodeMatchMethods">
    <level value="error" />
  </logger>
-->

Don't let the whole update fail when one episode doesn't match and faces an error

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)

Renaming "Series name"

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

  • Special Unit 2 (TheTVDB entry, no AKA's)
  • Special Unit II
  • Special Unit 2 - Die Monsterjäger
  • Special Unit II - Die Monsterjäger
  • Die Monsterjäger

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:

  • using Argus directory naming would end up in a definable and COMMON sub-directory for such entries
  • additionally indeed for ANY entry: users could "set default" ("rename") the subdirectory for certain series.
  • Example for above mentioned series:
    (renameSeries schedulesDirectName="regex=Special Unit .*"seriesName="Special Unit 2" /)
  • it just should be ensured that the renaming run/process is performed BEFORE the actual search within TheTVDB - we then could rename some encryptic namings simply as the official series name - and would need no further mapping to ID for them

Negative side-effects:

  • People have to be aware that, through re-naming of series, potentially the recording schedules could miss the recordings --> recording schedules must be set up in a (more) flexible way, ensuring, that raw (source) series names AND resulting (target) series names are covered within the schedule.
  • Example for above mentioned series within Argus: Name | Starts with | "Special Unit " OR "Die Monsterjäger"

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

Timeout when failing to reach thetvdb.com

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?

Xbmc / Kodi sharing www.tvdb.com caching data with Guide Enhancer

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

Severe: no enrichment with 2.3.3. release anymore

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.

Impr. Sugg.: also seek for AKA entries

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

GE service can't be stopped if site offline

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.

Service won't start when seriesMap uses umlauts

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:

  • won't process it and launch an error (let's say: kind of "correct", but not "good")
  • if you end the service or restart it, the service won't start and launches an error message "access denied"

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

Proposal: common Mapping Repository (Github file)

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:

  • mappings
  • ignores
    which collect recommendations &/ series mappings to (probably) distinct IDs.

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

Enhance using cache if site is offline

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)

Implement case INsensitive search (in at least: mapping)

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

Configuration Manager

The whole configuration aspect is done manually in the app.config file.

Possible scenarios

  • web access
  • wpf ui
  • Windows 8.1 Store App
  • Mobile App ( IOS, Android, WP 8.1)

Minor: Uninstall - 2 issues

Dear Chris

While having the need to uninstall GE, I found two (minor; first one: more severe than second) issues in the uninstall procedure:

  1. Uninstall from Control Panel / Programs doesn't work at all, IF you're not a user with administrative account. Starting the uninstall from control panel/programs as a "normal user" ends up with the error:
    zwischenablage01
    I wasn't asked to log into Admin account before (as usual) - this is simply a missing step.
    (The uninstall could nevertheless be performed by using the installation msi file selecting "Remove")
  2. The directory isn't cleaned up properly - many left-behinds. GE should try to clean up everything, including removal of the directory. My directory after uninstall:
    zwischenablage02
    Most critical is undoubtedly the leftover *.dll files

Greetz - Chris

SxxEyy not added to description if empty?

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

Error causes Guide Enricher to stop

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)

sleepTimeInHours = Minutes

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.