1# -*- coding: UTF-8 -*- 2 3__revision__ = '$Id$' 4 5# Copyright (c) 2009 Michael Jahn 6# 7# This program is free software; you can redistribute it and/or modify 8# it under the terms of the GNU General Public License as published by 9# the Free Software Foundation; either version 2 of the License, or 10# (at your option) any later version. 11# 12# This program is distributed in the hope that it will be useful, 13# but WITHOUT ANY WARRANTY; without even the implied warranty of 14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15# GNU Library General Public License for more details. 16# 17# You should have received a copy of the GNU General Public License 18# along with this program; if not, write to the Free Software 19# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA 20 21# You may use and distribute this software under the terms of the 22# GNU General Public License, version 2 or later 23 24import xml.dom.minidom 25from plugins.export import XmlExportBase 26 27class ExportPlugin(XmlExportBase): 28 plugin_name = "DVD Profiler XML Export" 29 plugin_description = _("Full DVD Profiler XML Export V3 plugin") 30 plugin_author = "Michael Jahn" 31 plugin_author_email = "griffith@griffith.cc" 32 plugin_version = "1.0" 33 34 def __init__(self, database, locations, parent_window, search_conditions, config): 35 XmlExportBase.__init__(self, database, locations, parent_window, search_conditions, config) 36 self.config_section = 'export-dvdprofilerxml' 37 self.export_name = 'DVD Profiler XML Export V3' 38 self.filename = 'CollectionV3.xml' 39 40 def export_to_document(self, document, mainelement): 41 collelement = document.createElement('Collection') 42 document.appendChild(collelement) 43 comment = document.createComment('Griffith Export in DVD Profiler Collection Export Format V3') 44 document.insertBefore(comment, collelement) 45 XmlExportBase.export_to_document(self, document, collelement) 46 47 def process_movie(self, document, mainelement, movie, keys): 48 # create node 49 dvdelement = document.createElement('DVD') 50 mainelement.appendChild(dvdelement) 51 tmpelem = document.createElement('ProfileTimestamp') 52 dvdelement.appendChild(tmpelem) 53 tmpelem = document.createElement('ID') 54 dvdelement.appendChild(tmpelem) 55 tmpelem = document.createElement('UPC') 56 dvdelement.appendChild(tmpelem) 57 XmlExportBase.process_movie(self, document, dvdelement, movie, keys) 58 59 def process_movie_value(self, document, dvdelement, key, value): 60 if key == 'movies_number': 61 elem = document.createElement('CollectionNumber') 62 dvdelement.appendChild(elem) 63 t = document.createTextNode(value) 64 elem.appendChild(t) 65 tmpelem = document.createElement('CollectionType') 66 dvdelement.appendChild(tmpelem) 67 t = document.createTextNode('Owned') 68 tmpelem.appendChild(t) 69 elif key == 'movies_loaned': 70 loaninfoelem = document.createElement('LoanInfo') 71 dvdelement.appendChild(loaninfoelem) 72 loanedelem = document.createElement('Loaned') 73 loaninfoelem.appendChild(loanedelem) 74 t = document.createTextNode(value) 75 loanedelem.appendChild(t) 76 elif key == 'movies_seen': 77 pass 78 elif key == 'movies_rating': 79 reviewelem = document.createElement('Review') 80 dvdelement.appendChild(reviewelem) 81 reviewelem.setAttribute('Film', value) 82 reviewelem.setAttribute('Video', '0') 83 reviewelem.setAttribute('Audio', '0') 84 reviewelem.setAttribute('Extras', '0') 85 elif key == 'movies_color': # SmallInteger 86 pass 87 elif key == 'movies_cond': # SmallInteger 88 pass 89 elif key == 'movies_layers': # SmallInteger 90 pass 91 elif key == 'movies_media_num': # SmallInteger 92 pass 93 elif key == 'movies_runtime': # Integer 94 elem = document.createElement('RunningTime') 95 dvdelement.appendChild(elem) 96 t = document.createTextNode(value) 97 elem.appendChild(t) 98 elif key == 'movies_year': # year 99 elem = document.createElement('ProductionYear') 100 dvdelement.appendChild(elem) 101 t = document.createTextNode(value) 102 elem.appendChild(t) 103 elif key == 'movies_o_title': # VARCHAR 104 elem = document.createElement('OriginalTitle') 105 dvdelement.appendChild(elem) 106 t = document.createTextNode(value) 107 elem.appendChild(t) 108 elif key == 'movies_title': # VARCHAR 109 elem = document.createElement('Title') 110 dvdelement.appendChild(elem) 111 t = document.createTextNode(value) 112 elem.appendChild(t) 113 elif key == 'movies_director': # VARCHAR 114 directors = value.split(',') 115 directorselem = document.createElement('Credits') 116 dvdelement.appendChild(directorselem) 117 for director in directors: 118 directorsplit = director.split(' ') 119 firstname = '' 120 lastname = '' 121 if len(directorsplit) > 1: 122 firstname = directorsplit[0] 123 directorsplit.pop(0) 124 for directorname in directorsplit: 125 lastname = lastname + directorname + ' ' 126 directorelem = document.createElement('Credit') 127 directorselem.appendChild(directorelem) 128 directorelem.setAttribute('FirstName', firstname) 129 directorelem.setAttribute('LastName', lastname) 130 directorelem.setAttribute('BirthYear', '0') 131 directorelem.setAttribute('CreditType', 'Direction') 132 directorelem.setAttribute('CreditSubtype', 'Director') 133 directorelem.setAttribute('CreditedAs', '') 134 elif key == 'movies_o_site': # VARCHAR 135 pass 136 elif key == 'movies_site': # VARCHAR 137 pass 138 elif key == 'movies_trailer': # VARCHAR 139 pass 140 elif key == 'movies_country': # VARCHAR 141 elem = document.createElement('CountryOfOrigin') 142 dvdelement.appendChild(elem) 143 t = document.createTextNode(value) 144 elem.appendChild(t) 145 elif key == 'movies_genre': # VARCHAR 146 genres = value.split(',') 147 genreselem = document.createElement('Genres') 148 dvdelement.appendChild(genreselem) 149 for genre in genres: 150 genreelem = document.createElement('Genre') 151 genreselem.appendChild(genreelem) 152 t = document.createTextNode(genre.strip()) 153 genreelem.appendChild(t) 154 elif key == 'movies_region': # SmallInteger 155 regionselem = document.createElement('Regions') 156 dvdelement.appendChild(regionselem) 157 regionelem = document.createElement('Region') 158 regionselem.appendChild(regionelem) 159 t = document.createTextNode(value) 160 regionelem.appendChild(t) 161 elif key == 'movies_image': # VARCHAR 162 pass 163 elif key == 'movies_studio': # VARCHAR 164 studios = value.split(',') 165 studioselem = document.createElement('Studios') 166 dvdelement.appendChild(studioselem) 167 for studio in studios: 168 studioelem = document.createElement('Studio') 169 studioselem.appendChild(studioelem) 170 t = document.createTextNode(studio.strip()) 171 studioelem.appendChild(t) 172 elif key == 'movies_classification': # VARCHAR 173 elem = document.createElement('Rating') 174 dvdelement.appendChild(elem) 175 t = document.createTextNode(value) 176 elem.appendChild(t) 177 elif key == 'movies_cast': # VARCHAR 178 actors = value.split('\n') 179 actorselem = document.createElement('Actors') 180 dvdelement.appendChild(actorselem) 181 for actor in actors: 182 actorsplit = actor.split(_(' as ')) 183 actornames = actorsplit[0].split(' ') 184 role = '' 185 firstname = '' 186 lastname = '' 187 if len(actorsplit) > 1: 188 role = actorsplit[1] 189 if len(actornames) > 1: 190 firstname = actornames[0] 191 actornames.pop(0) 192 for actorname in actornames: 193 lastname = lastname + actorname + ' ' 194 actorelem = document.createElement('Actor') 195 actorselem.appendChild(actorelem) 196 actorelem.setAttribute('FirstName', firstname) 197 actorelem.setAttribute('LastName', lastname) 198 actorelem.setAttribute('Role', role) 199 actorelem.setAttribute('BirthYear', '0') 200 actorelem.setAttribute('CreditedAs', '') 201 actorelem.setAttribute('Voice', 'False') 202 actorelem.setAttribute('Uncredited', 'False') 203 actorelem.setAttribute('MiddleName', '') 204 elif key == 'movies_plot': # VARCHAR 205 elem = document.createElement('Overview') 206 dvdelement.appendChild(elem) 207 t = document.createTextNode(value) 208 elem.appendChild(t) 209 elif key == 'movies_notes': # VARCHAR 210 elem = document.createElement('Notes') 211 dvdelement.appendChild(elem) 212 t = document.createTextNode(value) 213 elem.appendChild(t) 214 215 def process_tags(self, document, dvdelement, tagsquery): 216 tagselem = document.createElement('Tags') 217 dvdelement.appendChild(tagselem) 218 for tag in tagsquery.execute().fetchall(): 219 value = self.convert_value(tag['name']) 220 tagelem = document.createElement('Tag') 221 tagselem.appendChild(tagelem) 222 tagelem.setAttribute('Name', value) 223 tagelem.setAttribute('FullName', value) 224