diff --git a/gui/slick/interfaces/default/config_subtitles.tmpl b/gui/slick/interfaces/default/config_subtitles.tmpl index 145c847c2f837c177e0d5806d9c6162c609ca84e..75e4434aeedb6fb6faa813af3b5e3ceab0be80d1 100644 --- a/gui/slick/interfaces/default/config_subtitles.tmpl +++ b/gui/slick/interfaces/default/config_subtitles.tmpl @@ -18,7 +18,7 @@ \$(document).ready(function() { \$("#subtitles_languages").tokenInput( [ - <%=",\r\n".join("{id: \"" + lang.alpha3 + "\", name: \"" + lang.name + "\"}" for lang in subtitles.subtitleLanguageFilter())%> + <%=",\r\n".join("{id: \"" + lang.opensubtitles + "\", name: \"" + lang.name + "\"}" for lang in subtitles.subtitleLanguageFilter())%> ], { method: "POST", @@ -28,7 +28,7 @@ [ <%= - ",\r\n".join("{id: \"" + subtitles.fromietf(lang).alpha3 + "\", name: \"" + subtitles.fromietf(lang).name + "\"}" for lang in subtitles.wantedLanguages()) if subtitles.wantedLanguages() else '' + ",\r\n".join("{id: \"" + subtitles.fromietf(lang).opensubtitles + "\", name: \"" + subtitles.fromietf(lang).name + "\"}" for lang in subtitles.wantedLanguages()) if subtitles.wantedLanguages() else '' %> ] } diff --git a/gui/slick/interfaces/default/displayShow.tmpl b/gui/slick/interfaces/default/displayShow.tmpl index 3af81d411d1235f39e7f5744eae236b2cc549c77..27ae2c46ba94897b80771e4a040a3405af23a46c 100644 --- a/gui/slick/interfaces/default/displayShow.tmpl +++ b/gui/slick/interfaces/default/displayShow.tmpl @@ -284,7 +284,7 @@ </table> <table style="width:180px; float: right; vertical-align: middle; height: 100%;"> - #set $info_flag = $subtitles.fromietf($show.lang).alpha3 if $subtitles.isValidLanguage($show.lang) else 'unknown' + #set $info_flag = $subtitles.fromietf($show.lang).alpha3 <tr><td class="showLegend">Info Language:</td><td><img src="$sbRoot/images/flags/${info_flag}.png" width="16" height="11" alt="$show.lang" title="$show.lang" onError="this.onerror=null;this.src='$sbRoot/images/flags/unknown.png';"/></td></tr> #if $sickbeard.USE_SUBTITLES <tr><td class="showLegend">Subtitles: </td><td><img src="$sbRoot/images/#if $show.subtitles then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr> @@ -579,8 +579,8 @@ </td> <td class="col-subtitles" align="center"> #for $sub_lang in [$subtitles.fromietf(x) for x in $epResult["subtitles"].split(',') if $epResult["subtitles"]]: - #set $flag = $sub_lang.alpha3 if $hasattr($sub_lang, 'alpha3') and $sub_lang.alpha3 else $sub_lang.alpha2 if $hasattr($sub_lang, 'alpha2') and $sub_lang.alpha2 else 'unknown' - <img src="$sbRoot/images/flags/${flag}.png" width="16" height="11" alt="${sub_lang.name}" onError="this.onerror=null;this.src='$sbRoot/images/flags/unknown.png';" /> + #set $flag = $sub_lang.opensubtitles + <img src="$sbRoot/images/subtitles/flags/${flag}.png" width="16" height="11" alt="${sub_lang.name}" onError="this.onerror=null;this.src='$sbRoot/images/flags/unknown.png';" /> #end for </td> #set $curStatus, $curQuality = $Quality.splitCompositeStatus(int($epResult["status"])) diff --git a/gui/slick/interfaces/default/manage_subtitleMissed.tmpl b/gui/slick/interfaces/default/manage_subtitleMissed.tmpl index 38d061d6096697317125a4e6c39218d86e8d21a4..f5962e1db98d2a576aaa77fa37cc6eba1707eb09 100644 --- a/gui/slick/interfaces/default/manage_subtitleMissed.tmpl +++ b/gui/slick/interfaces/default/manage_subtitleMissed.tmpl @@ -30,7 +30,7 @@ Manage episodes without <select name="whichSubs" class="form-control form-control-inline input-sm"> <option value="all">All</option> #for $sub_lang in [$subtitles.fromietf(x) for x in $subtitles.wantedLanguages]: -<option value="$sub_lang.alpha3">$sub_lang.name</option> +<option value="$sub_lang.opensubtitles">$sub_lang.name</option> #end for </select> subtitles diff --git a/gui/slick/js/ajaxEpSubtitles.js b/gui/slick/js/ajaxEpSubtitles.js index c9e769b86564e574263aa8e60d139edcc68cd7a4..3514e7af2ca95bca629012dd5166a93be07e2594 100644 --- a/gui/slick/js/ajaxEpSubtitles.js +++ b/gui/slick/js/ajaxEpSubtitles.js @@ -14,9 +14,9 @@ $.each(subtitles,function(index, language){ if (language != "" && language != "und") { if (index != subtitles.length - 1) { - subtitles_td.append($("<img/>").attr({"src": sbRoot+"/images/flags/"+language+".png", "alt": language, "width": 16, "height": 11})); + subtitles_td.append($("<img/>").attr({"src": sbRoot+"/images/subtitles/flags/"+language+".png", "alt": language, "width": 16, "height": 11})); } else { - subtitles_td.append($("<img/>").attr({"src": sbRoot+"/images/flags/"+language+".png", "alt": language, "width": 16, "height": 11})); + subtitles_td.append($("<img/>").attr({"src": sbRoot+"/images/subtitles/flags/"+language+".png", "alt": language, "width": 16, "height": 11})); } } }); diff --git a/gui/slick/js/lib/jquery.tokeninput.js b/gui/slick/js/lib/jquery.tokeninput.js index 2afcc0f2c4ad5ded5747b8e86353e47904b456d0..bf309d79fd17d3638703f596c3cdcceb25189213 100644 --- a/gui/slick/js/lib/jquery.tokeninput.js +++ b/gui/slick/js/lib/jquery.tokeninput.js @@ -43,8 +43,8 @@ var DEFAULT_SETTINGS = { idPrefix: "token-input-", // Formatters - resultsFormatter: function(item){ return "<li><img src='"+sbRoot+"/images/flags/"+item["id"]+".png' /> " + item[this.propertyToSearch]+ "</li>" }, - tokenFormatter: function(item) { return "<li><img src='"+sbRoot+"/images/flags/"+item["id"]+".png' /> <p>" + item[this.propertyToSearch] + "</p></li>" }, + resultsFormatter: function(item){ return "<li><img src='"+sbRoot+"/images/subtitles/flags/"+item["id"]+".png' /> " + item[this.propertyToSearch]+ "</li>" }, + tokenFormatter: function(item) { return "<li><img src='"+sbRoot+"/images/subtitles/flags/"+item["id"]+".png' /> <p>" + item[this.propertyToSearch] + "</p></li>" }, flag: "flag", // Callbacks diff --git a/gui/slick/js/manageSubtitleMissed.js b/gui/slick/js/manageSubtitleMissed.js index 18d0844824c3cc8417d6f12b9f2897ac8e6f6c10..262ecbb282e38fbba962c0813ac97ca310d6ae03 100644 --- a/gui/slick/js/manageSubtitleMissed.js +++ b/gui/slick/js/manageSubtitleMissed.js @@ -15,7 +15,7 @@ $(document).ready(function() { subtitles = subtitles.split(',') for (i in subtitles) { - row += ' <img src="/images/flags/'+subtitles[i]+'.png" width="16" height="11" alt="'+subtitles[i]+'" /> '; + row += ' <img src="/images/subtitles/flags/'+subtitles[i]+'.png" width="16" height="11" alt="'+subtitles[i]+'" /> '; } row += ' </td>'; row += ' </tr>' @@ -69,4 +69,4 @@ $(document).ready(function() { }); }); -}); \ No newline at end of file +}); diff --git a/sickbeard/history.py b/sickbeard/history.py index 3f4f042cbbdbb88dd477ac57eefeec10444eb47d..1889af2fdcbf16e2d242440a986ecd6af7c03d07 100644 --- a/sickbeard/history.py +++ b/sickbeard/history.py @@ -77,7 +77,7 @@ def logDownload(episode, filename, new_ep_quality, release_group=None, version=- def logSubtitle(showid, season, episode, status, subtitleResult): - resource = subtitleResult.language.alpha3 + resource = subtitleResult.language.opensubtitles provider = subtitleResult.provider_name status, quality = Quality.splitCompositeStatus(status) diff --git a/sickbeard/subtitles.py b/sickbeard/subtitles.py index 183af22ca50cb6082ea60514a4b295f8762d50f5..8532b57b967adae3c7dbdeb7ad34806f17d5cc5c 100644 --- a/sickbeard/subtitles.py +++ b/sickbeard/subtitles.py @@ -67,7 +67,7 @@ def getEnabledServiceList(): #Hack around this for now. def fromietf(language): - return babelfish.Language.fromietf(language if language not in 'pb' else 'pt-BR') + return babelfish.Language.fromopensubtitles(language) def isValidLanguage(language): try: @@ -81,7 +81,7 @@ def getLanguageName(language): # TODO: Filter here for non-languages in sickbeard.SUBTITLES_LANGUAGES def wantedLanguages(sqlLike = False): - wantedLanguages = sorted(sickbeard.SUBTITLES_LANGUAGES) + wantedLanguages = [x for x in sorted(sickbeard.SUBTITLES_LANGUAGES) if x in babelfish.language_converters['opensubtitles'].codes] if sqlLike: return '%' + ','.join(wantedLanguages) + '%' return wantedLanguages @@ -92,8 +92,10 @@ def subtitlesLanguages(video_path): languages = subliminal.video.scan_subtitle_languages(video_path) for language in languages: - if hasattr(language, 'alpha3') and language.alpha3: - resultList.append(language.alpha3) + if hasattr(language, 'opensubtitles') and language.opensubtitles: + resultList.append(language.opensubtitles) + elif hasattr(language, 'alpha3') and language.alpha3: + resultList.append(language.alpha3) elif hasattr(language, 'alpha2') and language.alpha2: resultList.append(language.alpha2) @@ -101,11 +103,14 @@ def subtitlesLanguages(video_path): if len(resultList) is 1 and len(defaultLang) is 1: return defaultLang + if ('pob' in defaultLang or 'pb' in defaultLang) and ('pt' not in defaultLang and 'por' not in defaultLang): + resultList = [x if not x in ['por', 'pt'] else u'pob' for x in resultList] + return sorted(resultList) # TODO: Return only languages our providers allow def subtitleLanguageFilter(): - return [language for language in babelfish.LANGUAGE_MATRIX if hasattr(language, 'alpha2') and language.alpha2] + return [babelfish.Language.fromopensubtitles(language) for language in babelfish.language_converters['opensubtitles'].codes if len(language) == 3] class SubtitlesFinder(): """ diff --git a/sickbeard/tv.py b/sickbeard/tv.py index b2d33fb3a8586360a985402bf3ded8ec6d5f4181..a5230ca80e6e53b7417a69b4aa3a05ba597026b7 100644 --- a/sickbeard/tv.py +++ b/sickbeard/tv.py @@ -1517,7 +1517,7 @@ class TVEpisode(object): if sickbeard.SUBTITLES_HISTORY: for video, subs in foundSubs.iteritems(): for sub in subs: - logger.log(u'history.logSubtitle %s, %s' % (sub.provider_name, sub.language.alpha3), logger.DEBUG) + logger.log(u'history.logSubtitle %s, %s' % (sub.provider_name, sub.language.opensubtitles), logger.DEBUG) history.logSubtitle(self.show.indexerid, self.season, self.episode, self.status, sub) return self.subtitles