Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[service.languagepreferencemanager] 1.0.2 #2536

Merged
merged 1 commit into from
Nov 19, 2023
Merged
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
4 changes: 3 additions & 1 deletion service.languagepreferencemanager/addon.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<addon
id="service.languagepreferencemanager"
name="Language Preference Manager"
version="1.0.1"
version="1.0.2"
provider-name="ace20022/scott967/rockrider69"
>
<requires>
Expand All @@ -24,6 +24,8 @@
0.1.7BETA : New Keywords Blacklist to ignore chosen subtitles tracks based on name content.
1.0.0 : Mandatory clean-up to propose as candidate version for Kodi.tv addons repository.
1.0.1 : Initial version for main Kodi.tv addons repository
1.0.2 : Fix 10sec latency on subs display and possible few lines lost - at video start or when switching audio.
Forced sub tracks : check also subtitle field "isforced" in case field "name" is empty or misspelled.

</news>
<assets>
Expand Down
5 changes: 5 additions & 0 deletions service.languagepreferencemanager/changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
--- Version 1.0.2

- Fix 10sec latency on subs display and possible few lines lost - at video start or when switching audio.
- Forced sub tracks : check also subtitle field "isforced" in case field "name" is empty or misspelled.

--- Version 1.0.1

- Initial version for main Kodi.tv addons repository
Expand Down
23 changes: 18 additions & 5 deletions service.languagepreferencemanager/resources/lib/prefutils.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,14 @@ def evalPrefs(self):
log(LOG_DEBUG, 'Subtitle: enabling subs' )
self.showSubtitles(True)

# Workaround to an old Kodi bug creating 10-15 sec latency when activating a subtitle track.
# Force very short rewind to avoid 10-15sec delay and first few subtitles lines potentially lost
# but if we are very close to beginning, then restart from time 0
if (self.getTime() <= 10):
self.seekTime(0)
else:
self.seekTime(self.getTime()-1)

def evalFilenamePrefs(self):
log(LOG_DEBUG, 'Evaluating filename preferences' )
audio = -1
Expand Down Expand Up @@ -225,7 +233,7 @@ def evalSubPrefs(self, sub_prefs):
continue
if (self.selected_sub and
'language' in self.selected_sub and
((code == self.selected_sub['language'] or name == self.selected_sub['language']) and self.testForcedFlag(forced, self.selected_sub['name']))):
((code == self.selected_sub['language'] or name == self.selected_sub['language']) and self.testForcedFlag(forced, self.selected_sub['name'], self.selected_sub['isforced']))):
log(LOG_INFO, 'Selected subtitle language matches preference {0} ({1})'.format(i, name) )
return -1
else:
Expand All @@ -236,7 +244,7 @@ def evalSubPrefs(self, sub_prefs):
if (settings.ignore_signs_on and self.isSignsSub(sub['name'])):
log(LOG_INFO,'SubPrefs : ignore_signs toggle is on and one such subtitle track is found. Skipping it.')
continue
if ((code == sub['language'] or name == sub['language']) and self.testForcedFlag(forced, sub['name'])):
if ((code == sub['language'] or name == sub['language']) and self.testForcedFlag(forced, sub['name'], sub['isforced'])):
log(LOG_INFO, 'Subtitle language of subtitle {0} matches preference {1} ({2})'.format((sub['index']+1), i, name) )
return sub['index']
log(LOG_INFO, 'Subtitle: preference {0} ({1}:{2}) not available'.format(i, name, code) )
Expand Down Expand Up @@ -278,7 +286,7 @@ def evalCondSubPrefs(self, condsub_prefs):
log(LOG_DEBUG, 'Looping subtitles...')
if ((audio_code == sub['language']) or (audio_name == sub['language'])):
log(LOG_DEBUG, 'One potential match found...')
if (self.testForcedFlag(forced, sub['name'])):
if (self.testForcedFlag(forced, sub['name'], sub['isforced'])):
log(LOG_DEBUG, 'One forced match found...')
log(LOG_INFO, 'Language of subtitle {0} matches audio preference {1} ({2}:{3}) with forced overriding rule {4}'.format((sub['index']+1), i, audio_name, sub_name, forced) )
return sub['index']
Expand All @@ -293,7 +301,7 @@ def evalCondSubPrefs(self, condsub_prefs):
log(LOG_INFO,'CondSubs : ignore_signs toggle is on and one such subtitle track is found. Skipping it.')
continue
if ((sub_code == sub['language']) or (sub_name == sub['language'])):
if (self.testForcedFlag(forced, sub['name'])):
if (self.testForcedFlag(forced, sub['name'], sub['isforced'])):
log(LOG_INFO, 'Language of subtitle {0} matches conditional preference {1} ({2}:{3}) forced {4}'.format((sub['index']+1), i, audio_name, sub_name, forced) )
return sub['index']
log(LOG_INFO, 'Conditional subtitle: no match found for preference {0} ({1}:{2})'.format(i, audio_name, sub_name) )
Expand All @@ -305,10 +313,15 @@ def isSignsSub(self, subName):
matches = ['signs']
return any(x in test for x in matches)

def testForcedFlag(self, forced, subName):
def testForcedFlag(self, forced, subName, subForcedTag):
test = subName.lower()
matches = ['forced', 'forcés']
found = any(x in test for x in matches)
# Only when looking for forced subs :
# in case the sub name is plain empty or not well documented,
# check also the sub isforced tag and consider it a match if set
if (forced and not found and subForcedTag):
found = True
return ((forced == 'false') and not found) or ((forced == 'true') and found)

def isExternalSub(self, subName):
Expand Down
Loading