jqandreu / plugin.video.tv3.cat

Kodi addon
GNU General Public License v2.0
23 stars 9 forks source link

problem with live channels #30

Open claudeha opened 2 years ago

claudeha commented 2 years ago

Hi, I'm using latest LibreELEC minimal OS for Kodi on rpi4, but had some problems with Live Channels in this plugin/addon for tv3cat (symptom: clicking live channels in the addon ui would just display an error in the top right saying to check log). Here is a log snippet:

2022-05-28 15:35:46.000 T:10478   DEBUG <general>: plugin.video.tv3.cat classe UI - run()  mode = ['directe']
2022-05-28 15:35:46.000 T:10478   DEBUG <general>: -----------------listDirecte--------------------
2022-05-28 15:35:46.413 T:10478   ERROR <general>: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                                    - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                                   Error Type: <class 'AttributeError'>
                                                   Error Contents: 'str' object has no attribute 'get'
                                                   Traceback (most recent call last):
                                                     File "/storage/.kodi/addons/plugin.video.tv3.cat/addon.py", line 32, in <module>
                                                       ui.run(mode, url)
                                                     File "/storage/.kodi/addons/plugin.video.tv3.cat/resources/lib/ui/UI.py", line 116, in run
                                                       lVideos = self.tv3.listDirecte()
                                                     File "/storage/.kodi/addons/plugin.video.tv3.cat/resources/lib/tv3cat/TV3cat.py", line 314, in listDirecte
                                                       nameChannel = c[i].get('ara_fem', {}).get('codi_canal', None)
                                                   AttributeError: 'str' object has no attribute 'get'
                                                   -->End of Python script error report<--

I edited plugin.video.tv3.cat/resources/lib/tv3cat/TV3cat.py to add try/except around line 314 and following, and then the error changed:

2022-05-28 15:43:37.483 T:10532   DEBUG <general>: -----------------listDirecte--------------------
2022-05-28 15:43:37.775 T:10532   ERROR <general>: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                                    - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                                   Error Type: <class 'UnboundLocalError'>
                                                   Error Contents: local variable 'infotv3' referenced before assignment
                                                   Traceback (most recent call last):
                                                     File "/storage/.kodi/addons/plugin.video.tv3.cat/addon.py", line 32, in <module>
                                                       ui.run(mode, url)
                                                     File "/storage/.kodi/addons/plugin.video.tv3.cat/resources/lib/ui/UI.py", line 116, in run
                                                       lVideos = self.tv3.listDirecte()
                                                     File "/storage/.kodi/addons/plugin.video.tv3.cat/resources/lib/tv3cat/TV3cat.py", line 346, in listDirecte
                                                       infolabelstv3['plot'] = infotv3
                                                   UnboundLocalError: local variable 'infotv3' referenced before assignment
                                                   -->End of Python script error report<--

so I just initialized like infotv3 = 'n/a' (and the other similar variables) before the blocks where they are set/used...

Here are all the changes I made that got live Catalan TV working for me:

$ diff -u TV3cat.py.orig TV3cat.py
--- TV3cat.py.orig  2022-05-28 15:50:13.127127849 +0100
+++ TV3cat.py   2022-05-28 15:50:13.099127586 +0100
@@ -311,6 +311,7 @@

                 i = 0
                 while i < 5:
+                  try:
                     nameChannel = c[i].get('ara_fem', {}).get('codi_canal', None)

                     if nameChannel == 'tv3':
@@ -325,14 +326,16 @@
                     if nameChannel == '324':
                         arafem324 = c[i].get('ara_fem', {}).get('titol_programa', None)
                         arafem324_sinop = c[i].get('ara_fem', {}).get('sinopsi', None)
-
-                    i = i + 1
+                  except AttributeError:
+                    pass
+                  i = i + 1

             infolabelstv3 = {}
             infolabels324 = {}
             infolabels33 = {}
             infolabelsesp3 = {}

+            infotv3 = 'n/a'
             if arafemtv3:
                 infolabelstv3['title'] = arafemtv3
                 infotv3 = '[B]' + arafemtv3 + '[/B]' + '[CR]'
@@ -343,6 +346,7 @@

             infolabelstv3['plot'] = infotv3

+            info33 = 'n/a'
             if arafem33:
                 infolabels33['title'] = arafem33
                 info33 = '[B]' + arafem33 + '[/B]' + '[CR]'
@@ -353,6 +357,7 @@

             infolabels33['plot'] = info33

+            infoesp3 = 'n/a'
             if arafemesp3:
                 infolabelsesp3['title'] = arafemesp3
                 infoesp3 = '[B]' + arafemesp3 + '[/B]' + '[CR]'
@@ -363,6 +368,7 @@

             infolabelsesp3['plot'] = infoesp3

+            info324 = 'n/a'
             if arafem324:
                 infolabels324['title'] = arafem324
                 info324 = '[B]' + arafem324 + '[/B]' + '[CR]'

Thanks very much for your work on this plugin/addon, it's really appreciated. If you would prefer, I can make a pull request with the above changes.

claudeha commented 2 years ago

This fix no longer works.

I think TV3 have changed their streaming system, now the web-based player accesses separate playlists of sound and video fragments (each about 6 seconds long, with slightly different start times) that need to be downloaded and multiplexed somehow.

I'm in the UK, testing the international broadcast streams.

mcr222 commented 1 month ago

Hey, from the new website, I made a first iteration. https://github.com/mcr222/plugin.video.3cat/releases/tag/v1.0.0

I have not done live channels though if you wanna collaborate on that.