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

Soundtrack Language Support + Newzbin provider fixes #226

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 5 additions & 1 deletion .gitignore
Expand Up @@ -30,4 +30,8 @@ desktop.ini
ehthumbs.db
Thumbs.db
.directory
*~
*~
/cache
/Logs
/.settings
/.pydevproject
Empty file modified SickBeard.py 100755 → 100644
Empty file.
Empty file modified autoProcessTV/hellaToSickBeard.py 100755 → 100644
Empty file.
Empty file modified autoProcessTV/sabToSickBeard.py 100755 → 100644
Empty file.
Empty file modified data/images/notifiers/synoindex.gif 100755 → 100644
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion data/interfaces/default/config.tmpl
Expand Up @@ -19,7 +19,7 @@
<tr><td class="infoTableHeader">Python Version: </td><td class="infoTableCell">$sys.version[:120]</td></tr>
<tr class="infoTableSeperator"><td class="infoTableHeader">Homepage </td><td class="infoTableCell"><a href="http://www.sickbeard.com/">http://www.sickbeard.com/</a></td></tr>
<tr><td class="infoTableHeader">Forums </td><td class="infoTableCell"><a href="http://sickbeard.com/forums/">http://sickbeard.com/forums/</a></td></tr>
<tr><td class="infoTableHeader">Source </td><td class="infoTableCell"><a href="https://github.com/midgetspy/Sick-Beard/">https://github.com/midgetspy/Sick-Beard/</a></td></tr>
<tr><td class="infoTableHeader">Source </td><td class="infoTableCell"><a href="https://github.com/($sickbeard.version.SICKBEARD_OWNER)/($sickbeard.version.SICKBEARD_PROJECT)/">https://github.com/($sickbeard.version.SICKBEARD_OWNER)/($sickbeard.version.SICKBEARD_PROJECT)/</a></td></tr>
<tr><td class="infoTableHeader">Bug Tracker &amp;<br/> Windows Builds </td><td class="infoTableCell"><a href="http://code.google.com/p/sickbeard/">http://code.google.com/p/sickbeard/</a></td></tr>
<tr><td class="infoTableHeader">Internet Relay Chat </td><td class="infoTableCell"><a href="irc://irc.freenode.net/#sickbeard"><i>#sickbeard</i> on <i>irc.freenode.net</i></a></td></tr>
</table>
Expand Down
Empty file modified data/interfaces/default/config_notifications.tmpl 100755 → 100644
Empty file.
2 changes: 2 additions & 0 deletions data/interfaces/default/displayShow.tmpl
Expand Up @@ -84,6 +84,8 @@ replace with: <b><%=", ".join([Quality.qualityStrings[x] for x in bestQualities]
#end if
</td></tr>
<tr><td class="showLegend">Language:</td><td>$show.lang</td></tr>
<tr><td class="showLegend">Soundtrack:</td><td>$show.soundtrack_lang</td></tr>
<tr><td class="showLegend">Custom Search Names:</td><td>$show.custom_search_names</td></tr>
<tr><td class="showLegend">Season Folders: </td><td><img src="$sbRoot/images/#if $show.seasonfolders == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
<tr><td class="showLegend">Active: </td><td><img src="$sbRoot/images/#if int($show.paused) == 0 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
<tr><td class="showLegend">Air-by-Date: </td><td><img src="$sbRoot/images/#if int($show.air_by_date) == 1 then "yes16.png\" alt=\"Y" else "no16.png\" alt=\"N"#" width="16" height="16" /></td></tr>
Expand Down
40 changes: 29 additions & 11 deletions data/interfaces/default/editShow.tmpl
Expand Up @@ -14,28 +14,41 @@
\$(document).ready(function(){

\$.getJSON('$sbRoot/home/addShows/getTVDBLanguages', {}, function(data){
var resultStr = '';

var tvdbLangSelectHtml = '';
var soundtrackLangSelectHtml = '';
if (data.results.length == 0) {
resultStr = '<option value="$show.lang" selected="selected">$show.lang</option>';
tvdbLangSelectHtml = '<option value="$show.lang" selected="selected">$show.lang</option>';
soundtrackLangSelectHtml = '<option value="$show.lang" selected="selected">$show.lang</option>';
} else {
var current_lang_added = false;
\$.each(data.results, function(index, obj){
if (obj == "$show.lang") {
selected = ' selected="selected"';
tvdbLangSelect = ' selected="selected"';
current_lang_added = true;
} else {
tvdbLangSelect = '';
}

if (obj == "$show.soundtrack_lang") {
soundtrackLangSelected = ' selected="selected"';
current_lang_added = true;
} else {
soundtrackLangSelected = '';
}
else
selected = '';

resultStr += '<option value="' + obj + '"' + selected + '>' + obj + '</option>';
tvdbLangSelectHtml += '<option value="' + obj + '"' + tvdbLangSelect + '>' + obj + '</option>';
soundtrackLangSelectHtml += '<option value="' + obj + '"' + soundtrackLangSelected + '>' + obj + '</option>';
});
if (!current_lang_added)
resultStr += '<option value="$show.lang" selected="selected">$show.lang</option>';
if (!current_lang_added) {
tvdbLangSelectHtml += '<option value="$show.lang" selected="selected">$show.lang</option>';
soundtrackLangSelectHtml = '<option value="$show.soundtrack_lang" selected="selected">$show.soundtrack_lang</option>';
}
}
\$('#tvdbLangSelect').html(resultStr)
\$('#tvdbLangSelect').html(tvdbLangSelectHtml);
\$('#soundtrackLangSelect').html(soundtrackLangSelectHtml);

\$('#tvdbLangSelect').change(function() { searchTvdb() });
\$('#soundtrackLangSelect').change(function() { searchTvdb() });
});

});
Expand All @@ -56,9 +69,14 @@ Quality:
<br />
Language: <select name="tvdbLang" id="tvdbLangSelect"></select><br />
Note: This will only affect the language of the retrieved metadata file contents and episode filenames.<br />
This <b>DOES NOT</b> allow Sick Beard to download non-english TV episodes!<br />
<br />
Soundtrack: <select name="soundtrackLang" id="soundtrackLangSelect"></select><br />
<br />

Custom Search Names: <input type="text" name="customSearchNames" id="customSearchNames" value="$show.custom_search_names" size="50" /><br />
Note: Custom names used to find show. Define some custom names if show can't be found. Custom names should be separated by ",". Keep empty to use default show name (based on metadata language)<br />
<br />

Use Season Folders: <input type="checkbox" name="seasonfolders" #if $show.seasonfolders == 1 then "checked=\"checked\"" else ""# /><br /><br />
Paused: <input type="checkbox" name="paused" #if $show.paused == 1 then "checked=\"checked\"" else ""# /><br /><br />

Expand Down
Empty file modified init.fedora 100755 → 100644
Empty file.
Empty file modified init.freebsd 100755 → 100644
Empty file.
Empty file modified init.ubuntu 100755 → 100644
Empty file.
7 changes: 7 additions & 0 deletions lib/hachoir_core/iso639.py
Expand Up @@ -554,5 +554,12 @@
for line in _ISO639:
for key in line[1].split("/"):
ISO639_2[key] = line[0]

ISO639_2 = {}

ISO639_1 = {}
for line in _ISO639:
if line[2]:
ISO639_1[line[2]] = line[0]
del _ISO639

Empty file modified lib/pythontwitter/__init__.py 100755 → 100644
Empty file.
4 changes: 2 additions & 2 deletions sickbeard/__init__.py 100755 → 100644
Expand Up @@ -126,7 +126,7 @@

TVDB_API_KEY = '9DAF49C96CBF8DAC'
TVDB_BASE_URL = None
TVDB_API_PARMS = {}
TVDB_API_PARMS = {"search_all_languages": True} # Enable search in any language

USE_NZBS = None
USE_TORRENTS = None
Expand Down Expand Up @@ -248,7 +248,7 @@

GIT_PATH = None

IGNORE_WORDS = "german,french,core2hd,dutch,swedish"
IGNORE_WORDS = "core2hd"

__INITIALIZED__ = False

Expand Down
27 changes: 27 additions & 0 deletions sickbeard/common.py
Expand Up @@ -22,6 +22,8 @@

from sickbeard import version

from lib.hachoir_core.iso639 import ISO639_1

USER_AGENT = 'Sick Beard/alpha2-'+version.SICKBEARD_VERSION.replace(' ','-')+' ('+platform.system()+' '+platform.release()+')'

mediaExtensions = ['avi', 'mkv', 'mpg', 'mpeg', 'wmv',
Expand Down Expand Up @@ -241,3 +243,28 @@ class Overview:
'USA': 'US'
}

class Language:
languages = dict(ISO639_1)

@staticmethod
def nameLanguages(name):
name = os.path.basename(name)

ret = []

# if we have our exact text then assume we put it there
for lang in Language.languages.itervalues():
regex = '\W'+lang.replace(' ','\W')+'\W'
regex_match = re.search(regex, name, re.I)
if regex_match:
ret.append(lang)

if not ret:
# No language found. Assuming English.
ret.append(Language.languages["en"])

return ret




16 changes: 15 additions & 1 deletion sickbeard/databases/mainDB.py
Expand Up @@ -322,8 +322,22 @@ def test(self):

def execute(self):
self.addColumn("tv_shows", "lang", "TEXT", "en")

class AddSoundtrackLang (AddLang):
def test(self):
return self.hasColumn("tv_shows", "soundtrack_lang")

def execute(self):
self.addColumn("tv_shows", "soundtrack_lang", "TEXT", "")

class AddCustomSearchNames (AddSoundtrackLang):
def test(self):
return self.hasColumn("tv_shows", "custom_search_names")

def execute(self):
self.addColumn("tv_shows", "custom_search_names", "TEXT", "")

class PopulateRootDirs (AddLang):
class PopulateRootDirs (AddCustomSearchNames):
def test(self):
return self.checkDBVersion() >= 7

Expand Down
11 changes: 10 additions & 1 deletion sickbeard/exceptions.py
Expand Up @@ -17,6 +17,7 @@
# along with Sick Beard. If not, see <http://www.gnu.org/licenses/>.

from sickbeard.encodingKludge import fixStupidEncodings
import traceback

def ex(e):
"""
Expand All @@ -37,7 +38,15 @@ def ex(e):
e_message = ""

return e_message


def log(logger, exc_info, level, message = None):
if message:
logger.log(message + " (" + str(exc_info[1]) + ")", level)
exc = traceback.format_exception(*exc_info);
tbStr = ""
for l in exc:
tbStr += l
logger.log(tbStr, level)

class SickBeardException(Exception):
"Generic SickBeard Exception - should never be thrown, only subclassed"
Expand Down
Empty file modified sickbeard/notifiers/__init__.py 100755 → 100644
Empty file.
Empty file modified sickbeard/notifiers/synoindex.py 100755 → 100644
Empty file.
Empty file modified sickbeard/postProcessor.py 100755 → 100644
Empty file.
14 changes: 11 additions & 3 deletions sickbeard/providers/generic.py
Expand Up @@ -28,7 +28,7 @@

from sickbeard import helpers, classes, logger, db

from sickbeard.common import Quality, MULTI_EP_RESULT, SEASON_RESULT
from sickbeard.common import Quality, Language, MULTI_EP_RESULT, SEASON_RESULT
from sickbeard import tvcache
from sickbeard import encodingKludge as ek
from sickbeard.exceptions import ex
Expand Down Expand Up @@ -183,6 +183,11 @@ def getQuality(self, item):
title = item.findtext('title')
quality = Quality.nameQuality(title)
return quality

def getLanguages(self, item):
title = item.findtext('title')
languages = Language.nameLanguages(title)
return languages

def _doSearch(self):
return []
Expand Down Expand Up @@ -243,8 +248,9 @@ def findEpisode (self, episode, manualSearch=False):
continue

quality = self.getQuality(item)
languages = self.getLanguages(item)

if not episode.show.wantEpisode(episode.season, episode.episode, quality, manualSearch):
if not episode.show.wantEpisode(episode.season, episode.episode, quality, languages, manualSearch=manualSearch):
logger.log(u"Ignoring result "+title+" because we don't want an episode that is "+Quality.qualityStrings[quality], logger.DEBUG)
continue

Expand All @@ -254,6 +260,7 @@ def findEpisode (self, episode, manualSearch=False):
result.url = url
result.name = title
result.quality = quality
result.languages = languages

results.append(result)

Expand All @@ -274,6 +281,7 @@ def findSeasonResults(self, show, season):
(title, url) = self._get_title_and_url(item)

quality = self.getQuality(item)
languages = self.getLanguages(item)

# parse the file name
try:
Expand Down Expand Up @@ -311,7 +319,7 @@ def findSeasonResults(self, show, season):
# make sure we want the episode
wantEp = True
for epNo in actual_episodes:
if not show.wantEpisode(actual_season, epNo, quality):
if not show.wantEpisode(actual_season, epNo, quality, languages):
wantEp = False
break

Expand Down