OSDN Git Service

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