Advertisement
Awn_pastebin

Op2SureObj.js

Oct 31st, 2016
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. TODO:
  3.     普通の画像やURL -> <a>に囲まれてURLも出る(そりゃそうだ。
  4.     imgurが入った場合 -> document.querySelectorAll(".imgur");
  5.     お絵描きが入った場合 -> document.querySelectorAll("dd > a > img");
  6.     その両方wの場合 -> ↑でもいいけど、document.querySelectorAll(".pic"); もしくは, document.querySelectorAll(".pic.lazy");
  7. */
  8.  
  9. var Op2SureObj = (function(){
  10.     /* private member */
  11.     var _fromDL = 0;
  12.     var _toDL = 0;
  13.  
  14.     var _data = {
  15.         info : {},
  16.         res  : []
  17.     };
  18.  
  19.     /* initializer */
  20.     _init();
  21.  
  22.     /* private method */
  23.     function _init(){
  24.         //_data.infoの中身を設定する
  25.         var _url      = document.querySelector("link[rel='canonical'").href;
  26.         var _hostname = location.hostname;
  27.         var _pathname = location.pathname;
  28.         var _bbsname  = _url.split("/")[5];
  29.         var _surekey  = _url.split("/")[6];
  30.  
  31.         _data.info = {
  32.             url      : _url,
  33.             hostname : _hostname,
  34.             pathname : _pathname,
  35.             bbsname  : _bbsname,
  36.             surekey  : _surekey
  37.         }
  38.  
  39.         _updateDL();
  40.  
  41.         return;
  42.     }
  43.  
  44.  
  45.     function _updateDL(){
  46.         //一時変数
  47.         var _dt = [];
  48.         var _dd = [];
  49.         var _dti;
  50.         var _mailTemp;
  51.  
  52.         //_.data.resに格納する情報
  53.         var _num;
  54.         var _name;
  55.         var _mail;
  56.         var _time;
  57.         var _id;
  58.         var _text;
  59.  
  60.  
  61.         //dl要素を取得する
  62.         var _dthread  = document.querySelector(".thread");
  63.         var _dl = _dthread.getElementsByTagName("dl");
  64.  
  65.         //_data.resに格納する範囲を更新する
  66.         _fromDL = _toDL;
  67. //      _fromDL = _data.res.length;
  68.         _toDL = _dl.length;
  69.         console.log(_fromDL);
  70.         console.log(_toDL);
  71.  
  72.         //dlをdtとddに分解する
  73.         for(var ix = _fromDL; ix < _toDL; ix++){
  74.             _dt.push( _dl[ix].getElementsByTagName("dt")[0] );
  75.             _dd.push( _dl[ix].getElementsByTagName("dd")[0] );
  76.         }
  77.  
  78.         //ddは要素毎にinnerTextしてOp2obj.resに格納する
  79.         for(var ix = 0; ix < _toDL - _fromDL; ix++){
  80.             //メール欄取得処理
  81.             _mailTemp = _dt[ix].querySelector("font > a") || _dt[ix].querySelectorAll("a")[1];
  82.             _mail = _mailTemp === null || _mailTemp === undefined ? undefined : _mailTemp.getAttribute("href").split(":")[1];
  83.  
  84.             //テキスト(レス内容)取得処理
  85.             _text = _dd[ix].innerText;
  86.  
  87.             //その他の取得処理
  88.             _dti = _dt[ix].innerText;
  89.             _dti = _dti.split(":");
  90.  
  91.             _num  = _dti[0].match(/[0-9]*/)[0] - 0;
  92.             _name = _dti[1].substr(_dti[1].length-1) === " " ? _dti[1].substr(0,_dti[1].length-1) : _dti[1];
  93.             _time = _dti[2].split(" ID:")[0];
  94.             _id   = _dti[2].split(" ID:")[1].split(" ")[0];
  95.  
  96.  
  97.             //オブジェクトに格納する
  98.             _data.res.push( {
  99.                 num  : _num,
  100.                 name : _name,
  101.                 mail : _mail,
  102.                 time : _time,
  103.                 id   : _id,
  104.                 text : _text
  105.             });
  106.         }
  107.     }
  108.     /* public API */
  109.     return {
  110.         data : _data,
  111.         update : _updateDL
  112.     }
  113. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement