Skip to content

Instantly share code, notes, and snippets.

@ccloli
Last active May 3, 2024 06:37
Show Gist options
  • Save ccloli/fffc1b2383e0ae73a797 to your computer and use it in GitHub Desktop.
Save ccloli/fffc1b2383e0ae73a797 to your computer and use it in GitHub Desktop.
115 Online Player
// ==UserScript==
// @name 115 Online Player
// @version 1.1.1
// @description Play videos from 115 online
// @match http://*.115.com/*
// @match http://*.115.com/*
// @author 8qwe24657913 | 864907600cc
// @run-at document-end
// @grant none
// @updateURL http://ext.ccloli.com/temporary/115-online-player.user.js
// @updateURL https://gist.github.com/ccloli/fffc1b2383e0ae73a797/raw/807e0d26aeac919994d31a7b76ed1b44aca00a38/gistfile1.js
// @downloadURL http://ext.ccloli.com/temporary/115-online-player.user.js
// @downloadURL https://gist.github.com/ccloli/fffc1b2383e0ae73a797/raw/807e0d26aeac919994d31a7b76ed1b44aca00a38/gistfile1.js
// @namespace http://ext.ccloli.com
// ==/UserScript==
// 播放的视频系未转码的原始视频,播放视频需浏览器支持该格式,当浏览器无法播放此视频时会弹出视频下载地址,您可以将地址贴入本地播放器来在线观看,或贴入下载地址下载播放
if (location.search.indexOf("?ct=")) {
var requests = [],
CloudVideo = window.CloudVideo = {
showPanel: function (code, height) {
var dialog_frame = $('<div class="dialog-frame" style="height:' + height + 'px;text-align:center;font-size:100px;">Loading......</div>');
var dialog = new Core.DialogBase({
title: "视频播放",
content: dialog_frame,
width: 640
});
var video;
dialog._Close = dialog.Close;
dialog.Close = function(){
if (video) {
video = video[0];
video.pause(0);
video.setAttribute('onerror', '');
video.setAttribute('src', 'data:video/empty,');
}
this._Close();
};
dialog.Open();
this.getFileUrl(code, function (url) {
video = $('<video class="online-video-player" autoplay="autoplay" controls="controls" width="640" height="' + height + '" onerror="prompt(\'播放失败!可能是不支持的格式或下载断流!\n请尝试复制下载地址并调用本地播放器播放\', this.src)"></video>').attr('src', url).appendTo(dialog_frame.html(''));
});
},
getFileUrl: function (pickcode, callback) {
requests.push([pickcode, callback]);
}
},
frameName = 'CloudVideo_' + new Date().getTime();
$('<iframe>').attr('src', 'http://web.api.115.com/bridge_2.0.html?namespace=CloudVideo&api=jQuery').attr('id', frameName).css({
width: 0,
height: 0,
border: 0,
padding: 0,
margin: 0,
position: 'absolute',
top: '-99999px'
}).one('load', function () {
var urlCache = {};
CloudVideo.getFileUrl = function (pickcode, callback) {
if (urlCache[pickcode]) {
setTimeout(callback, 0, urlCache[pickcode]);
} else {
window.frames[frameName].contentWindow.jQuery.get('http://web.api.115.com/files/download?pickcode=' + pickcode, function (data) {
callback(urlCache[pickcode] = data.file_url);
}, 'json');
}
};
requests.forEach(function (e) {
CloudVideo.getFileUrl(e[0], e[1]);
});
requests = null;
}).appendTo('html');
} else {
$('<style>').text('.show-video-button{font-size:14px;width:40px;height:24px;line-height:24px;text-align:center;background:rgba(255,255,255,0.75);top:20px;left:0px;right:0px;bottom:auto;margin:auto;position:absolute;z-index:999;display:none}li[rel="item"][file_type="1"][file_mode="9"]:hover .show-video-button{display:block}').appendTo('html');
$(document).on('mouseenter', 'li[rel="item"][file_type="1"][file_mode="9"]:not([is_loaded_vbutton="1"])', function () {
var par_element = $(this).attr('is_loaded_vbutton', '1'),
pick_code = par_element.attr('pick_code'),
video_height = function () {
var image = par_element.find('.img-pos img');
return 640 / image.width() * image.height() || 360;
}();
$('<div class="show-video-button">播放</div>').on('click', function () {
parent.CloudVideo.showPanel(pick_code, video_height);
}).appendTo(par_element);
});
}
@Abbassk8806
Copy link

Online us

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment