vuthanhcuonggmail.com / ABPVN AdsBlock

// ==UserScript==
// @name        ABPVN AdsBlock
// @namespace   ABPVN
// @author      Hoàng Rio
// @copyright   ABPVN
// @homepage    http://abpvn.com
// @supportURL  https://github.com/abpvn/abpvn/issues
// @icon        http://abpvn.com/icon.png
// @description Script chặn quảng cáo,loại bỏ chờ đợi của ABPVN
// @contributionURL https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=donghoang.nguyen@gmail.com&item_name=ABPVN Donation
// @run-at      document-end
// @include     http://*
// @include     https://*
// @version     2.1.5.2
// @noframes
// @change-log  Add block popup site
// @grant       none
// ==/UserScript==
/* String Prototype */
String.prototype.startWith = function strxStart(str) {
  return this.indexOf(str) === 0;
};
String.prototype.ismatch = function (regex) {
  return this.match(regex) !== null;
};
var getAllText = function (selector) {
  var text = '';
  var list = document.querySelectorAll(selector);
  if (list)
  for (var i = 0; i < list.length; i++) {
    text += list[i].innerText;
  }
  return text;
};
var removeDuplicates = function (arr) {
  var tmp = [
  ];
  for (var i = 0; i < arr.length; i++) {
    if (tmp.indexOf(arr[i]) == - 1) {
      tmp.push(arr[i]);
    }
  }
  return tmp;
};
//Bypass Class
var byPass = {
  hideLink: function () {
    var contentDiv = document.querySelectorAll('.onp-sl-content');
    if (contentDiv.length) {
      ABPVN.cTitle();
      //Add style tag to hide all .onp-sl and show all .onp-sl-content
      if (!document.getElementById('abpvn_style')) {
        var style = document.createElement('style');
        style.id = 'abpvn_style';
        style.innerHTML = '.onp-sl-content{display:block!important;}.onp-sl{display:none!important;}';
        document.body.appendChild(style);
      }      //ShowALl ContentDiv

      for (var i in contentDiv) {
        if (contentDiv[i].firstChild.innerText != 'Unlocked by ABPVN.COM') {
          var creditDiv = document.createElement('div');
          creditDiv.innerHTML = '<a href="http://abpvn.com" target="_blank" style="color: #08BE54;font-weight: bold;">Unlocked by ABPVN.COM</a>';
          creditDiv.style.textAlign = 'right';
          contentDiv[i].insertBefore(creditDiv, contentDiv[i].firstChild);
        }
        contentDiv[i].style.display = 'block';
      } //Hide All LockDiv

      var lockDiv = document.querySelectorAll('.onp-sl');
      for (var j in lockDiv) {
        lockDiv[j].style.display = 'none !important';
      }
    }
  },
  init: function () {
    window.addEventListener('DOMContentLoaded', this.hideLink);
    window.addEventListener('load', this.hideLink);
  }
};
//Logger Class
var Logger = {
  info: function (text) {
    console.info('ABPVN Info: ', text);
  },
  warn: function (text) {
    console.warn('ABPVN Warn: ', text);
  },
  error: function (text) {
    console.error('ABPVN Error: ', text);
  },
  log: function (text) {
    console.log('ABPVN Log: ', text);
  },
};
//get Link class
var getLink = {
  FShareConfig: function () {
    if (this.url.startWith('https://www.fshare.vn')) {
      var background_image = localStorage.off == 'true' ? 'url("http://i.imgur.com/kJnOMOB.png")' : 'url("http://i.imgur.com/2b7fN6a.png")';
      var title = localStorage.off == 'true' ? 'Bật get link fshare' : 'Tắt get link fshare';
      var html = '<div id=\'fs_click\' title=\'' + title + '\' style=\'position: fixed; right: 0; bottom: 0; width: 30px; height: 30px; border-radius: 50%; background-image: ' + background_image + '; background-size: cover; cursor: pointer; z-index: 9999;\'></div>';
      $(document).ready(function () {
        $(document.body).append(html);
        $(document).on('click', '#fs_click', function FS_on_off() {
          if (localStorage.off != 'true') {
            localStorage.off = true;
            this.style.backgroundImage = 'url("http://i.imgur.com/kJnOMOB.png")';
            this.setAttribute('title', 'Bật get link fshare');
            alert('Đã tắt get link fshare');
          } 
          else {
            localStorage.off = false;
            this.setAttribute('title', 'Tắt get link fshare');
            this.style.backgroundImage = 'url("http://i.imgur.com/2b7fN6a.png")';
            alert('Đã bật get link fshare');
          }
        });
      });
    }
  },
  FShareGetLink: function () {
    if (this.url.startWith('https://www.fshare.vn/file/')) {
      if (localStorage.off != 'true') {
        console.info('Start get link Fshare.vn');
        $(document).ready(function () {
          var checkpassword = document.querySelector('.fa-lock');
          var linkcode = $('[data-linkcode]').attr('data-linkcode');
          if (checkpassword === null) {
            var code = $('input[name=fs_csrf]').val();
            var speed = $(this).data('speed');
            var data = {
              'fs_csrf': code,
              'DownloadForm[pwd]': '',
              'DownloadForm[linkcode]': linkcode,
              'ajax': 'download-form',
              'undefined': 'undefined'
            };
            $.post('/download/get', data).done(function (data, statusText, xhr) {
              if (data.url === undefined) location.reload();
               else {
                if (typeof location != 'undefined') {
                  console.log('ABPVN: ' + location.href + ' -> ' + data.url);
                  location.href = data.url;
                } 
                else {
                  $('.policy_download').prepend('<div class="col-xs-12"><a title="Download nhanh qua linksvip.net" style="margin-top: 10px; height: 70px;" class="btn btn-success btn-lg btn-block btn-download-sms" href="' + data.url + '">        <i class="fa fa-cloud-download fa-2x pull-left"></i>        <span class="pull-right text-right download-txt">            Tải trực tiếp<br>            <small>Hỗ trợ bởi abpvn.com</small>        </span></a></div>'
                  );
                }
              }
            }).fail(function (xhr, statusText, error) {
              $.alert({
                success: false,
                message: 'ABPVN: Đã có lỗi fshare hoặc file có password'
              });
            });
          } 
          else {
            $.alert({
              success: false,
              message: 'ABPVN: Hãy nhập mật khẩu cho file trước'
            });
            $('#download-form').unbind('submit');
            $('#download-form').submit(function (event) {
              var pwd = $('#DownloadForm_pwd').val();
              var code = $('input[name=fs_csrf]').val();
              var speed = $(this).data('speed');
              var data = {
                'fs_csrf': code,
                'DownloadForm[pwd]': pwd,
                'DownloadForm[linkcode]': linkcode,
                'ajax': 'download-form',
                'undefined': 'undefined'
              };
              $.post('/download/get', data).done(function (data, statusText, xhr) {
                if (data.url === undefined) location.reload();
                 else {
                  if (typeof location != 'undefined') {
                    console.log('ABPVN: ' + location.href + ' -> ' + data.url);
                    location.href = data.url;
                  } 
                  else {
                    $('.policy_download').prepend('<div class="col-xs-12"><a title="Download nhanh qua linksvip.net" style="margin-top: 10px; height: 70px;" class="btn btn-success btn-lg btn-block btn-download-sms" href="' + data.url + '">        <i class="fa fa-cloud-download fa-2x pull-left"></i>        <span class="pull-right text-right download-txt">            Tải trực tiếp<br>            <small>Hỗ trợ bởi abpvn.com</small>        </span></a></div>'
                    );
                  }
                }
              }).fail(function (xhr, statusText, error) {
                $.alert({
                  success: false,
                  message: 'ABPVN: Đã có lỗi fshare hoặc file có password'
                });
              });
              event.preventDefault();
            });
          }
        });
      } 
      else {
        $('.policy_download').prepend('<div class="col-xs-12"><a title="Download nhanh qua linksvip.net" style="margin-top: 10px; height: 70px;" class="btn btn-success btn-lg btn-block btn-download-sms" href="http://linksvip.net?link=' + location.href + '">        <i class="fa fa-cloud-download fa-2x pull-left"></i>        <span class="pull-right text-right download-txt">            Tải nhanh<br>            <small>Qua dịch vụ linksvip.net</small>        </span></a></div>'
        );
      }
    }
  },
  mediafire_com: function () {
    if (this.url.startWith('http://www.mediafire.com/file/')) {
      var a_tag = document.querySelector('.download_link a');
      var link = a_tag.getAttribute('href');
      if (link.startWith('http')) {
        document.body.innerHTML = '<center><h1>ABPVN MediaFire Download đã hoạt động</h1><a href=\'http://abpvn.com/napthe\'><h1>Ủng hộ ABPVN</h1></a><br/>Không tự tải xuống? <a href=\'' + link + '\' title=\'Download\'>Click vào đây</a></center>';
        location.href = link;
      }
    }
  },
  usercloud_com: function () {
    if (this.url.startWith('https://userscloud.com/') && this.url.length > 24) {
      var form = document.querySelector('form[name="F1"]');
      if (form) {
        form.submit();
        document.body.innerHTML = '<center><h1>ABPVN UserCloud Download đã hoạt động</h1><a href=\'http://abpvn.com/napthe\'><h1>Ủng hộ ABPVN</h1></center>';
      } else {
        var a_link = document.querySelector('h4 a.btn-success');
        if (a_link) {
          var link = a_link.getAttribute('href')
          if (link.startWith('https')) {
            location.href = link;
            document.body.innerHTML = '<center><h1>ABPVN UserCloud Download đã hoạt động</h1><a href=\'http://abpvn.com/napthe\'><h1>Ủng hộ ABPVN</h1></a><br/>Không tự tải xuống? <a href=\'' + link + '\' title=\'Download\'>Click vào đây</a></center>';
          }
        }
      }
    }
  },
  init: function () {
    this.url = location.href;
    this.FShareConfig();
    this.FShareGetLink();
    this.mediafire_com();
    this.usercloud_com();
  }
};
//Fix site class
var fixSite = {
  elementExist: function (selector) {
    var check = document.querySelector(selector);
    return check != null;
  },
  getAllText: function (selector) {
    var text = '';
    var nodeList = document.querySelectorAll(selector);
    if (nodeList) {
      for (var i in nodeList) {
        if (nodeList[i].innerText) text += nodeList[i].innerText;
      }
    }
    return text;
  },
  getScript: function (url) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url);
    xhr.addEventListener('load', function (data) {
      var blob = new Blob([xhr.responseText], {
        type: 'text/javascript'
      });
      var url = URL.createObjectURL(blob);
      var script = document.createElement('script');
      script.src = url;
      script.type = 'text/javascript';
      document.getElementsByTagName('head') [0].appendChild(script);
    });
    xhr.send();
  },
  loadCss: function (url, id) {
    var css_tag = document.createElement('link');
    css_tag.rel = 'stylesheet';
    css_tag.id = id;
    css_tag.href = url;
    var head = document.getElementsByTagName('head') [0];
    head.appendChild(css_tag);
  },
  talktv_vn: function () {
    if (this.url.startWith('http://talktv.vn/') && this.url.length > 17) {
      //disabled jwplayer
      //jwplayer = {
      // };
      $(document).ready(function () {
        if (loadPlayer.manifestUrl.indexOf('.m3u8') != - 1) {
          //Ininit Libs Tag
          var css_tag = document.createElement('link');
          css_tag.rel = 'stylesheet';
          css_tag.href = 'https://cdnjs.cloudflare.com/ajax/libs/video.js/6.0.1/video-js.min.css';
          var script_vjs_tag = document.createElement('script');
          script_vjs_tag.src = 'https://cdnjs.cloudflare.com/ajax/libs/video.js/6.0.1/video.min.js';
          var script_js_hls = document.createElement('script');
          script_js_hls.src = 'https://cdnjs.cloudflare.com/ajax/libs/videojs-contrib-hls/5.5.0/videojs-contrib-hls.js';
          //script_js_hls.src = 'https://cdnjs.cloudflare.com/ajax/libs/videojs-contrib-hls/3.7.0-beta4/videojs-contrib-hls.js';    
          var head = document.getElementsByTagName('head') [0];
          head.appendChild(css_tag);
          head.appendChild(script_vjs_tag);
          head.appendChild(script_js_hls);
          //Innit video Tag to play
          document.querySelector('.channel-play').innerHTML = '<video controls id="abpvn_talktv_vjs" autoplay="autoplay" style="width: 100%; height: 100%" class="video-js vjs-default-skin" poster="' + loadPlayer.backgroundImage + '"><source src="http://crossorigin.me/' + loadPlayer.manifestUrl + '" type="application/x-mpegURL"></video>';
          var timer;
          timer = setInterval(function () {
            if (typeof videojs != 'undefined' && typeof videojs.Hls != 'undefined') {
              var tmp_video = videojs('abpvn_talktv_vjs');
              tmp_video.play();
              clearInterval(timer);
            }
          }, 300);
        }
      });
    }
  },
  tv_zing_vn: function () {
    if (this.url.startWith('http://tv.zing.vn/video/') && !this.elementExist('#_infoUserCp') && !MP3.ZINGTV_VIP) {
      window.addEventListener('DOMContentLoaded', function () {
        var script = document.createElement('script');
        script.src = 'https://content.jwplatform.com/libraries/QHJ5Iarr.js';
        script.type = 'text/javascript';
        document.getElementsByTagName('head') [0].appendChild(script);
        //get video list   
        var text = getAllText('script');
        var quality = [
          '360',
          '480',
          '720',
          '1080'
        ];
        var listVideo = text.match(/http:\/\/stream\d+\.tv.+?\.mp4/g);
        listVideo = removeDuplicates(listVideo);
        var sources = [
        ];
        for (var i = 0; i < listVideo.length; i++) {
          sources.push({
            'file': listVideo[i],
            'label': quality[i]
          })
        };
        //get Image poster      
        var imagePoster = text.match(/http:\/\/image.+?\.jpg/);
        //Setup Player
        var playerId = 'abpvn_player';
        document.getElementById('player').innerHTML = '<div id="' + playerId + '"></div>';
        var clock = setInterval(function () {
          if (typeof jwplayer != 'undefined') {
            jwplayer(playerId).setup({
              sources: sources,
              autostart: true,
              image: imagePoster[0],
              width: '100%',
              height: 520
            })
            clearInterval(clock);
          }
        }, 300);
      });
    }
  },
  hamtruyen_vn: function () {
    if (this.url.startWith('http://hamtruyen.vn/')) {
      document.addEventListener('DOMContentLoaded', function () {
        ABPVN.Logger.log('Run block popup');
        var container = document.getElementById('container');
        if (container) {
          var btpop = function () {
            ABPVN.Logger.info('Overided Popup Function');
          };
          $('#container').click(function () {
          });
          container.onclick = null;
        }
      });
    }
  },
  phim_media: function () {
    if (this.url.startWith('http://www.phim.media/')) {
      var links = document.querySelectorAll('a[href^="http://coin2017.com"]');
      for (var i in links) {
        var link = links[i];
        var href = link.getAttribute('href');
        href = href.match('utm_id=.*') [0].replace('utm_id=', '');
        if (href) {
          link.setAttribute('href', href);
        }
      }
      ABPVN.cTitle();
    }
  },
  _2idol_tv: function () {
    if ((this.url.startWith('http://2idol.tv/post/') || this.url.startWith('http://video.2idol.tv/post-video/')) && navigator.userAgent.match(/Firefox/i) != null) {
      Logger.info('Fix 2idol.tv player on Firefox');
      ABPVN.cTitle();
      document.querySelector('#vod').setAttribute('id', 'abpvn_fixed');
      window.addEventListener('DOMContentLoaded', function () {
        var scriptText = this.getAllText('script');
        var file = scriptText.match(/https:\/\/www\.youtube\.com\/watch\?v=[\w-]+/i) [0];
        var style_url = URL.createObjectURL(new Blob(['.jwlogo {width: 50px; height: 50px; opacity: 0.7 !important;a}'], {
          type: 'text/css'
        }));
        this.loadCss(style_url, 'fix_logo');
        if (file) {
          jwplayer('abpvn_fixed').setup({
            volume: '100',
            menu: 'true',
            allowscriptaccess: 'always',
            wmode: 'opaque',
            file: file,
            //file: "SampleVideo_1280x720_1mb.mp4",		
            image: '',
            width: '663',
            height: '366',
            autostart: 'true',
            primary: 'html5',
            skin: 'http://' + location.hostname + '/public/player/jwplayer/bekle/bekle.xml',
            logo: {
              file: 'http://abpvn.com/icon.png',
              link: 'http://abpvn.com/',
              width: 30,
              height: 30,
              position: 'top-right'
            }
          });
        }
      }.bind(this));
    }
  },
  removeRedir(config) {
    if (this.url.startWith(config.url)) {
      ABPVN.cTitle();
      var links = document.querySelectorAll('a[href^="' + config.replace + '"]');
      Logger.info('Remove Redirect for ' + links.length + ' links');
      if (links.length) {
        links.forEach(function (item) {
          var stockUrl = item.getAttribute('href').replace(config.replace, '');
          var count = 0;
          while (stockUrl.indexOf('%2') > - 1 && count < 5) {
            stockUrl = decodeURIComponent(stockUrl);
            count++;
          }
          item.setAttribute('href', stockUrl);
        }.bind(this));
      }
    }
  },
  removeRedirect() {
    var configs = [
      {
        url: 'https://samsungvn.com',
        replace: 'https://samsungvn.com/xfa-interstitial/redirect?url=',
      },
      {
        url: 'https://forum.vietdesigner.net',
        replace: 'redirect/?url='
      },
      {
        url: 'http://sinhvienit.net',
        replace: 'http://sinhvienit.net/goto/?'
      },
      {
        url: 'http://phanmemaz.com/',
        replace: 'http://phanmemaz.com/wp-content/plugins/tm-wordpress-redirection/l.php?'
      }
    ];
    configs.forEach(function (config) {
      this.removeRedir(config);
    }.bind(this));
  },
  init: function () {
    this.url = location.href;
    this.talktv_vn();
    this.tv_zing_vn();
    this.hamtruyen_vn();
    this.removeRedirect();
    this._2idol_tv();
    this.phim_media();
  }
};
//Main class
var ABPVN = {
  getCookie: function (cookie_name) {
    var value = '; ' + document.cookie;
    var parts = value.split('; ' + cookiename + '=');
    if (parts.length == 2) return parts.pop().split(';').shift();
  },
  cTitle: function () {
    if (document.title.indexOf(' - Fixed by ABPVN.COM') == - 1) {
      document.title = document.title + ' - Fixed by ABPVN.COM';
    }
  },
  blockPopUp: function () {
    var listSite = [
      'http://blogtruyen.com',
      'http://www.khosachnoi.net',
      'http://hamtruyen.vn/',
      'http://phim14.net/',
      'http://phim7.com/',
      'http://www.diendan.trentroiduoidat.com/',
      'http://www.trentroiduoidat.com/',
      'http://chophanthiet.us',
      'http://anime47.com/',
      'http://animetvn.com',
      'http://font.vn',
      'https://vidoza.net/',
	  'http://www.easysoft.xyz'
    ];
    for (var i = 0; i < listSite.length; i++) {
      if (this.url.startWith(listSite[i])) {
        this.cTitle();
        console.info('ABPVN: Đã chặn popup quảng cáo');
        document.body.onclick = null;
        document.onclick = null;
        window.addEventListener('load', function () {
          setTimeout(function () {
            document.onclick = null;
            document.body.onclick = null;
          }, 300);
        });
      }
    }
  },
  init: function () {
    this.url = location.href;
    this.blockPopUp();
    //Init class getLink
    getLink.init();
    //Init class Fixsite
    fixSite.init();
    //console.info('ABVPN init finish for: '+this.url);
    byPass.init();
  }
};
//RUN INNIT
ABPVN.init();