InstaSynchP Bump Command

Command to bump a video from a user or url

当前为 2014-12-30 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        InstaSynchP Bump Command
// @namespace   InstaSynchP
// @description Command to bump a video from a user or url

// @version     1.0.2
// @author      Zod-
// @source      https://github.com/Zod-/InstaSynchP-Bump-Command
// @license     MIT

// @include     http://*.instasynch.com/*
// @include     http://instasynch.com/*
// @include     http://*.instasync.com/*
// @include     http://instasync.com/*
// @grant       none
// @run-at      document-start

// @require     https://greasyfork.org/scripts/5647-instasynchp-library/code/InstaSynchP%20Library.js
// ==/UserScript==

function Bump(version) {
    "use strict";
    this.version = version;
    this.name = "InstaSynchP Bump Command";
    this.commands = {
        "'bump": {
            'hasArguments': true,
            'type': 'mod',
            'reference': this,
            'description': 'Bumps a video from a user or the url. Position can be specified',
            'callback': this.execute
        }
    };
    this.bumpInfo = undefined;
    this.bumpTo = undefined;
}

Bump.prototype.executeOnce = function () {
    var th = this;
    //bind event for bumping an url
    events.on(th, 'AddVideo', function (vidinfo) {
        //bump the video after it got added
        if (videoInfoEquals(vidinfo.info, th.bumpInfo)) {
            window.global.sendcmd('move', {
                info: vidinfo.info,
                position: th.bumpTo
            });
            th.bumpInfo = undefined;
            th.bumpTo = undefined;
        }
    });

};

Bump.prototype.execute = function (opts) {
    "use strict";
    var th = this,
        user = opts.usernames[0],
        i,
        activeIndex = activeVideoIndex(),
        bumpIndex = -1;
    th.bumpTo = opts.numbers.length > 0 ? opts.numbers[0] : activeVideoIndex() + 1;
    th.bumpInfo = opts.videos[0];

    //return if nothing to bump got found
    if (!user && !th.bumpInfo) {
        addSystemMessage('Nothing found to bump: \'bump [user] [url] [position]');
        return;
    }

    //search the video to be bumped
    for (i = window.playlist.length - 1; i >= 0; i -= 1) {
        if (videoInfoEquals(window.playlist[i].info, th.bumpInfo) ||
            (user && window.playlist[i].addedby.toLowerCase() === user.toLowerCase())) {
            bumpIndex = i;
            break;
        }
    }
    //video not found
    if (bumpIndex === -1) {
        //no link provided
        if (!th.bumpInfo) {
            addSystemMessage("The user didn't add any videos");
        } else {
            //add the video and bump it in the addVideo event
            window.global.sendcmd('add', {
                URL: urlParser.create({videoInfo: th.bumpInfo})
            });
        }
    } else {
        window.global.sendcmd('move', {
            info: window.playlist[bumpIndex].info,
            position: th.bumpTo
        });
        th.bumpTo = undefined;
        th.bumpInfo = undefined;
    }
};

window.plugins = window.plugins || {};
window.plugins.bump = new Bump('1.0.2');