OSDN Git Service

36d105d8d428d435f978f4e752abe11308a0469f
[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 \r
59         public string versionInfo()\r
60         {\r
61             readRss();\r
62             string vinfo = "";\r
63             for (int i = 0; i < nodeChannel.ChildNodes.Count; i++)\r
64             {\r
65                 if (nodeChannel.ChildNodes[6].Name == "item")\r
66                 {\r
67                     nodeItem = nodeChannel.ChildNodes[0];\r
68                     t = readRss();\r
69                     if (nodeItem["title"].InnerText == t)\r
70                     {\r
71                         vinfo = nodeItem["description"].InnerText;\r
72                         break;\r
73                     }\r
74                 }\r
75             }\r
76 \r
77             return vinfo;\r
78          }\r
79 \r
80         public string version()\r
81         {\r
82             readRss();\r
83             string vinfo = "";\r
84             for (int i = 0; i < nodeChannel.ChildNodes.Count; i++)\r
85             {\r
86                 if (nodeChannel.ChildNodes[6].Name == "item")\r
87                 {\r
88                     nodeItem = nodeChannel.ChildNodes[0];\r
89                     string t = readRss();\r
90                     if (nodeItem["title"].InnerText == t)\r
91                     {\r
92                         string input = nodeItem.InnerXml;\r
93                         Match ver = Regex.Match(input, @"sparkle:shortVersionString=""([0-9].[0-9].[0-9]*)\""");\r
94                         vinfo = ver.ToString().Replace("sparkle:shortVersionString=", "").Replace("\"", "");\r
95 \r
96                         break;\r
97                     }\r
98                 }\r
99             }\r
100             return vinfo;\r
101         }\r
102 \r
103         public string build()\r
104         {\r
105             readRss();\r
106             string vinfo = "";\r
107             for (int i = 0; i < nodeChannel.ChildNodes.Count; i++)\r
108             {\r
109                 if (nodeChannel.ChildNodes[6].Name == "item")\r
110                 {\r
111                     nodeItem = nodeChannel.ChildNodes[0];\r
112                     string t = readRss();\r
113                     if (nodeItem["title"].InnerText == t)\r
114                     {\r
115                         string input = nodeItem.InnerXml; \r
116                         Match ver = Regex.Match(input, @"sparkle:version=""([0-9]*)\""");\r
117                         vinfo = ver.ToString().Replace("sparkle:version=", "").Replace("\"", "");\r
118                         break;\r
119                     }\r
120                 }\r
121             }\r
122             return vinfo;\r
123         }\r
124 \r
125         public string downloadFile()\r
126         {\r
127             readRss();\r
128             string file = "";\r
129             for (int i = 0; i < nodeChannel.ChildNodes.Count; i++)\r
130             {\r
131                 if (nodeChannel.ChildNodes[6].Name == "item")\r
132                 {\r
133                     nodeItem = nodeChannel.ChildNodes[0];\r
134                     t = readRss();\r
135                     if (nodeItem["title"].InnerText == t)\r
136                     {\r
137                         file = nodeItem["windows"].InnerText;\r
138                         break;\r
139                     }\r
140                 }\r
141             }\r
142 \r
143             return file;\r
144          }\r
145     }\r
146 }