Private GIT

Skip to content
Snippets Groups Projects
Commit f643acaf authored by Dustyn Gibson's avatar Dustyn Gibson
Browse files

Fixes for KODI 12+ nfo file generation

Split directors, credits (writers), and genres into unique subelements for show and episode nfo
Add credits (writers) and directors to the show nfo
Fixes https://github.com/SickRage/sickrage-issues/issues/73
parent f103ee1b
No related branches found
No related tags found
No related merge requests found
......@@ -17,6 +17,7 @@
# You should have received a copy of the GNU General Public License
# along with SickRage. If not, see <http://www.gnu.org/licenses/>.
import re
import datetime
import sickbeard
......@@ -91,6 +92,10 @@ class KODI_12PlusMetadata(generic.GenericMetadata):
self.eg_season_all_poster = "season-all-poster.jpg"
self.eg_season_all_banner = "season-all-banner.jpg"
@staticmethod
def _split_info(info_string):
return {x.strip() for x in re.sub(r'[,/]*', '|', info_string).split('|') if x.strip()}
def _show_data(self, show_obj):
"""
Creates an elementTree XML structure for an KODI-style tvshow.nfo and
......@@ -169,8 +174,9 @@ class KODI_12PlusMetadata(generic.GenericMetadata):
indexerid.text = str(myShow["id"])
if getattr(myShow, 'genre', None) and isinstance(myShow["genre"], basestring):
genre = etree.SubElement(tv_node, "genre")
genre.text = " / ".join(x.strip() for x in myShow["genre"].split('|') if x.strip())
for genre in self._split_info(myShow["genre"]):
cur_genre = etree.SubElement(tv_node, "genre")
cur_genre.text = genre
if getattr(myShow, 'firstaired', None):
premiered = etree.SubElement(tv_node, "premiered")
......@@ -180,6 +186,16 @@ class KODI_12PlusMetadata(generic.GenericMetadata):
studio = etree.SubElement(tv_node, "studio")
studio.text = myShow["network"].strip()
if getattr(myShow, 'writer', None) and isinstance(myShow['writer'], basestring):
for writer in self._split_info(myShow['writer']):
cur_writer = etree.SubElement(tv_node, "credits")
cur_writer.text = writer
if getattr(myShow, 'director', None) and isinstance(myShow['director'], basestring):
for director in self._split_info(myShow['director']):
cur_director = etree.SubElement(tv_node, "director")
cur_director.text = director
if getattr(myShow, '_actors', None):
for actor in myShow['_actors']:
cur_actor = etree.SubElement(tv_node, "actor")
......@@ -310,20 +326,23 @@ class KODI_12PlusMetadata(generic.GenericMetadata):
# watched = etree.SubElement(episode, "watched")
# watched.text = 'false'
if getattr(myEp, 'writer', None):
ep_credits = etree.SubElement(episode, "credits")
ep_credits.text = myEp['writer'].strip()
if getattr(myEp, 'director', None):
director = etree.SubElement(episode, "director")
director.text = myEp['director'].strip()
if getattr(myEp, 'rating', None):
rating = etree.SubElement(episode, "rating")
rating.text = myEp['rating']
if getattr(myEp, 'writer', None) and isinstance(myEp['writer'], basestring):
for writer in self._split_info(myEp['writer']):
cur_writer = etree.SubElement(episode, "credits")
cur_writer.text = writer
if getattr(myEp, 'director', None) and isinstance(myEp['director'], basestring):
for director in self._split_info(myEp['director']):
cur_director = etree.SubElement(episode, "director")
cur_director.text = director
if getattr(myEp, 'gueststars', None) and isinstance(myEp['gueststars'], basestring):
for actor in (x.strip() for x in myEp['gueststars'].split('|') if x.strip()):
for actor in self._split_info(myEp['gueststars']):
cur_actor = etree.SubElement(episode, "actor")
cur_actor_name = etree.SubElement(cur_actor, "name")
cur_actor_name.text = actor
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment