OSDN Git Service

ce8dd568b892d2ddd4e6400d199283159bed82ce
[handbrake-jp/handbrake-jp-git.git] / win / C# / Functions / RssReader.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.ComponentModel;\r
4 using System.Data;\r
5 using System.Drawing;\r
6 using System.Text;\r
7 using System.Windows.Forms;\r
8 using System.IO;\r
9 using System.Xml;\r
10 using System.Text.RegularExpressions;\r
11 \r
12 namespace Handbrake.Functions\r
13 {\r
14     class RssReader\r
15     {\r
16         XmlTextReader rssReader;\r
17         XmlDocument rssDoc;\r
18         XmlNode nodeRss;\r
19         XmlNode nodeChannel;\r
20         XmlNode nodeItem;\r
21         string t;\r
22 \r
23         private string readRss()\r
24         {\r
25             rssReader = new XmlTextReader("http://handbrake.m0k.org/appcast.xml");\r
26             rssDoc = new XmlDocument();\r
27             rssDoc.Load(rssReader);\r
28 \r
29             for (int i = 0; i < rssDoc.ChildNodes.Count; i++)\r
30             {\r
31                 if (rssDoc.ChildNodes[i].Name == "rss")\r
32                 {\r
33                     nodeRss = rssDoc.ChildNodes[i];\r
34                 }\r
35             }\r
36 \r
37             for (int i = 0; i < nodeRss.ChildNodes.Count; i++)\r
38             {\r
39                 if (nodeRss.ChildNodes[i].Name == "channel")\r
40                 {\r
41                     nodeChannel = nodeRss.ChildNodes[i];\r
42                 }\r
43             }\r
44 \r
45             string latestTitle = "";\r
46             for (int i = 0; i < nodeChannel.ChildNodes.Count; i++)\r
47             {\r
48  \r
49                 if (nodeChannel.ChildNodes[i].Name == "item")\r
50                 {\r
51                     nodeItem = nodeChannel.ChildNodes[i];\r
52                     latestTitle = nodeItem["title"].InnerText;\r
53                 }\r
54             }\r
55             return latestTitle;\r
56         }\r
57 \r
58         private string hb_versionInfo;\r
59         private string hb_version;\r
60         private string hb_build;\r
61         private string hb_file;\r
62 \r
63         public void getInfo()\r
64         {\r
65             readRss();\r
66             for (int i = 0; i < nodeChannel.ChildNodes.Count; i++)\r
67             {\r
68                 if (nodeChannel.ChildNodes[6].Name == "item")\r
69                 {\r
70                     nodeItem = nodeChannel.ChildNodes[0];\r
71                     t = readRss();\r
72                     if (nodeItem["title"].InnerText == t)\r
73                     {\r
74                         // Get the Version Information\r
75                         hb_versionInfo = nodeItem["description"].InnerText;\r
76 \r
77                         // Get the version\r
78                         string input = nodeItem.InnerXml;\r
79                         Match ver = Regex.Match(input, @"sparkle:shortVersionString=""([0-9].[0-9].[0-9]*)\""");\r
80                         hb_version = ver.ToString().Replace("sparkle:shortVersionString=", "").Replace("\"", "");\r
81 \r
82                         // Get the build number\r
83                         input = nodeItem.InnerXml;\r
84                         ver = Regex.Match(input, @"sparkle:version=""([0-9]*)\""");\r
85                         hb_build = ver.ToString().Replace("sparkle:version=", "").Replace("\"", "");\r
86 \r
87                         // Get the update file\r
88                         hb_file = nodeItem["windows"].InnerText;\r
89 \r
90                     }\r
91                 }\r
92             }\r
93          }\r
94 \r
95         public string versionInfo()\r
96         {\r
97             getInfo();\r
98             return hb_versionInfo;\r
99         }\r
100 \r
101         public string version()\r
102         {\r
103             getInfo();\r
104             return hb_version;\r
105         }\r
106 \r
107         public string build()\r
108         {\r
109             getInfo();\r
110             return hb_build;\r
111         }\r
112 \r
113         public string downloadFile()\r
114         {\r
115             getInfo();\r
116             return hb_file;\r
117         }\r
118     }\r
119 }