Greasy Fork is available in English.

iF 视频去广告

iF 视频 (原多瑙) 网站去广告

Ekde 2021/01/25. Vidu La ĝisdata versio.

// ==UserScript==
// @namespace   moe.jixun.dn-noad

// @name        iF 视频去广告
// @description iF 视频 (原多瑙) 网站去广告

// @name:en        iFVOD no AD
// @description:en Remove AD on iFVOD (aka dnvod)

// @match       https://*.ifvod.tv/*
// @grant       none
// @version     2.0.6
// @author      Jixun Moe<https://jixun.moe/>
// @license     BSD-3-Clause
// @supportURL  https://jixun.moe/post/ifun-noad#comments
// @homepageURL https://jixun.moe/post/ifun-noad
// @compatible  Chrome   ViolentMonkey
// @run-at      document-start
// ==/UserScript==

//// Injection Parameter ////
const __DEBUG__ = false;
const id = 'jixun: have fun :D';
const CHUNK_MAIN = 3;

const M = {
  Avatar:            'UnVO',
  InitUser:          'T1Vy',
  PermissionManager: 'xMFu',
  StoreState:        'AytR',
};
//// Injection Parameter ////


const s = document.createElement('style');
s.textContent = `

.cloppe {
  display: block !important;
}

.video-box {
  height: unset!important;
}

.danmu-center {
  min-height: 1005px !important;
  max-width: 300px !important;
}

app-gg-block, app-gg-block.d-block, .overlay-logo
{
  display: none !important;
}

.video-player, #main-player {
  width: 100% !important;
  height: 170% !important;
  background: transparent !important;
}

`;
const addStyle = () => document.head.appendChild(s);

const always = v => ({
  get: () => v,
  set: () => {},
});

function generateIp() {
  const invoke = x => x();
  const v = () => (Math.random() * 255) | 0;
  return [v, v, v, v].map(invoke).join('.')
}

(window.webpackJsonp = window.webpackJsonp || []).push([
  [/* iF-vod 去广告 */],
  {
    [id]: function (module, exports, require) {
      addStyle();
      const idx = webpackJsonp.findIndex(x => x[1][id]);
      webpackJsonp.splice(idx, 1);
      const fakeIp = generateIp();

      const {a: PermissionManager} = require(M.PermissionManager);
      PermissionManager.prototype.isValid = () => true;

      const {a: StoreState} = require(M.StoreState);
      Object.defineProperty(StoreState, 'allVip', always(true));
      Object.defineProperty(StoreState, 'hideAds', always(true));
      Object.defineProperty(StoreState, 'disableNotify', always(true));

      const {a: Avatar} = require(M.Avatar);
      
      function updateUser(user) {
        Object.defineProperty(user, 'userName', always('某用户'));
        Object.defineProperty(user, 'nickName', always('某用户'));
        Object.defineProperty(user, 'endDays', always(1));
        Object.defineProperty(user, 'vipImage', always('jixun:normal-vip.png'));
        Object.defineProperty(user, 'sex', always(9));
        Object.defineProperty(user, 'nickName', always(''));
        Object.defineProperty(user, 'experience', always(0));
        Object.defineProperty(user, 'gold', always(0));
        Object.defineProperty(user, 'nextLevel', always(99));

        Object.defineProperty(user, 'lastIP', always(fakeIp));
        Object.defineProperty(user, 'from', always('地球'));
        Object.defineProperty(user, 'headImage', always(Avatar.defaultAvatar));
      }

      
      const {a: InitUser} = require(M.InitUser);
      const { fromValidateToken, fromGetAuthorizedUserInfo } = InitUser.prototype;

      InitUser.prototype.fromValidateToken = function (user) {
        updateUser(user);
        return fromValidateToken.apply(this, arguments);
      };

      InitUser.prototype.fromGetAuthorizedUserInfo = function (user) {
        updateUser(user);
        return fromGetAuthorizedUserInfo.apply(this, arguments);
      };      

      if (__DEBUG__) {
        window.__require__ = require;
      }
    },
  },
  [[id, CHUNK_MAIN]]
]);