您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
XamVL Image Gallery and Video Player
// ==UserScript== // @name XamvlMedia // @version 1.0 // @description XamVL Image Gallery and Video Player // @namespace XamVL Media Player // @author Deface // @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.min.js // @resource lazyload-any https://raw.githubusercontent.com/emn178/jquery-lazyload-any/master/src/jquery.lazyload-any.js // @resource masonry https://cdnjs.cloudflare.com/ajax/libs/masonry/3.2.3/masonry.pkgd.min.js // @resource imagesloaded https://cdnjs.cloudflare.com/ajax/libs/jquery.imagesloaded/3.1.8/imagesloaded.min.js // @resource play http://emn178.github.io/jquery-lazyload-any/samples/youtube/play.png // @resource play-hover http://emn178.github.io/jquery-lazyload-any/samples/youtube/play-hover.png // @resource iconURL https://cdn2.iconfinder.com/data/icons/ballicons-2-vol-2/100/picture-48.png // @icon http://i.imgur.com/c6eKIFI.png // @grant GM_getResourceText // @grant GM_getResourceURL // @grant unsafeWindow // @include /^http?://xamvl\.com/.*$/ // @run-at document-end // ==/UserScript== this.$ = this.jQuery = jQuery.noConflict(true); // Do not run on frames or iframes if (window.top !== window.self) { return; } // MAIN document.addEventListener('DOMContentLoaded', function() { ngamgai(); render('youtube'); render('webm'); }); /* / / Scroll down to see the functions. / / */ // Functions ---> function ngamgai() { var withoutLZL = (typeof $('body').attr('data-XamvlMedia') === "undefined"); var findIMG = withoutLZL? $('td[id^="td_post_"] img:not([src^="images/"]):not([src^="/images/"]):not([src^="http://xamvl.com/images/"]):not([src^="http://xamvl.com/images/"])') : $('td[id^="td_post_"] div.XamvlMedia.data-img'); var havePicture = findIMG.length ? 1 : 0; var gallery = { play: [], download: [] }; var page = { play: [], download: [] }; if (!withoutLZL) setTimeout(function() { nginx_lazyload(); }, 500); findIMG.each(function() { var img = withoutLZL ? $(this).attr('src') : $(this).attr('data-src'); var post = $(this).closest('td[id^="td_post_"]').attr('id').replace('td_post_', ''); if (withoutLZL) { $(this).attr('title','Click vào để xem size lớn hơn').attr('alt','Loading...').attr('onload','').addClass('XamvlMedia src'); } if (img.indexOf('attachment.php?attachmentid=') === 0) { img = img.replace('thumb=1', 'thumb=0'); } $(this)[0].outerHTML = '<a class="XamvlMedia onebyone" rel="group" href="' + img + '" post="' + post + '">' + $(this)[0].outerHTML + '</a>'; }); if (havePicture) { var galleryW = 1203; $('head').append('<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.css" type="text/css" media="screen" />'); $('head').append('<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/helpers/jquery.fancybox-thumbs.css" type="text/css" media="screen" />'); $('head').append('<style>a#XamvlMedia, a.XamvlMedia.single {color: #ffffff; cursor: pointer;} a#XamvlMedia {display:block; bottom:5px; right:5px; position: fixed; opacity:0.5; transition: opacity 0.5s;} a#XamvlMedia:hover {opacity:1;} </style>'); $('head').append('<script type="text/javascript">' + GM_getResourceText('masonry') + '</script>'); $('head').append('<script type="text/javascript">' + GM_getResourceText('imagesloaded') + '</script>'); var script; script = '<script type="text/javascript">'; script += 'function refresh_div_gallery() {'; script += 'container = document.querySelector("#gallery");'; script += 'msnry = new Masonry(container, {columnWidth: 300, gutter: 1, itemSelector: ".XamvlMedia.item"});'; script += 'imagesLoaded(container, function() {window.postMessage("XamvlMedia;loaded","http://xamvl.com"); msnry.layout();});'; script += '};'; script += 'function download(from,to) {window.postMessage("XamvlMedia;download;"+from+";"+to+"","http://xamvl.com");};'; script += '</script>'; $('head').append(script); $('body').append('<a id="XamvlMedia" accesskey="a" title="Phím tắt:\n Chrome: Alt+A \n Firefox: Alt+Shift+A"><img src="' + GM_getResourceURL('iconURL') + '" /></a>'); // click vào ảnh trên trang ---> $('a.XamvlMedia.onebyone').fancybox({ 'type': 'image', afterLoad: function() { this.title = '(Ảnh ' + (this.index + 1) + '/' + this.group.length + ') '; this.title += '<a class="XamvlMedia single" href="#" post="' + $(this.element).attr('post') + '"> Đến bài viết.</a> '; $('body').on('click', 'a.XamvlMedia.single', function() { var post = $(this).attr('post'); $.fancybox.close(); $('html,body').animate({ scrollTop: $('table#post' + post).offset().top }); }); }, padding: 0, helpers: { title: { type: 'outside' }, overlay: { css: { 'background': 'rgba(0, 0, 0, 0.9)' } } } }); // <--- click vào ảnh trên trang // Xem ảnh nhanh ---> $('body').on('click', 'a#XamvlMedia', function() { var div_gallery = '<div id="gallery" style="min-width:' + galleryW + 'px; background:#201F25"></div>'; var loading; $.fancybox($(div_gallery), { padding: 0, ooverlay: { css: { 'type': 'html', 'background': 'rgba(0, 0, 0, 0.9)' } }, helpers: { title: { type: 'outside' }, overlay: { css: { 'background': 'rgba(0, 0, 0, 0.9)' } } }, beforeShow: function() { $('.fancybox-inner').css('background', '#201F25'); }, afterShow: function() { loading = 0; update_gallery($('body'), 'append'); this.title = 'test'; // cuộn để lấy thêm ảnh ---> page.play = { nav: $('div.pagenav') }; if (page.play.nav.length) { page.play.back = page.play.next = Number(page.play.nav.find('strong:not(:contains("«")):not(:contains("»"))').html()); page.play.url = page.play.nav.find('a:first').attr('href') + '&page='; $('.fancybox-inner').on('scroll', function() { if (loading === 0) { // scroll up if ($(this).scrollTop() === 0) { if (1) { loadMore(page.play.url + (page.play.next + 1), 'prepend'); page.play.next++; } } // scroll down if ($(this).scrollTop() + $(this).innerHeight() >= this.scrollHeight) { if (page.play.back > 0) { loadMore(page.play.url + (page.play.back - 1), 'append'); page.play.back--; } } } }); } // <--- cuộn để lấy thêm ảnh }, afterClose: function() { gallery.play = []; loading = 0; $.fancybox.hideLoading(); } }); // click vào ảnh trong gallery ---> $('body').on('click', 'a.XamvlMedia.gallery', function() { var post = $(this).attr('post'); var src = $(this).find('img').attr('src'); var inCurrentPage = withoutLZL ? $('a.XamvlMedia.onebyone img').filter('[src="' + src + '"]') : $('div.XamvlMedia.data-img').filter('[data-src="' + src + '"]'); if (inCurrentPage.length) { inCurrentPage.parent().click(); } else { $.fancybox(src, { 'type': 'image', afterLoad: function() { this.title += '<a class="XamvlMedia single" href="http://xamvl.com/showpost.php?p=' + post + '"> Đến bài viết.</a> '; }, padding: 0, helpers: { title: { type: 'outside' }, overlay: { css: { 'background': 'rgba(0, 0, 0, 0.9)' } } } }); } }); // <--- click vào ảnh trong gallery }); // <--- xem ảnh nhanh } window.addEventListener('message', waitLoading, false); function update_gallery(html, type) { var ignoreList = [ 'http://togif.com/wp-content/uploads/2012/04/doggy.gif' ]; var newContent = ''; var store = (type === 'download') ? 'download' : 'play'; html.find(withoutLZL? 'td[id^="td_post_"] img:not([src^="images/"]):not([src^="/images/"]):not([src^="http://xamvl.com/images/"]):not([src^="http://xamvl.com/images/"])' : 'td[id^="td_post_"] div.XamvlMedia.data-img').each(function() { var img = withoutLZL ? $(this).attr('src') : $(this).attr('data-src'); var post = $(this).closest('td[id^="td_post_"]').attr('id').replace('td_post_', ''); if (img.indexOf('attachment.php?attachmentid=') === 0) { img = img.replace('thumb=1', ''); } if (gallery[store].indexOf(img) === -1 && ignoreList.indexOf(img) === -1) { gallery[store][gallery[store].length] = img; newContent = '<div class="XamvlMedia item">' + '<a class="XamvlMedia gallery" href="#" post="' + post + '">' + '<img src="' + img + '" style="width:300px; height:auto; max-width:300px; max-height:1000px;"/></a></div>' + newContent; } }); if (type !== 'download') { if (type === 'prepend') { $('#gallery').prepend(newContent); } else { $('#gallery').append(newContent); } $.fancybox.showLoading(); loading = 1; unsafeWindow.refresh_div_gallery(); } } function loadMore(url, type) { $.fancybox.showLoading(); $.ajax({ type: 'GET', async: type !== 'download', url: url, success: function(html) { update_gallery($(html), type); } }); } function waitLoading(event) { var data = []; data = event.data.split(';'); if (data[0] === 'XamvlMedia') { if (data[1] === 'loaded') { loading = 0; $.fancybox.hideLoading(); } else if (data[1] === 'download') { download(data[2], data[3]); } } } function download(from, to) { page.download = { nav: $('div.pagenav:first'), url: window.location.href }; page.download.url = (page.download.nav.length) ? page.download.nav.find('a:first').attr('href') + '&page=' : page.download.url; $('html').html('<div class="XamvlMedia download"><h2>Đang tạo link ảnh...</h2><img src="https://1.bp.blogspot.com/-hdHnzbTmU-4/U7l9JZVybkI/AAAAAAAAAuM/u5c9SgVF730/s1600/4.png"></div>'); for (i = from; i <= to; i++) { console.log('Getting page: ' + i + '/' + to); loadMore(page.download.url + i, 'download'); } var download_link = ''; for (i = 0; i < gallery.download.length; i++) { download_link += '<li><a target="_blank" href="' + gallery.download[i] + '">' + gallery.download[i] + '</a></li>'; } setTimeout(function() { $('html').html('<div class="XamvlMedia download"><h2>Xong! Dùng IDM hoặc app tương tự để down.<br>Tổng cộng: ' + gallery.download.length + ' ảnh</h2><ul>' + download_link + '</ul></div>'); }, 2000); } } function render(what) { var data = { 'youtube': { 'selector': 'a[href*="youtube.com"], a[href*="youtu.be"]', 'tpl': '<div class="XamvlMedia youtube" style="width:560px; height:315px; margin:5px auto; text-align:center; position:relative;">' + '<div class="lazyload-thumbnail"><!--<div style="with:100%; height:100%; background-image:url(http://img.youtube.com/vi/{yid}/0.jpg); background-repeat:no-repeat; background-attachment:scroll; background-position:center;"></div><span class="play"></span>--></div>' + '<!--<div class="XamvlMedia youtube" style="margin:5px; text-align:center; position:relative;"><iframe width="560" height="315" src="https://www.youtube.com/embed/{yid}?autoplay=1" frameborder="0" allowfullscreen></iframe></div>-->' + '</div><center>{yurl}</center>', 'out': function(str, url) { url = url.replace(/&.*$/, ''); var yid = url.replace(/^.+((watch\?v=)|(youtu.be\/))/i, ''); var isIgnored = (/(\.com|\.be|\/|testtube|html5)+$/i).test(url); var embed = str.replace('{yid}', yid).replace('{yid}', yid); url = '<a href="' + url + '" target="blank">' + url + '</a>'; embed = embed.replace('{yurl}', url); return isIgnored ? url : embed; }, 'afterOut': function() { function load(img) { img.fadeOut(0, function() { img.fadeIn(1000); }); } eval(GM_getResourceText('lazyload-any')); $('.lazyload-thumbnail').lazyload({ load: load }); $('.XamvlMedia.youtube').lazyload({ trigger: 'click' }); $('head').append('<style>.XamvlMedia .play {position: absolute; width: 64px; height: 64px; top: 50%; left: 50%; margin: -32px 0 0 -32px; ' + 'background-image: url(' + GM_getResourceURL('play') + '); -moz-opacity: 0.70; opacity: 0.70; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha"(Opacity=70);}' + '.XamvlMedia.youtube:hover .play {background-image: url(' + GM_getResourceURL('play-hover') + '); -moz-opacity: 1; opacity: 1; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha"(Opacity=100);}' + '</style>'); } }, 'webm': { 'selector': 'a[href*=".webm"]', 'tpl': '<div class="XamvlMedia html5"><div style="cursor:default; font-weight:bold; font-size:25px; color:#2c3e50; margin:5px;">web<div style="display:inline; color:#2980b9;">▶</div>m<div style="display:inline-block; color:#7f8c8d; font-size:10px; margin-left:5px;">hover <br>to play</div></div><!--<video style="display:block; max-width:900px; max-height:600px; margin:5px auto;" src="{url}" controls></video><center><a href="{url}" target="blank">{url}</a></center>--></div>', 'out': function(str, url) { return str.replace(/{url}/g, url); }, 'afterOut': function() { eval(GM_getResourceText('lazyload-any')); $('.XamvlMedia.html5').lazyload({ trigger: 'mouseenter' }); } } }; function rr(url) { url = unescape(url); var redirect = /[?=]http/i; if (redirect.test(url)) { url = url.replace(/^.+[?=]http/i, 'http'); } return url; } $(data[what].selector).each(function(i) { var url = rr($(this).attr('href')); $(this)[0].outerHTML = data[what].out(data[what].tpl, url); }); if (Object.keys(data[what]).indexOf('afterOut') !== -1) data[what].afterOut(); } function nginx_lazyload() { eval(GM_getResourceText('lazyload-any')); $('.XamvlMedia.lzWrapper').lazyload({ threshold: 0, load: function(img) { img.css("opacity",0).animate({opacity:1},500); } }); } // END MAIN
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址