• R/O
  • SSH
  • HTTPS

protra: Commit


Commit MetaInfo

Revisão555 (tree)
Hora2022-04-16 21:06:37
Autorpanacoran

Mensagem de Log

Yahooファイナンスから株価をダウンロードできないのを直す

* Protra.Lib/Update/YahooFinanceUpdator (YahooFinanceUpdator): 正規表現を更新
* Protra.Lib/Update/YahooFinanceUpdator (YahooFinanceUpdator.GetPage): 新URLから日経平均を取れないのを直す

Mudança Sumário

Diff

--- protra/trunk/ChangeLog.txt (revision 554)
+++ protra/trunk/ChangeLog.txt (revision 555)
@@ -1,5 +1,12 @@
11 2022-04-16 panacoran <panacoran@users.osdn.me>
22
3+ Yahooファイナンスから株価をダウンロードできないのを直す
4+
5+ * Protra.Lib/Update/YahooFinanceUpdator (YahooFinanceUpdator): 正規表現を更新
6+ * Protra.Lib/Update/YahooFinanceUpdator (YahooFinanceUpdator.GetPage): 新URLから日経平均を取れないのを直す
7+
8+2022-04-16 panacoran <panacoran@users.osdn.me>
9+
310 東証の市場区分見直しに対応する
411
512 * Protra.Lib/Data/BrandData.cs (Market): 新市場区分を追加
--- protra/trunk/Protra.Lib/Update/YahooFinanceUpdator.cs (revision 554)
+++ protra/trunk/Protra.Lib/Update/YahooFinanceUpdator.cs (revision 555)
@@ -182,11 +182,21 @@
182182
183183 private FetchResult.Status GetPage(string code, DateTime begin, DateTime end, out string page)
184184 {
185- string codeString = code;
186- if (code == "1001" || code == "1002")
187- codeString = code == "1001" ? "998407.O" : "998405.T";
185+ string codeString;
186+ switch (code)
187+ {
188+ case "1001":
189+ codeString = "998407.O";
190+ break;
191+ case "1002":
192+ codeString = "998405.T";
193+ break;
194+ default:
195+ codeString = code + ".T";
196+ break;
197+ }
188198 var oldUrl = $"https://info.finance.yahoo.co.jp/history/?code={codeString}&sy={begin.Year}&sm={begin.Month}&sd={begin.Day}&ey={end.Year}&em={end.Month}&ed={end.Day}&tm=d";
189- var url = $"https://finance.yahoo.co.jp/quote/{codeString}.T/history?from={begin:yyyyMMdd}&to={end:yyyyMMdd}&timeFrame=d&page=1";
199+ var url = $"https://finance.yahoo.co.jp/quote/{codeString}/history?from={begin:yyyyMMdd}&to={end:yyyyMMdd}&timeFrame=d&page=1";
190200 retry:
191201 var dl = new DownloadUtil(url);
192202 page = null;
@@ -230,13 +240,15 @@
230240 }
231241
232242 private static readonly Regex Valid = new Regex(
233- @"<tr[^>]*><th[^>]*>(?<year>\d{4})年(?<month>1?\d)月(?<day>\d?\d)日<\/th><td[^>]+>(?:<span[^>]+>)+(?<open>[0-9,.]+)<\/span>.*?<\/td><td[^>]+>(?:<span[^>]+>)+(?<high>[0-9,.]+)<\/span>.*?<\/td><td[^>]+>(?:<span[^>]+>)+(?<low>[0-9,.]+)<\/span>.+?<\/td><td[^>]+>(?:<span[^>]+>)+(?<close>[0-9,.]+)<\/span>.+?<\/td>(?:<td.*?>(?<volume>[0-9,.]+)<\/span>.+?<\/td>)?<\/tr>",
243+ @"<tr[^>]*><t[hd][^>]*>(?<year>\d{4})年(?<month>1?\d)月(?<day>\d?\d)日<\/t[hd]><td[^>]+>(?:<span[^>]+>)+(?<open>[0-9,.]+)(?:<\/span>)+<\/td><td[^>]+>(?:<span[^>]+>)+(?<high>[0-9,.]+)(?:<\/span>)+<\/td><td[^>]+>(?:<span[^>]+>)+(?<low>[0-9,.]+)(?:<\/span>)+<\/td><td[^>]+>(?:<span[^>]+>)+(?<close>[0-9,.]+)(?:<\/span>)+<\/td>(?:<td[^>]+>(?:<span[^>]+>)+(?<volume>[0-9,.]+)(?:<\/span>)+<\/td>.+?<\/td>)?<\/tr>",
234244 RegexOptions.Compiled);
235245
236246 private static readonly Regex NoData = new Regex("時系列情報がありません");
237247
238248 private static readonly Regex ValidOld = new Regex(
239- @"<td>(?<year>\d{4})年(?<month>1?\d)月(?<day>\d?\d)日</td><td>(?<open>[0-9,.]+)</td><td>(?<high>[0-9,.]+)</td><td>(?<low>[0-9,.]+)</td><td>(?<close>[0-9,.]+)</td>(?:<td>(?<volume>[0-9,]+)</td>)?", RegexOptions.Compiled);
249+ @"<td>(?<year>\d{4})年(?<month>1?\d)月(?<day>\d?\d)日</td>" +
250+ "<td>(?<open>[0-9,.]+)</td><td>(?<high>[0-9,.]+)</td><td>(?<low>[0-9,.]+)</td>" +
251+ "<td>(?<close>[0-9,.]+)</td>(?:<td>(?<volume>[0-9,]+)</td>)?", RegexOptions.Compiled);
240252
241253 private static readonly Regex NoDataOld = new Regex("該当する期間のデータはありません。<br>期間をご確認ください。");
242254
Show on old repository browser