- // ==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.3
- // @noframes
- // @change-log Update unlock hidden content for multi block
- // @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();
- //ShowALl ContentDiv
- for (var i in contentDiv) {
- 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 i in lockDiv) {
- lockDiv[i].style.display = 'none';
- }
- }
- },
- 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;
- }
- });
- }
- },
- _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();
- }
- };
- //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'
- ];
- 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;
- window.addEventListener('load', function () {
- setTimeout(function () {
- document.body.onclick = null;
- }, 100);
- });
- }
- }
- },
- 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();