Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions addons.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,22 @@
</extension>
</addon>

<addon id="service.subtitles.betaseries" name="Betaseries" version="1.0.8" provider-name="skylex">
<addon id="service.subtitles.betaseries" name="Betaseries" version="1.1.0" provider-name="skylex, strnk">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.simplejson" version="2.0.10" />
<import addon="xbmc.python" version="3.0.0"/>
</requires>
<extension point="xbmc.subtitle.module" library="service.py" />
<extension point="xbmc.addon.metadata">
<platform>all</platform>
<license> GPL-2.0-only</license>
<summary lang="en">BetaSeries subtitles service</summary>
<summary lang="fr">Service de sous-titres BetaSeries</summary>
<description lang="en">Search and download subtitles from BetaSeries.com</description>
<description lang="fr">Rechercher et télécharger des sous-titres depuis BetaSeries.com</description>
<news>
v1.1.0 (2021 09 12)
- refactoring for Kodi 19 Matrix
</news>
</extension>
</addon>

Expand Down
2 changes: 1 addition & 1 deletion addons.xml.md5
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8e6bc84008dada18945fb8ffa79178a0 addons.xml
76c4004e0bc0f688d132ededd3c712b1 addons.xml
10 changes: 7 additions & 3 deletions service.subtitles.betaseries/addon.xml
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="service.subtitles.betaseries" name="Betaseries" version="1.0.8" provider-name="skylex">
<addon id="service.subtitles.betaseries" name="Betaseries" version="1.1.0" provider-name="skylex, strnk">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.simplejson" version="2.0.10" />
<import addon="xbmc.python" version="3.0.0"/>
</requires>
<extension point="xbmc.subtitle.module" library="service.py" />
<extension point="xbmc.addon.metadata">
<platform>all</platform>
<license> GPL-2.0-only</license>
<summary lang="en">BetaSeries subtitles service</summary>
<summary lang="fr">Service de sous-titres BetaSeries</summary>
<description lang="en">Search and download subtitles from BetaSeries.com</description>
<description lang="fr">Rechercher et télécharger des sous-titres depuis BetaSeries.com</description>
<news>
v1.1.0 (2021 09 12)
- refactoring for Kodi 19 Matrix
</news>
</extension>
</addon>
42 changes: 20 additions & 22 deletions service.subtitles.betaseries/service.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
# -*- coding: utf-8 -*-

import xbmc, xbmcaddon, xbmcgui, xbmcplugin, xbmcvfs
import os, sys, re, string, urllib, urllib2, socket, unicodedata, shutil, time, platform
import simplejson as json
import os, sys, re, string, socket, unicodedata, shutil, time, platform, json
import urllib.parse, urllib.error, urllib.request

def normalize_string(txt):
return unicodedata.normalize('NFKD', txt)

__addon__ = xbmcaddon.Addon()
__addonid__ = __addon__.getAddonInfo('id')
Expand All @@ -11,8 +14,8 @@
__icon__ = __addon__.getAddonInfo('icon')
__language__ = __addon__.getLocalizedString
__platform__ = platform.system() + " " + platform.release()
__profile__ = xbmc.translatePath( __addon__.getAddonInfo('profile') ).decode("utf-8")
__temp__ = xbmc.translatePath( os.path.join( __profile__, 'temp') ).decode("utf-8")
__profile__ = xbmc.translatePath( normalize_string(__addon__.getAddonInfo('profile') ))
__temp__ = xbmc.translatePath( normalize_string(os.path.join( __profile__, 'temp') ))

sys.path.append( os.path.join( __profile__, "lib") )

Expand Down Expand Up @@ -52,9 +55,6 @@ def normalize_lang(lang, lang_from, lang_to):
# return lang if not found
return lang

def normalize_string(txt):
return unicodedata.normalize('NFKD', txt).encode('ascii', 'ignore')

def log(txt, level=xbmc.LOGDEBUG):
message = u'%s: %s' % (__addonid__, txt)
xbmc.log(msg=message, level=level)
Expand Down Expand Up @@ -98,17 +98,17 @@ def get_url(url, referer=self_host):
'Cache-Control': 'no-store, no-cache, must-revalidate',
'Pragma': 'no-cache',
'Referer': referer}
request = urllib2.Request(url, headers=req_headers)
opener = urllib2.build_opener()
request = urllib.request.Request(url, headers=req_headers)
opener = urllib.request.build_opener()
try:
response = opener.open(request)
contents = response.read()
return contents
except urllib2.HTTPError, e:
except urllib.error.HTTPError as e:
log('HTTPError = ' + str(e.code), xbmc.LOGERROR)
if e.code == 400:
return False
except urllib2.URLError, e:
except urllib.error.URLError as e:
log('URLError = ' + str(e.reason), xbmc.LOGERROR)
except Exception:
import traceback
Expand Down Expand Up @@ -202,7 +202,7 @@ def search_subtitles(search):
# configure socket
socket.setdefaulttimeout(10)
# define default url to get betaseries episode id from filename
episodeurl = "%s/episodes/scraper?file=%s&key=%s&v=%s" % (self_host, urllib.quote(filename), self_apikey, self_apiver)
episodeurl = "%s/episodes/scraper?file=%s&key=%s&v=%s" % (self_host, urllib.parse.quote(filename), self_apikey, self_apiver)
# check video type
if search['mode'] == "tvshow":
# get playerid
Expand Down Expand Up @@ -250,7 +250,7 @@ def search_subtitles(search):
subfile = normalize_string(subtitle["file"])
log("after subfile = %s" % (subfile))
# get file extension
ext = string.split(subfile,'.')[-1]
ext = subfile.split('.')[-1]
# get season number from data
season = int(subtitle["episode"]["season"])
log("after season = %s" % (season))
Expand Down Expand Up @@ -388,15 +388,13 @@ def search_subtitles(search):
# for each subtitle
for item in subtitles:
# xbmc list item format
listitem = xbmcgui.ListItem(label=item["lang"],
label2=item["filename"],
iconImage=str(item["note"]),
thumbnailImage=item["lang2"])
listitem = xbmcgui.ListItem(label=item["lang"], label2=item["filename"])
listitem.setArt({ 'icon': str(item["note"]), 'thumb': item["lang2"]})
# setting sync / CC tag
listitem.setProperty("sync", 'true' if item["sync"] else 'false')
listitem.setProperty("hearing_imp", 'true' if item["cc"] else 'false')
# adding item to GUI list
url = "plugin://%s/?action=download&link=%s&ext=%s&filename=%s" % (__addonid__, item["link"], item["ext"], urllib.quote(item["filename"]))
url = "plugin://%s/?action=download&link=%s&ext=%s&filename=%s" % (__addonid__, item["link"], item["ext"], urllib.parse.quote(item["filename"]))
xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=url,listitem=listitem,isFolder=False)
else:
if self_notify:
Expand All @@ -422,15 +420,15 @@ def search_subtitles(search):
# called when user is searching for subtitles
if params['action'] == 'search':
item = {}
item['tvshow'] = xbmc.getInfoLabel("VideoPlayer.TVshowtitle").decode("utf-8")
item['tvshow'] = normalize_string(xbmc.getInfoLabel("VideoPlayer.TVshowtitle"))
item['year'] = xbmc.getInfoLabel("VideoPlayer.Year")
item['season'] = xbmc.getInfoLabel("VideoPlayer.Season")
item['episode'] = xbmc.getInfoLabel("VideoPlayer.Episode")
item['path'] = urllib.unquote(xbmc.Player().getPlayingFile().decode('utf-8'))
item['path'] = urllib.parse.unquote(normalize_string(xbmc.Player().getPlayingFile()))
item['uilang'] = xbmc.getLanguage()
item['langs'] = []
# get user preferred languages for subtitles
for lang in urllib.unquote(params['languages']).decode('utf-8').split(","):
for lang in urllib.parse.unquote(normalize_string(params['languages'])).split(","):
item['langs'].append(xbmc.convertLanguage(lang, xbmc.ISO_639_1))
# remove rar:// or stack://
if ( item['path'].find("rar://") > -1 ):
Expand All @@ -450,7 +448,7 @@ def search_subtitles(search):
# called when user clicks on a subtitle
elif params['action'] == 'download':
# download link
sub = download_subtitle(params["link"], params["ext"], urllib.unquote(params["filename"]), self_host)
sub = download_subtitle(params["link"], params["ext"], urllib.parse.unquote(params["filename"]), self_host)
if sub:
# xbmc handles moving and using the subtitle
listitem = xbmcgui.ListItem(label=sub)
Expand Down
Binary file not shown.