def onUpdate(): entryList = List[Entry]() if NetworkInterface.GetIsNetworkAvailable(): # f = open('text.txt', 'w') try: request = WebRequest.Create(Uri("http://www.gaitameonline.com/rateaj/getrate")) response = None stream = None streamReader = None try: response = request.GetResponse() stream = response.GetResponseStream() streamReader = StreamReader(stream) r = streamReader.ReadToEnd() jsonDictionary = JsonDecoder.decode(r) # f.write(r) # f.write("\n\n\n") if jsonDictionary is not None and clr.GetClrType(Dictionary[String, Object]).IsInstanceOfType(jsonDictionary) and jsonDictionary.ContainsKey("quotes") and jsonDictionary["quotes"] is not None and clr.GetClrType(Array).IsInstanceOfType(jsonDictionary["quotes"]): vfx = "C:\\Program Files (x86)\\tamiyasu_talk\\vrx.exe" for obj in jsonDictionary["quotes"]: ask = None bid = None currencyPairCode = None entry = Entry() if obj is not None and clr.GetClrType(Dictionary[String, Object]).IsInstanceOfType(obj): currencyPairCode = obj["currencyPairCode"] if (("EUR" in currencyPairCode) or ("GBP" in currencyPairCode) or ("USD" in currencyPairCode))and ("JPY" in currencyPairCode): currencyPairCode = currencyPairCode.replace("EUR", u"ユーロ").replace("GBP", u"ポンド").replace("USD", u"ドル").replace("JPY", "") ask = obj["ask"] bid = obj["bid"] val = String.Format("{0}: {1} / {2}", currencyPairCode, ask, bid) # f.write(val) # f.write("\n") entry.Title = val entry.Description = val entryList.Add(entry) # MessageBox.Show(val, currencyPairCode) if File.Exists(vfx): Process.Start(vfx,val) Script.Instance.Alert(entryList) finally: if streamReader is not None: streamReader.Close() if stream is not None: stream.Close() if response is not None: response.Close() except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace)
def onUpdate(): if NetworkInterface.GetIsNetworkAvailable(): try: response = None stream = None try: response = request.GetResponse() stream = response.GetResponseStream() doc = XmlDocument() doc.Load(stream) for itemXmlNode in doc.GetElementsByTagName("item"): entry = Entry() epicenter = None maxLevel = None for xmlNode in itemXmlNode.ChildNodes: if xmlNode.Name.Equals("link"): entry.Resource = Uri(xmlNode.InnerText) elif xmlNode.Name.Equals("description"): entry.Description = xmlNode.InnerText elif xmlNode.Name.Equals("tenkiJP:earthquake"): for attribute in xmlNode.Attributes: if attribute.Name.Equals("epicenter"): epicenter = attribute.Value elif attribute.Name.Equals("max_level"): maxLevel = attribute.Value elif attribute.Name.Equals("outbreak_datetime"): entry.Created = entry.Modified = DateTime.Parse(attribute.Value) if epicenter is not None: if String.IsNullOrEmpty(maxLevel): maxLevel = "N/A" if CultureInfo.CurrentCulture.Equals(CultureInfo.GetCultureInfo("ja-JP")): entry.Title = String.Format("震度{0} - {1}", maxLevel, epicenter) else: entry.Title = String.Format("Intensity {0} - {1}", maxLevel, epicenter) entryList.Add(entry) finally: if stream is not None: stream.Close() if response is not None: response.Close() except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace)
def onUpdate(): entryList = List[Entry]() if NetworkInterface.GetIsNetworkAvailable(): try: request = WebRequest.Create(Uri("http://indexes.nikkei.co.jp/nkave")) response = None stream = None streamReader = None try: response = request.GetResponse() stream = response.GetResponseStream() streamReader = StreamReader(stream) r = streamReader.ReadToEnd() pattern1 = re.compile("top-nk225-value\">([,.0-9]+)[^0-9]") pattern2 = re.compile("top-nk225-differ\">([-+,.0-9]+)[^0-9]") m1 = pattern1.search(r) m2 = pattern2.search(r) if m1: entry = Entry() val = String.Format(u"日経平均株価 {0} ({1})", m1.group(1), m2.group(1)) entry.Title = val entry.Description = val entryList.Add(entry) vfx = "C:\\Program Files (x86)\\tamiyasu_talk\\vrx.exe" if File.Exists(vfx): Process.Start(vfx,val) Script.Instance.Alert(entryList) finally: if streamReader is not None: streamReader.Close() if stream is not None: stream.Close() if response is not None: response.Close() except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace)
def onTick(timer, e): global ts ts = ts.Add(timer.Interval) entry = Entry() if CultureInfo.CurrentCulture.Equals(CultureInfo.GetCultureInfo("ja-JP")): entry.Title = String.Format("予定の{0}分前になりました", Math.Abs(ts.Minutes).ToString()) else: if Math.Abs(ts.Minutes) == 1: entry.Title = String.Format("{0} minute remaining", Math.Abs(ts.Minutes).ToString()) else: entry.Title = String.Format("{0} minutes remaining", Math.Abs(ts.Minutes).ToString()) if ts.TotalMilliseconds >= 0: timer.Stop() ts = TimeSpan.Zero if CultureInfo.CurrentCulture.Equals(CultureInfo.GetCultureInfo("ja-JP")): entry.Title = "予定の時間になりました" else: entry.Title= "Time expired" entryList = List[Entry]() entryList.Add(entry) Script.Instance.Alert(entryList)
def onUpdate(): if NetworkInterface.GetIsNetworkAvailable(): try: response = None stream = None try: response = request.GetResponse() stream = response.GetResponseStream() doc = XmlDocument() doc.Load(stream) for entryXmlNode in doc.GetElementsByTagName("entry"): entry = Entry() for xmlNode in entryXmlNode.ChildNodes: if xmlNode.Name.Equals("title"): entry.Title = xmlNode.InnerText elif xmlNode.Name.Equals("issued"): entry.Created = DateTime.Parse( xmlNode.InnerText) elif xmlNode.Name.Equals("modified"): entry.Modified = DateTime.Parse( xmlNode.InnerText) elif xmlNode.Name.Equals("link"): for attribute in xmlNode.Attributes: if attribute.Name.Equals("href"): entry.Resource = Uri(attribute.Value) elif xmlNode.Name.Equals("author"): for childXmlNode in xmlNode.ChildNodes: if childXmlNode.Name.Equals("name"): entry.Author = childXmlNode.InnerText entry.Image = Uri( "http://www.google.co.jp/options/icons/gmail.gif") entryList.Add(entry) finally: if stream is not None: stream.Close() if response is not None: response.Close() except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace)
def onUpdate(): if NetworkInterface.GetIsNetworkAvailable(): try: response = None stream = None try: response = request.GetResponse() stream = response.GetResponseStream() doc = XmlDocument() doc.Load(stream) for itemXmlNode in doc.GetElementsByTagName("item"): entry = Entry() epicenter = None maxLevel = None for xmlNode in itemXmlNode.ChildNodes: if xmlNode.Name.Equals("link"): entry.Resource = Uri(xmlNode.InnerText) elif xmlNode.Name.Equals("description"): entry.Description = xmlNode.InnerText elif xmlNode.Name.Equals("tenkiJP:earthquake"): for attribute in xmlNode.Attributes: if attribute.Name.Equals("epicenter"): epicenter = attribute.Value elif attribute.Name.Equals("max_level"): maxLevel = attribute.Value elif attribute.Name.Equals( "outbreak_datetime"): entry.Created = entry.Modified = DateTime.Parse( attribute.Value) if epicenter is not None: if String.IsNullOrEmpty(maxLevel): maxLevel = "N/A" if CultureInfo.CurrentCulture.Equals( CultureInfo.GetCultureInfo("ja-JP")): entry.Title = String.Format( "震度{0} - {1}", maxLevel, epicenter) else: entry.Title = String.Format( "Intensity {0} - {1}", maxLevel, epicenter) entryList.Add(entry) finally: if stream is not None: stream.Close() if response is not None: response.Close() except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace)
def onUpdate(): if NetworkInterface.GetIsNetworkAvailable(): try: response = None stream = None try: response = request.GetResponse() stream = response.GetResponseStream() doc = XmlDocument() doc.Load(stream) for entryXmlNode in doc.GetElementsByTagName("entry"): entry = Entry() for xmlNode in entryXmlNode.ChildNodes: if xmlNode.Name.Equals("title"): entry.Title = xmlNode.InnerText elif xmlNode.Name.Equals("issued"): entry.Created = DateTime.Parse(xmlNode.InnerText) elif xmlNode.Name.Equals("modified"): entry.Modified = DateTime.Parse(xmlNode.InnerText) elif xmlNode.Name.Equals("link"): for attribute in xmlNode.Attributes: if attribute.Name.Equals("href"): entry.Resource = Uri(attribute.Value) elif xmlNode.Name.Equals("author"): for childXmlNode in xmlNode.ChildNodes: if childXmlNode.Name.Equals("name"): entry.Author = childXmlNode.InnerText entry.Image = Uri("http://www.google.co.jp/options/icons/gmail.gif") entryList.Add(entry) finally: if stream is not None: stream.Close() if response is not None: response.Close() except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace)
def onExecute(): if NetworkInterface.GetIsNetworkAvailable(): try: postResponse = None postResponseStream = None postStreamReader = None statusCode = None isPosted = False try: postRequestStream = None try: bytes = Encoding.ASCII.GetBytes(String.Empty) postRequestStream = postRequest.GetRequestStream() postRequestStream.Write(bytes, 0, bytes.Length) finally: if postRequestStream is not None: postRequestStream.Close() postResponse = postRequest.GetResponse() if postResponse.StatusCode == HttpStatusCode.OK: postResponseStream = postResponse.GetResponseStream() postStreamReader = StreamReader(postResponseStream) jsonDictionary = JsonDecoder.decode(postStreamReader.ReadToEnd()) if jsonDictionary is not None and clr.GetClrType(Dictionary[String, Object]).IsInstanceOfType(jsonDictionary) and jsonDictionary.ContainsKey("id"): isPosted = True statusCode = postResponse.StatusCode.ToString() finally: if postStreamReader is not None: postStreamReader.Close() if postResponseStream is not None: postResponseStream.Close() if postResponse is not None: postResponse.Close() if isPosted: updateResponse = None updateStream = None updateStreamReader = None try: updateResponse = updateRequest.GetResponse() updateStream = updateResponse.GetResponseStream() updateStreamReader = StreamReader(updateStream) jsonDictionary = JsonDecoder.decode(updateStreamReader.ReadToEnd()) if jsonDictionary is not None and clr.GetClrType(Dictionary[String, Object]).IsInstanceOfType(jsonDictionary) and jsonDictionary.ContainsKey("data") and jsonDictionary["data"] is not None and clr.GetClrType(Array).IsInstanceOfType(jsonDictionary["data"]): for obj in jsonDictionary["data"]: if obj is not None and clr.GetClrType(Dictionary[String, Object]).IsInstanceOfType(obj): entry = Entry() userId = None if obj.ContainsKey("id"): if obj["id"] is not None: array = obj["id"].Split('_') if array.Length == 2: entry.Resource = Uri(String.Format("http://www.facebook.com/{0}/posts/{1}", array[0], array[1])) if obj.ContainsKey("from"): if obj["from"] is not None: if clr.GetClrType(Dictionary[String, Object]).IsInstanceOfType(obj["from"]): entry.Author = obj["from"]["name"] if obj["from"].ContainsKey("id"): userId = obj["from"]["id"] if obj.ContainsKey("created_time"): if obj["created_time"] is not None: entry.Created = DateTime.Parse(obj["created_time"]) if obj.ContainsKey("updated_time"): if obj["updated_time"] is not None: entry.Modified = DateTime.Parse(obj["updated_time"]) if obj.ContainsKey("message"): if obj["message"] is not None: title = Regex.Replace(obj["message"], "[\r\n]", String.Empty, RegexOptions.CultureInvariant) if title.Length > 100: title = title.Remove(100, title.Length - 100) entry.Title = title if entry.Resource is not None and userId is not None: entry.Image = Uri(String.Format("https://graph.facebook.com/{0}/picture?access_token={1}", userId, urlEncode(accessToken))) entryList.Add(entry) finally: if updateStreamReader is not None: updateStreamReader.Close() if updateStream is not None: updateStream.Close() if updateResponse is not None: updateResponse.Close() return statusCode except WebException, e: return e.Response.StatusCode.ToString() except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace)
def onDispatch(task): global httpListener if task.Exception is None: httpListener.GetContextAsync().ContinueWith[List[Entry]](Func[Task[HttpListenerContext], List[Entry]](onDispatch), TaskContinuationOptions.LongRunning).ContinueWith(Action[Task[List[Entry]]](onCompleted), context) try: if task.Result.Request.HttpMethod.Equals(WebRequestMethods.Http.Post) and task.Result.Request.Url.AbsolutePath.Equals("/alert"): if task.Result.Request.ContentType.Equals("application/json"): stream = None streamReader = None try: stream = task.Result.Request.InputStream streamReader = StreamReader(stream) jsonArray = JsonDecoder.decode(streamReader.ReadToEnd()) if jsonArray is not None and clr.GetClrType(Array).IsInstanceOfType(jsonArray): entryList = List[Entry]() for obj in jsonArray: if clr.GetClrType(Dictionary[String, Object]).IsInstanceOfType(obj): entry = Entry() if obj.ContainsKey("resource") and clr.GetClrType(String).IsInstanceOfType(obj["resource"]): entry.Resource = Uri(obj["resource"]) if obj.ContainsKey("title") and clr.GetClrType(String).IsInstanceOfType(obj["title"]): entry.Title = obj["title"] if obj.ContainsKey("description") and clr.GetClrType(String).IsInstanceOfType(obj["description"]): entry.Description = obj["description"] if obj.ContainsKey("author") and clr.GetClrType(String).IsInstanceOfType(obj["author"]): entry.Author = obj["author"] if obj.ContainsKey("created") and clr.GetClrType(String).IsInstanceOfType(obj["created"]): entry.Created = DateTime.Parse(obj["created"]) if obj.ContainsKey("modified") and clr.GetClrType(String).IsInstanceOfType(obj["modified"]): entry.Modified = DateTime.Parse(obj["modified"]) if obj.ContainsKey("image") and clr.GetClrType(String).IsInstanceOfType(obj["image"]): entry.Image = Uri(obj["image"]) if obj.ContainsKey("tags") and clr.GetClrType(Array).IsInstanceOfType(obj["tags"]): for o in obj["tags"]: if clr.GetClrType(String).IsInstanceOfType(o): entry.Tags.Add(o) entryList.Add(entry) else: task.Result.Response.StatusCode = Convert.ToInt32(HttpStatusCode.BadRequest) return None return entryList else: task.Result.Response.StatusCode = Convert.ToInt32(HttpStatusCode.BadRequest) finally: if streamReader is not None: streamReader.Close() if stream is not None: stream.Close() else: task.Result.Response.StatusCode = Convert.ToInt32(HttpStatusCode.UnsupportedMediaType) else: task.Result.Response.StatusCode = Convert.ToInt32(HttpStatusCode.Forbidden) except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace) finally:
def onDispatch(task): global httpListener if task.Exception is None: httpListener.GetContextAsync().ContinueWith[List[Entry]]( Func[Task[HttpListenerContext], List[Entry]](onDispatch), TaskContinuationOptions.LongRunning).ContinueWith( Action[Task[List[Entry]]](onCompleted), context) try: if task.Result.Request.HttpMethod.Equals( WebRequestMethods.Http.Post ) and task.Result.Request.Url.AbsolutePath.Equals( "/alert"): if task.Result.Request.ContentType.Equals( "application/json"): stream = None streamReader = None try: stream = task.Result.Request.InputStream streamReader = StreamReader(stream) jsonArray = JsonDecoder.decode( streamReader.ReadToEnd()) if jsonArray is not None and clr.GetClrType( Array).IsInstanceOfType(jsonArray): entryList = List[Entry]() for obj in jsonArray: if clr.GetClrType(Dictionary[ String, Object]).IsInstanceOfType(obj): entry = Entry() if obj.ContainsKey( "resource" ) and clr.GetClrType( String).IsInstanceOfType( obj["resource"]): entry.Resource = Uri( obj["resource"]) if obj.ContainsKey( "title" ) and clr.GetClrType( String).IsInstanceOfType( obj["title"]): entry.Title = obj["title"] if obj.ContainsKey( "description" ) and clr.GetClrType( String).IsInstanceOfType( obj["description"]): entry.Description = obj[ "description"] if obj.ContainsKey( "author" ) and clr.GetClrType( String).IsInstanceOfType( obj["author"]): entry.Author = obj["author"] if obj.ContainsKey( "created" ) and clr.GetClrType( String).IsInstanceOfType( obj["created"]): entry.Created = DateTime.Parse( obj["created"]) if obj.ContainsKey( "modified" ) and clr.GetClrType( String).IsInstanceOfType( obj["modified"]): entry.Modified = DateTime.Parse( obj["modified"]) if obj.ContainsKey( "image" ) and clr.GetClrType( String).IsInstanceOfType( obj["image"]): entry.Image = Uri(obj["image"]) if obj.ContainsKey( "tags") and clr.GetClrType( Array ).IsInstanceOfType( obj["tags"]): for o in obj["tags"]: if clr.GetClrType( String ).IsInstanceOfType(o): entry.Tags.Add(o) entryList.Add(entry) else: task.Result.Response.StatusCode = Convert.ToInt32( HttpStatusCode.BadRequest) return None return entryList else: task.Result.Response.StatusCode = Convert.ToInt32( HttpStatusCode.BadRequest) finally: if streamReader is not None: streamReader.Close() if stream is not None: stream.Close() else: task.Result.Response.StatusCode = Convert.ToInt32( HttpStatusCode.UnsupportedMediaType) else: task.Result.Response.StatusCode = Convert.ToInt32( HttpStatusCode.Forbidden) except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace) finally: