diff --git a/couchpotato/core/loader.py b/couchpotato/core/loader.py index d3532fa..2812364 100644 --- a/couchpotato/core/loader.py +++ b/couchpotato/core/loader.py @@ -28,6 +28,7 @@ class Loader: 'torrent_provider' : (20, 'couchpotato.core.providers.torrent', os.path.join(providers, 'torrent')), 'trailer_provider' : (20, 'couchpotato.core.providers.trailer', os.path.join(providers, 'trailer')), 'subtitle_provider' : (20, 'couchpotato.core.providers.subtitle', os.path.join(providers, 'subtitle')), + 'metadata_provider' : (25, 'couchpotato.core.providers.metadata', os.path.join(providers, 'metadata')), } for type, tuple in self.paths.iteritems(): diff --git a/couchpotato/core/plugins/metadata/__init__.py b/couchpotato/core/plugins/metadata/__init__.py new file mode 100644 index 0000000..7114d26 --- /dev/null +++ b/couchpotato/core/plugins/metadata/__init__.py @@ -0,0 +1,6 @@ +from .main import MetaData + +def start(): + return MetaData() + +config = [] diff --git a/couchpotato/core/plugins/metadata/main.py b/couchpotato/core/plugins/metadata/main.py new file mode 100644 index 0000000..29695d0 --- /dev/null +++ b/couchpotato/core/plugins/metadata/main.py @@ -0,0 +1,22 @@ +from couchpotato.core.event import addEvent, fireEvent +from couchpotato.core.logger import CPLog +from couchpotato.core.plugins.base import Plugin + +log = CPLog(__name__) + + +class MetaData(Plugin): + + def __init__(self): + addEvent('renaming.after', self.add) + + self.registerStatic(__file__) + + def test(): + fireEvent('metadata.create') + + addEvent('app.load', test) + + def add(self, data = {}): + log.info('Getting meta data') + diff --git a/couchpotato/core/providers/metadata/__init__.py b/couchpotato/core/providers/metadata/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/couchpotato/core/providers/metadata/base.py b/couchpotato/core/providers/metadata/base.py new file mode 100644 index 0000000..d500229 --- /dev/null +++ b/couchpotato/core/providers/metadata/base.py @@ -0,0 +1,26 @@ +from couchpotato.core.event import addEvent +from couchpotato.core.logger import CPLog +from couchpotato.core.plugins.base import Plugin + +log = CPLog(__name__) + + +class MetaDataBase(Plugin): + + def __init__(self): + addEvent('metadata.create', self.create) + + def create(self): + print 'create metadata %s' % __name__ + + def getFanartName(self): + return + + def getThumbnailName(self): + return + + def getNfoName(self): + return + + def getNfo(self): + return diff --git a/couchpotato/core/providers/metadata/mediabrowser/__init__.py b/couchpotato/core/providers/metadata/mediabrowser/__init__.py new file mode 100644 index 0000000..e36a7ec --- /dev/null +++ b/couchpotato/core/providers/metadata/mediabrowser/__init__.py @@ -0,0 +1,6 @@ +from .main import MediaBrowser + +def start(): + return MediaBrowser() + +config = [] diff --git a/couchpotato/core/providers/metadata/mediabrowser/main.py b/couchpotato/core/providers/metadata/mediabrowser/main.py new file mode 100644 index 0000000..52a83d0 --- /dev/null +++ b/couchpotato/core/providers/metadata/mediabrowser/main.py @@ -0,0 +1,5 @@ +from couchpotato.core.providers.metadata.base import MetaDataBase + +class MediaBrowser(MetaDataBase): + + pass diff --git a/couchpotato/core/providers/metadata/sonyps3/__init__.py b/couchpotato/core/providers/metadata/sonyps3/__init__.py new file mode 100644 index 0000000..7377650 --- /dev/null +++ b/couchpotato/core/providers/metadata/sonyps3/__init__.py @@ -0,0 +1,6 @@ +from .main import SonyPS3 + +def start(): + return SonyPS3() + +config = [] diff --git a/couchpotato/core/providers/metadata/sonyps3/main.py b/couchpotato/core/providers/metadata/sonyps3/main.py new file mode 100644 index 0000000..58fdd7f --- /dev/null +++ b/couchpotato/core/providers/metadata/sonyps3/main.py @@ -0,0 +1,5 @@ +from couchpotato.core.providers.metadata.base import MetaDataBase + +class SonyPS3(MetaDataBase): + + pass diff --git a/couchpotato/core/providers/metadata/wdtv/__init__.py b/couchpotato/core/providers/metadata/wdtv/__init__.py new file mode 100644 index 0000000..bd2d8a1 --- /dev/null +++ b/couchpotato/core/providers/metadata/wdtv/__init__.py @@ -0,0 +1,6 @@ +from .main import WDTV + +def start(): + return WDTV() + +config = [] diff --git a/couchpotato/core/providers/metadata/wdtv/main.py b/couchpotato/core/providers/metadata/wdtv/main.py new file mode 100644 index 0000000..74322a0 --- /dev/null +++ b/couchpotato/core/providers/metadata/wdtv/main.py @@ -0,0 +1,5 @@ +from couchpotato.core.providers.metadata.base import MetaDataBase + +class WDTV(MetaDataBase): + + pass diff --git a/couchpotato/core/providers/metadata/xbmc/__init__.py b/couchpotato/core/providers/metadata/xbmc/__init__.py new file mode 100644 index 0000000..223571c --- /dev/null +++ b/couchpotato/core/providers/metadata/xbmc/__init__.py @@ -0,0 +1,6 @@ +from .main import XBMC + +def start(): + return XBMC() + +config = [] diff --git a/couchpotato/core/providers/metadata/xbmc/main.py b/couchpotato/core/providers/metadata/xbmc/main.py new file mode 100644 index 0000000..f0af4ae --- /dev/null +++ b/couchpotato/core/providers/metadata/xbmc/main.py @@ -0,0 +1,238 @@ +from couchpotato.core.providers.metadata.base import MetaDataBase +from xml.etree.ElementTree import Element, SubElement, Comment, tostring +import xml.dom.minidom + +class XBMC(MetaDataBase): + + def getFanartName(self, root): + return '%s-fanart.jpg' % root + + def getThumbnailName(self, root): + return '%s.tbn' % root + + def getNfoName(self, root): + return '%s.nfo' % root + + def getNfo(self): + pass + + +""" + def write_nfo(self, path, url = True, xml = True): + + self.out_string = '' + + if xml: + self.out_string = self._generate_nfo_xml() + + if url: + self.out_string = self.out_string + self.nfo_string + + try: + f = open(path, 'w') + f.write(self.out_string) + f.close() + except: + raise NfoError("Couldn't write nfo") + + def _generate_nfo_xml(self): + nfoxml = Element('movie') + + try: + title = SubElement(nfoxml, 'title') + title.text = self.tmdb_data['name'] + except: + pass + + try: + originaltitle = SubElement(nfoxml, 'originaltitel') + originaltitle.text = self.tmdb_data['original_name'] + except: + pass + + try: + rating = SubElement(nfoxml, 'rating') + rating.text = str(self.tmdb_data['rating']) + except: + pass + + try: + year = SubElement(nfoxml, 'year') + year.text = self.tmdb_data['released'][:4] + except: + pass + + try: + votes = SubElement(nfoxml, 'votes') + votes.text = str(self.tmdb_data['votes']) + except: + pass + + try: + plot = SubElement(nfoxml, 'outline') + plot.text = self.tmdb_data['overview'] + except: + pass + + for genre in self.tmdb_data['genres']: + genres = SubElement(nfoxml, 'genre') + genres.text = genre['name'] + + try: + runtime = SubElement(nfoxml, 'runtime') + runtime.text = str(self.tmdb_data['runtime']) + " min" + except: + pass + + try: + premiered = SubElement(nfoxml, 'premiered') + premiered.text = self.tmdb_data['released'] + except: + pass + + try: + mpaa = SubElement(nfoxml, 'mpaa') + mpaa.text = self.tmdb_data['certification'] + except: + pass + + try: + id = SubElement(nfoxml, 'id') + id.text = self.tmdb_data['imdb_id'] + except: + pass + + # Clean up the xml and return it + nfoxml = xml.dom.minidom.parseString(tostring(nfoxml)) + xml_string = nfoxml.toprettyxml(indent = ' ') + text_re = re.compile('>\n\s+([^<>\s].*?)\n\s+\g<1>= min_height: + images.append(image) + break + elif min_width and not min_height: + if image['width'] >= min_width: + images.append(image) + break + elif min_width and min_height: + if image['width'] >= min_width and image['height'] >= min_height: + images.append(image) + break + + #No image meets our resolution requirements, so disregard those requirements + if len(images) == 0 and min_height or min_width: + images.append(image_list[0]) + + return images[0] + +if __name__ == "__main__": + import sys + try: + id = sys.argv[1] + except: + id = 'tt0111161' + + x = MetaGen(id) + x.write_nfo("movie.nfo") + try: + x.write_fanart("fanart.jpg", ".", 0, 0) + except: pass + try: + x.write_poster("movie.tbn", ".", 0, 0) + except: pass +"""