| ソースコード |
# -*- encoding: utf-8 -*-
# Apple Trailer Posters
# Copyright Tomoya Kitayama All rights reserved.
import clr
clr.AddReferenceByPartialName("PresentationCore")
clr.AddReferenceByPartialName("PresentationFramework")
clr.AddReferenceByPartialName("WindowsBase")
clr.AddReferenceByPartialName("System.Xml")
clr.AddReferenceByPartialName("System.Configuration")
clr.AddReferenceByPartialName("coRockets")
from System import String, Int32, Uri, DateTime, TimeSpan, Exception
from System.IO import Stream, StreamReader, Path, DirectoryInfo
from System.Collections.Generic import List
from System.Collections.ObjectModel import Collection;
from System.Globalization import CultureInfo, DateTimeStyles
from System.Text.RegularExpressions import Regex, RegexOptions, Match
from System.Timers import Timer
from System.Net import WebRequest, WebResponse, WebClient, HttpRequestHeader
from System.Net.NetworkInformation import NetworkInterface
from System.Windows.Threading import DispatcherTimer;
from System.Xml import XmlDocument, XmlNode, XmlAttribute
from System.Configuration import ConfigurationManager, ConfigurationUserLevel
from System.Diagnostics import *
from CoRockets import Entry
def update():
try:
global rootEntry
if not NetworkInterface.GetIsNetworkAvailable():
return
request = WebRequest.Create("http://www.apple.com/trailers/home/xml/current.xml")
response = request.GetResponse()
s = response.GetResponseStream()
doc = XmlDocument()
doc.Load(s)
entryList = List[Entry]()
for movieinfoXmlNode in doc.SelectNodes("/records/movieinfo"):
newEntry = Entry()
for xmlNode in movieinfoXmlNode.ChildNodes:
if xmlNode.Name.Equals("info"):
for infoXmlNode in xmlNode.ChildNodes:
if infoXmlNode.Name.Equals("title"):
newEntry.Title = infoXmlNode.InnerText
if infoXmlNode.Name.Equals("description"):
newEntry.Description = infoXmlNode.InnerText
if infoXmlNode.Name.Equals("studio"):
newEntry.Author = infoXmlNode.InnerText
if infoXmlNode.Name.Equals("postdate"):
newEntry.Updated = newEntry.Updated = DateTime.ParseExact(infoXmlNode.InnerText, "yyyy-MM-dd", CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles.None)
if xmlNode.Name.Equals("poster"):
for posterXmlNode in xmlNode.ChildNodes:
if posterXmlNode.Name.Equals("xlarge"):
newEntry.ImageUri = newEntry.Uri = Uri(posterXmlNode.InnerText)
if newEntry.Uri != None:
isExist = False
for entry in rootEntry.ChildEntries:
if entry.Uri == newEntry.Uri:
isExist = True
if isExist == False:
entryList.Add(newEntry)
if entryList.Count > 0:
rootEntry.ImageUri = Uri("http://www.sindhtoday.net/wp-content/uploads/2008/07/apple-logo.jpg")
entryList.Reverse()
for entry in entryList:
rootEntry.InsertChild(0, entry)
if s != None:
s.Close()
if response != None:
response.Close()
except Exception, e:
Trace.WriteLine("Apple Trailer Posters "+e)
def onUpdate(s, e):
update()
rootEntry = None
for entry in Fetcher.Entries:
if entry.Title.Equals("Apple Trailer Posters"):
rootEntry = entry
break
if rootEntry == None:
rootEntry = Entry()
rootEntry.Title = "Apple Trailer Posters"
rootEntry.Type = "Photos"
Fetcher.Entries.Add(rootEntry)
Fetcher.Update += onUpdate
|