Add local poster to every file?

I’m trying to edit one of the EyeTV agents available to assign a generic poster image to every file that is scrapped, but I’m not having much luck. Below is what I have fudged together from looking at other agents:



mport datetime, time, os, re, os.path, glob, plistlib<br />
<br />
class eyetvnfo(Agent.Movies):<br />
	name = 'EyeTV File Info'<br />
	primary_provider = True<br />
	languages = [Locale.Language.English]<br />
	<br />
	def search(self, results, media, lang):<br />
		part = media.items[0].parts[0]<br />
		id = part.plexHash<br />
		filename = part.file.decode('utf-8')<br />
		mod_time = os.path.getmtime(filename)<br />
		<br />
		results.Append(MetadataSearchResult(id=id, name=media.name, year=time.localtime(mod_time)[0], lang=lang, score=100))<br />
		<br />
	def update(self, metadata, media, lang):<br />
		filename = media.items[0].parts[0].file.decode('utf-8')<br />
		mod_time = os.path.getmtime(filename)<br />
		date = datetime.date.fromtimestamp(mod_time)<br />
		metadata.tagline = date<br />
		#metadata.year = date.year<br />
		metadata.originally_available_at = Datetime.ParseDate(str(date)).date()<br />
		path = os.path.dirname(filename)<br />
		for pfile in glob.glob1(path, '*.eyetvr'):<br />
			Log(pfile)<br />
		NFO = path + "/" + pfile<br />
		pl = plistlib.readPlist(NFO)<br />
		#Recording Name<br />
		try: metadata.title = pl['info']['recording title'].encode('utf-8')<br />
		except: pass<br />
		#Recording Tag Line<br />
		try: metadata.tagline = pl['info']['episode title'].encode('utf-8')<br />
		except: pass<br />
		#Recording Description<br />
		try: metadata.summary = pl['info']['description'].encode('utf-8')<br />
		except: pass<br />
		#Recording Channel<br />
		try: metadata.genres = pl['channel name'].encode('utf-8')<br />
		except: pass<br />
		#Recording Studio<br />
		try: metadata.studio = pl['channel name'].encode('utf-8')<br />
		except: pass<br />
                #Recording Poster<br />
		try: metadata.posters = "/Users/username/Pictures/tv.jpg"<br />
		except: pass



When running this I get the following error in the console:

"Exception setting attribute "posters" of to /Users/username/Pictures/tv.jpg"

I have no idea what that means, or if this is even possible, but I'd appreciate any help.

Cheers.

metadata.posters is a dict and not a string. The url to the image is usually used as index:



if poster_url not in metadata.posters:<br />
  img = HTTP.Request(poster_url)<br />
  metadata.posters[poster_url] = Proxy.Preview(img)


Thanks for the quick reply.

Could you help tie this in with the code in the opening post? How would this translate to a local file rather than a URL?

I'm afraid I'm a little out of my depth here.

It always helps to look at existing code, and in this case, the Local Media agent does something similar to what you’re looking to do.



<br />
# Load the file<br />
data = Core.storage.load(filePath)<br />
<br />
# If we haven't added this poster.<br />
if filePath not in metadata.posters:<br />
<br />
  # Add the poster.<br />
  metadata.posters[filePath] = Proxy.Media(data)<br />



Thanks very much. Am I right in assuming that I just have to declare filePath as below?

filePath = '/Users/username/Pictures/tv.png'

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.