• R/O
  • SSH
  • HTTPS

k-browser: Commit


Commit MetaInfo

Revision102 (tree)
Time2014-11-26 15:30:07
Authorddd3_pca

Log Message

最近上場された銘柄が取得できないバグを、ある程度解消

Change Summary

Incremental Difference

--- Projects/カブラウザもどき/Form1.cs (revision 101)
+++ Projects/カブラウザもどき/Form1.cs (revision 102)
@@ -455,8 +455,10 @@
455455 menuCP12.Text = "自分の投稿";
456456 menuCP12.Click += delegate
457457 {
458+ yahoo.AutoLogin(this.webBrowser1);
458459 string url = yahoo.GetPostedSelf();
459- Process.Start("IExplore.exe", url);
460+ this.webBrowser1.NavigateAndWait(url);
461+// Process.Start("IExplore.exe", url);
460462 };
461463
462464 menu_on_folder.Items.Add(menuCP1);
@@ -1145,6 +1147,7 @@
11451147 /// <param name="e"></param>
11461148 private void toolStripButton6_Click(object sender, EventArgs e)
11471149 {
1150+ yahoo.AutoLogin(this.webBrowser1);
11481151 SwitchBrowseAndNavigate(yahoo.GetDailyRankingUrl());
11491152 this.Text = "カブラウザもどき - Yahoo!掲示板 - 銘柄別投稿数ランキング";
11501153 }
@@ -1203,8 +1206,8 @@
12031206 {
12041207 MessageBox.Show("銘柄コードを入力してください。");
12051208 } else {
1206- SwitchBrowseAndNavigate("http://www.your-alert-service.com/shortselling/" + context.GetCode() + ".html");
1207- this.toolStripStatusLabel1.Text = "http://www.your-alert-service.com/shortselling/" + context.GetCode() + ".html";
1209+ SwitchBrowseAndNavigate("http://www.alert-service.net/shortselling/" + context.GetCode() + ".html");
1210+ this.toolStripStatusLabel1.Text = "http://www.alert-service.net/shortselling/" + context.GetCode() + ".html";
12081211 //GetShortInterest();
12091212 }
12101213 }
@@ -1338,52 +1341,10 @@
13381341 string edi = this.textBox5.Text;
13391342 this.webBrowser1.Visible = false;
13401343 this.webBrowser2.Visible = true;
1341- this.webBrowser2.NavigateAndWait("https://info.edinet-fsa.go.jp/E01EW/BLMainController.jsp?uji.verb=W1E62010YuKaBtn&uji.bean=ee.bean.EEW1E62030IBean&PID=currentPage&TID=W1E62030");
1344+// this.webBrowser2.NavigateAndWait("https://info.edinet-fsa.go.jp/E01EW/BLMainController.jsp?uji.verb=W1E62010YuKaBtn&uji.bean=ee.bean.EEW1E62030IBean&PID=currentPage&TID=W1E62030");
1345+ this.webBrowser2.NavigateAndWait("https://disclosure.edinet-fsa.go.jp/E01EW/BLMainController.jsp?uji.verb=W1E63011CXW1E6A011DSPSch&uji.bean=ee.bean.parent.EECommonSearchBean&TID=W1E63011&PID=W1E63011&SESSIONKEY=1416981915772&lgKbn=2&pkbn=0&skbn=1&dskb=&askb=&dflg=0&iflg=0&preId=1&mul=" +edi+ "&fls=on&lpr=on&oth=on&cal=1&era=H&yer=&mon=&pfs=5&row=100&idx=0&str=&kbn=1&flg=&syoruiKanriNo=");
13421346 doc = this.webBrowser2.Document;
1343- if ( doc != null && doc.Title == "EDINET")
1344- {
1345- string[] targetdoc = needEdinetDoc.Split(',');
1346- doc.GetElementById("edinetCode").SetAttribute("value", edi);
1347- HtmlElementCollection elms = doc.All.GetElementsByName("documentsKind");
1348- for (int i = 0; i < elms[0].All.Count; i++)
1349- {
1350- for (int j = 0; j < targetdoc.Length; j++)
1351- {
1352- if (elms[0].All[i].InnerText == targetdoc[j])
1353- {
1354- elms[0].All[i].SetAttribute("selected", "true");
1355- }
1356- }
1357- }
1358- doc.GetElementById("show3").SetAttribute("checked", "true"); // 100件表示
1359- HtmlElementCollection buttons = doc.GetElementsByTagName("input");
1360- foreach (HtmlElement b in buttons)
1361- {
1362- if (b.GetAttribute("type") == "button" && b.OuterHtml.IndexOf("検索") != -1)
1363- {
1364- b.InvokeMember("click");
1365- }
1366- }
1367-
1368- Sleep s = new Sleep(1);
1369- doc = this.webBrowser2.Document;
1370- doc.GetElementById("show3").SetAttribute("checked", "true"); // 100件表示
1371-
1372- elms = doc.GetElementsByTagName("a");
1373- string tmpedi = (string)edinetlist[this.textBox1.Text];
1374- tmpedi = tmpedi.Split(',')[0];
1375- foreach (HtmlElement a in elms)
1376- {
1377- if (a.InnerText == tmpedi + " ")
1378- {
1379- a.InvokeMember("click");
1380- }
1381- }
1382-
1383- }
1384-
13851347 //this.textBox5.Text = edi;
1386- this.toolStripStatusLabel1.Text = "https://info.edinet-fsa.go.jp/E01EW/BLMainController.jsp?uji.verb=W1E62010YuKaBtn&uji.bean=ee.bean.EEW1E62030IBean&PID=currentPage&TID=W1E62030";
13871348
13881349 } else {
13891350 this.textBox5.Text = "";
@@ -2916,7 +2877,7 @@
29162877 yTemplate["&COUNT"] = context.GetMaxTitleNo().ToString();
29172878 yTemplate["&COMPANYNAME"] = context.comapnyName;
29182879 yTemplate["&CHARTURL"] = "http://stocks.finance.yahoo.co.jp/stocks/chart/?code=" + context.GetCodeAndExchange();
2919- yTemplate["&CHARTIMG"] = "http://rchart.yahoo.co.jp/t?s=" + context.GetCodeAndExchange();
2880+ yTemplate["&CHARTIMG"] = "http://chart.yahoo.co.jp/?code=" + context.GetCodeAndExchange() + "&tm=1d&size=e";
29202881 //yTemplate["&CHARTDATE"] = "";
29212882 //yTemplate["&CHANGE"] = "";
29222883 //yTemplate["&CLOSE"] = "";
--- Projects/カブラウザもどき/CurrentContext.cs (revision 101)
+++ Projects/カブラウザもどき/CurrentContext.cs (revision 102)
@@ -72,6 +72,9 @@
7272 public string change = "";
7373 private AbstractGetYahoo yahoo;
7474 private YahooSkin skin; // スキン用の情報
75+ /// <summary>
76+ /// フォーマット(4桁証券コード\tEDINETコード,ディレクトリ名,SID,TID)
77+ /// </summary>
7578 private Hashtable edinetlist = null;
7679 /// <summary>
7780 /// datファイル読込用StreamReader
@@ -241,12 +244,14 @@
241244 this.t = instance;
242245 }
243246 /// <summary>
244- /// 市場コードつきの銘柄コードを返す。(例:8058.T)
247+ /// 市場コードつきの銘柄コードを返す。(例:8058.t)
248+ /// 旧ヤフー掲示板の時は、htmlから探しだしてこの値をセットしていた。
249+ /// 東証+大証統合によって全部.tとなったので、ここまでやる必要はない。
245250 /// </summary>
246251 /// <returns></returns>
247252 public string GetCodeAndExchange()
248253 {
249- return this.codeAndExchange;
254+ return (this.codeAndExchange == "" || this.codeAndExchange == null) ? this.code + ".t" : this.codeAndExchange;
250255 }
251256 /// <summary>
252257 /// 市場コード付き銘柄コードをセットする
--- Projects/カブラウザもどき/GetYahooTextream.cs (revision 101)
+++ Projects/カブラウザもどき/GetYahooTextream.cs (revision 102)
@@ -57,7 +57,7 @@
5757 if (context.GetCode() == "") return "";
5858 return "http://textream.yahoo.co.jp/message/" + GetBoard(context.GetCode()) + "/" + GetTid(context.GetCode())+ "?comment=" + mid;
5959 }
60- public string GetPostedSelf()
60+ public override string GetPostedSelf()
6161 {
6262 return "http://textream.yahoo.co.jp/personal/history/comment";
6363 }
@@ -240,10 +240,27 @@
240240 public override string GetTid(string code)
241241 {
242242 string ret = "-1";
243+ string html = "";
244+ // 2013.11.25 大幅に変更
245+ // 最近上場された銘柄はほぼ例外なくtidに乱数が付けれれてしまう。
246+ //  何故かtid直前フォルダ名も、100xxxx形式ではなく、別体系の番号になっている
247+ // ローカルに持っていない時は、alert-service.netに問い合わせる。
248+ // このサービスは単純に http://www.alert-service.net/yahoo/4275 とやれば、
249+ //
250+ // E00963,1835640,1835640,d04501eba542bb016767b9e89dc5f17a (EDINETコード,フォルダ名,SID,TID) という値が戻る
251+ // 異常系は空文字
252+ // www.alert-service.net ドメインがなくなってしまった場合は、誰か代わりのサーバーを立ててください。 (´・ω・`)
243253 if (edinetlist.ContainsKey(code)) {
244254 ret = ((string)edinetlist[code]).Split(',')[3];
245255 } else {
246- ret = code;
256+// ret = code;
257+ ComConstants now = ndbControl.DlControl;
258+ NonDispBrowser ndb = (NonDispBrowser)ndbControl.GetBrowser();
259+ ndb.NavigateAndWait("http://www.alert-service.net/yahoo/"+code);
260+ html = ndb.Document.Body.InnerText ;
261+
262+ if (html != null) ret = html.Split(',')[2].Trim();
263+ MergeEdinetCode(code, html);
247264 }
248265 return ret;
249266 }
@@ -300,24 +317,51 @@
300317 }
301318 return ;
302319 }
320+ /// <summary>
321+ /// 旧ヤフー掲示板では必要だったコード
322+ /// textreamでは必要なのかどうかわからない。
323+ /// 一応、ディレクトリ名(GetBoard)と似たような値を返すようにする。
324+ /// </summary>
325+ /// <param name="code"></param>
326+ /// <returns></returns>
303327 public override string GetSid(string code)
304328 {
305- string ret = "-1";
329+ //2013.11.25 GetTid()と同様に大幅に改造
330+ string ret = "";
331+ string html = "";
306332 if (edinetlist.ContainsKey(code)) {
307333 ret = ((string)edinetlist[code]).Split(',')[2];
308334 } else {
309- ret = "100" + code;
335+ ComConstants now = ndbControl.DlControl;
336+ NonDispBrowser ndb = (NonDispBrowser)ndbControl.GetBrowser();
337+ ndb.NavigateAndWait("http://www.alert-service.net/yahoo/" + code);
338+ html = ndb.Document.Body.InnerText;
339+ if (html != null) ret = ret = html.Split(',')[2].Trim();
340+ MergeEdinetCode(code, html);
310341 }
342+ if (ret == "")
343+ ret = "100" + code;
311344 return ret;
312345 }
346+
313347 public override string GetBoard(string code)
314348 {
315- string ret = "-1";
349+ //2013.11.25 GetTid()と同様に大幅に改造
350+ string ret = "";
351+ string html = "";
316352 if (edinetlist.ContainsKey(code)) {
317353 ret = ((string)edinetlist[code]).Split(',')[1];
318354 } else {
355+
356+ ComConstants now = ndbControl.DlControl;
357+ NonDispBrowser ndb = (NonDispBrowser)ndbControl.GetBrowser();
358+ ndb.NavigateAndWait("http://www.alert-service.net/yahoo/" + code);
359+ html = ndb.Document.Body.InnerText;
360+ if (html != null) ret = ret = html.Split(',')[1].Trim();
361+ MergeEdinetCode(code, html);
362+ }
363+ if (ret == "")
319364 ret = "100" + code;
320- }
321365 return ret;
322366 }
323367
@@ -661,5 +705,16 @@
661705
662706 return;
663707 }
708+
709+
710+ private void MergeEdinetCode(string code, string list){
711+ if (list != "" && list != null ) {
712+ edinetlist[code] = list;
713+ } else {
714+ console.AppendText("( ・益・) ノ > ナンカ取得に失敗してるよ!鯖シンデル?" + code + Form1.csCrLf);
715+ }
716+ return ;
717+ }
718+
664719 }
665720 }
--- Projects/カブラウザもどき/bin/Debug/kabu.ini (revision 101)
+++ Projects/カブラウザもどき/bin/Debug/kabu.ini (revision 102)
@@ -1,6 +1,6 @@
11 [Application]
22 ExecMode=1
3-Skin=sample.html
3+Skin=Textream.html
44
55
66 [EDINET]
@@ -11,12 +11,12 @@
1111 GetDocument5=???J???t?񍐏?
1212 GetDocument6=???J???t?P??͏o??
1313 GetDocument7=???????J???t?͏o??
14-GetDocument8=?????L???،??񍐏?
15-GetDocument9=?????????񍐏?
16-GetDocument10=?L???،??񍐏?
17-GetDocument11=?????l?????񍐏?
18-GetDocument12=?????񍐏?
19-GetDocument13=
14+GetDocument8=?????????????񍐏?
15+GetDocument9=?????L???،??񍐏?
16+GetDocument10=?????????񍐏?
17+GetDocument11=?L???،??񍐏?
18+GetDocument12=?????l?????񍐏?
19+GetDocument13=?????񍐏?
2020 GetDocument14=
2121 GetDocument15=
2222 GetDocument16=
@@ -36,7 +36,6 @@
3636 GetDocument30=
3737 GetDocument31=
3838 GetDocument32=
39-
4039 [YahooID]
41-UserId=
42-Password=
40+UserId=promo_as
41+Password=alert-service123
--- Projects/カブラウザもどき/GetYahoo.cs (revision 101)
+++ Projects/カブラウザもどき/GetYahoo.cs (revision 102)
@@ -13,7 +13,7 @@
1313 /// Form1クラスとはcontextクラスを介して情報の受け渡しを行う
1414 /// ヤフー掲示板の仕様に依存する実装を行う。
1515 /// このクラスはtextream以前のもの。
16- /// 2013年3月末には廃止予定
16+ /// 2013年3月末に廃止
1717 /// </summary>
1818 public class GetYahoo : AbstractGetYahoo
1919 {
@@ -245,7 +245,7 @@
245245
246246
247247 /// <summary>
248- /// Yahoo掲示板からトピックIDを取得する。
248+ /// Yahoo掲示板からトピックIDをなんとか探そうとする。
249249 /// この関数はローカルedinetcodelistからTIDが取得できず、どうしてもTIDがほしい
250250 /// 時のみ呼び出すこと
251251 /// ※引数docにはyahoo.GetBaseUrl()をnavigateした結果を渡して下さい
--- Projects/カブラウザもどき/AbstractGetYahoo.cs (revision 101)
+++ Projects/カブラウザもどき/AbstractGetYahoo.cs (revision 102)
@@ -27,6 +27,7 @@
2727 protected StatusStrip console2 = null;
2828 /// <summary>
2929 /// EDINETリスト
30+ /// フォーマット(4桁証券コード\tEDINETコード,ディレクトリ名,SID,TID)
3031 /// </summary>
3132 protected Hashtable edinetlist;
3233 /// <summary>
@@ -187,7 +188,7 @@
187188 /// &amp;board=xxxxxxx部分
188189 /// </summary>
189190 /// <param name="code">銘柄コード</param>
190- /// <returns>Board※旧Yahoo掲示板のみ使用</returns>
191+ /// <returns>Board※Textreamではフォルダ名として使用</returns>
191192 abstract public string GetBoard(string code);
192193 /// <summary>
193194 /// 引数のURLのメッセージコンテンツを取得する。
Show on old repository browser