// ==UserScript==
// @name maddawgjav.net排版脚本
// @namespace http://gf.qytechs.cn/zh-CN/users/25794
// @version 1.2.6
// @description maddawgjav.net网站重新排版,浏览图片内容更方便,你懂的
// @author Hobby
// @require http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.4.min.js
// @include http://www.imagebam.com/image/*?url=maddawgjav.net
// @match http://maddawgjav.net/*
// @grant GM_xmlhttpRequest
// 交流QQ群:273406036
// 内地用户推荐Chrome + XX-Net(代理) + Proxy SwitchyOmega(扩展)的环境下配合使用。
// v1.2.6 增加脚本适应兼容性,解决目前发现脚本失效问题
// v1.2.5 修复了部分页面出现异常导致插件失效问题
// v1.2.4 修改了网站代码更新导致插件失效的问题
// v1.2.3 做了最低分辨率1280x800的排版适配调整,及修复发现的bug
// v1.2.2 增加放大图片后关闭内容大图,自动定位到下一个帖子的封面大图上,增加自动一次性批量加载页面所有内容大图。
// v1.2.1 做了一些细节排版调整和优化
// v1.2.0 修改内容大图显示加载方式,当点击内容大图时才实时加载并显示出大图。
// v1.1.0 性能优化,加载速度大幅提升。
// v1.0.0 针对maddawgjav.net网站的支持,支持方便浏览图片
// ==/UserScript==
/* jshint -W097 */
'use strict';
// 获取全域名
function getHostName(url) {
var e = new RegExp('^(?:(?:https?|ftp):)/*(?:[^@]+@)?([^:/#]+)'), matches = e.exec(url);
return matches ? matches[1] : url;
}
// 获取后缀域名
function getLastName(webName) {
var array = webName.split(".");
if(array.length === 3){
var a = webName.indexOf('.');
var lastName = webName.substring(a + 1, webName.length);
return lastName;
}
else if(array.length === 2){
return webName;
}
}
//添加 CSS 样式
function addGlobalStyle(css) {
var head, style;
head = document.getElementsByTagName('head')[0];
if (!head) { return; }
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = css;
head.appendChild(style);
}
//addGlobalStyle('p { font-size: large ! important; }');
function urlfilename(a) {
var n1 = a.lastIndexOf('/') + 1;
var n2 = a.lastIndexOf('.');
a = a.substring(n1, n2);
return a;
}
function urljpgid(a) {
var n1 = a.lastIndexOf('/');
var n2 = a.lastIndexOf('/')-9;
a = a.substring(n1, n2);
return a;
}
function showImg2(i){
url = i.src;
width = 1280;
height = 2691;
var imgid = Math.random(),
frameid = 'frameimg' + imgid;
unsafeWindow['img'+imgid] = '<img id="img" src=\''+url+'?hobby\' />' +
'<script>window.onload = function() {' +
' parent.document.getElementById(\''+frameid+'\').height = document.getElementById(\'img\').height+\'px\'; ' +
' parent.document.getElementById(\''+frameid+'\').width = document.getElementById(\'img\').width+\'px\'; ' +
'}<'+'/script>';
img_r = '<iframe id="'+frameid+'" src="javascript:parent[\'img'+imgid+'\'];" width="'+width+'" height="' +height+ '" frameBorder="0" scrolling="no" border="0" marginwidth="0" marginheight="0"></iframe>';
$(i).replaceWith(img_r);
}
//删除帖子的第一张缩略图
//param i:指定图片集合
function delTOneImg(array){
//帖子第一张主题图片集合
var img_t_array = array;
//帖子的第一张缩略图删除
for (var index = 0; index < img_t_array.length; index++) {
var img_t = img_t_array[index];
//debugger;
//主题图片靠左排版
$(img_t).css('float','left');
//帖子的第一张缩略图删除
try{
$(img_t.nextElementSibling.nextElementSibling).remove();
}catch(e){}
}
}
//debugger;
var location = unsafeWindow.document.location;
//子级iframe判断是否约定的Url
if(typeof(location)!== "undefined" && location.href.indexOf('?url=maddawgjav.net') > -1){
var jpg_id = urljpgid(location.pathname);
var $jpg_id = $("#i"+jpg_id);
var img_src = $jpg_id.attr("src");
var img_pEle = $jpg_id[0].parentElement;
//$jpg_id.remove();
//debugger;
$jpg_id.attr("src","http://maddawgjav.net/wp-content/themes/zbench.1.2.3/zbench/images/search-input-bg.gif");
var $iframe = $(document.createElement("IFRAME"));
$iframe.attr("width", "0");
$iframe.attr("height", "0");
//将问号后的.转换成%% 然后载入iframe的地址
$iframe.attr("src", "http://maddawgjav.net/wp-login.php?"+img_src.replace(/\./g,"%%"));
$(img_pEle).append($iframe);
}
//子级iframe的子级iframe判断是否约定的Url
else if(typeof(location)!== "undefined" && location.href.indexOf('maddawgjav.net/wp-login.php') > -1){
var jpg_id = urljpgid(location.search);
var av_cd =$('#href'+jpg_id, window.parent.parent.document).get(0).parentElement.avcd;
var av_name = $('#href'+jpg_id, window.parent.parent.document).get(0).parentElement.av_name;
var href = location.search.substring(1,location.search.length).replace(/\%\%/g,".");
$('#img'+jpg_id, window.parent.parent.document).attr("src",href );//"http://imagetwist.com/error.jpg?" + + '??$@' + av_cd + "?$@" + av_name
var $hobbyimgN = $($('#href'+jpg_id, window.parent.parent.document).get(0).firstElementChild);
//debugger;
//$hobbyimgN.src = href;
$iframe = $('#iframe'+jpg_id, window.parent.parent.document);
$iframe.attr("src", "");//释放资源
//$iframe.attr("src", "http://maddawgjav.net/wp-content/themes/zbench.1.2.3/zbench/images/search-input-bg.gif?" + href);
}
else{
//debugger;
$("#sidebar-border").insertBefore("#content");
$("#sidebar-border").css('position','absolute');
//覆盖原有css样式
addGlobalStyle('#wrapper {overflow: hidden;margin: 0;width: initial;}');
addGlobalStyle('#sidebar-border {position: relative;float: left;width: 220px;background: #f2f2f2;border: 1px solid #ccc;}');
addGlobalStyle('#sidebar {overflow: hidden;width: 220px;border: 1px solid #fff;padding: 0px;}');
addGlobalStyle('#content {overflow: hidden;float: left;width: initial;padding: 0;margin-left: 223px;}');
addGlobalStyle('.entry img {height: auto;margin: auto;padding: 4px;background: #fff;border: 1px solid #ddd;}');
//删除帖子的第一张缩略图
delTOneImg($("img[class='alignnone']"));
delTOneImg($("img[class='alignnone aligncenter']"));
//所有div帖子
var div_tz_array = $("div[id^='post-']");
for (var index = 0; index < div_tz_array.length; index++) {
var div = div_tz_array[index];
$(div).css('width','initial');
//debugger;
//$(div).find("h2 a").attr("name",div.id);
$(div).find("img[class='alignnone']").parent("p[style='text-align: center;']").attr("id","h-"+div.id);
$(div).find("img[class='alignnone aligncenter']").attr("id","h-"+div.id);
//div.id = "";
}
//所有p标签的文字
var p_tz_array = $("p[style='text-align: center']");
var p_tz_array_2 = $("p[style='text-align: center;']");
//debugger;
for (var index = 0; index < p_tz_array.length; index++) {
var p = p_tz_array[index];
$(p).css('text-align','left');
}
for (var index = 0; index < p_tz_array_2.length; index++) {
var p2 = p_tz_array_2[index];
$(p2).css('text-align','left');
}
//所有p标签内图片
var img_array = $("p[style='text-align: left;'] img");
for (var index = 0; index < img_array.length; index++) {
//TODO:foreach:2
var img = img_array[index];
var web_name = getHostName(img.src);
var lastName = getLastName(web_name);
//img元素没有title属性值时执行
//if(typeof($(img).attr("title")) == "undefined" ){
// $(img).css("width","100px");
//}
$(img).css("max-width","none");
//图片靠左排版
$(img).css('float','left');
//备份width
img.name = "100";
if (lastName === 'imagebam.com') {
//TODO:javbest:imagebam.com
var jpg_name = urlfilename(img.src);
var jpg_id = jpg_name.substring(jpg_name.length-9,jpg_name.length);
var url = 'http://www.imagebam.com/image/' + jpg_name ;// + "??$@" + av_cd + "?$@" + av_name
//img.parentElement.href = url;
img.parentElement.id = "href"+ jpg_id;
img.id = "img"+ jpg_id;
$(img.parentElement).attr("name",url);
$(img.parentElement).removeAttr("href");
//$(img.parentElement).click( function () {
//debugger;
//});
}
else if(lastName === 'pixhost.org'){
img.src = img.src.replace('thumbs','images').replace('t7','img7');
showImg2(img);
}
}
//所有内容大图
var dimg_array = $("p[style='text-align: left;'] a img");
for (var index = 0; index < dimg_array.length; index++) {
var dimg = dimg_array[index];
var div = $(dimg).parents('.entry')[0];
//display: table-cell;
//display: table-caption;
//debugger;
$(div).append(dimg.parentElement);
}
//实现判断N个图片加载完毕逻辑
var imgdefereds=[];
$("div[class='entry'] a img").each(function(){
var dfd=$.Deferred();
$(this).bind('load',function(){
dfd.resolve();
}).bind('error',function(){
//图片加载错误,加入错误处理
dfd.resolve();
})
if(this.complete) setTimeout(function(){
dfd.resolve();
},500);//500毫秒
imgdefereds.push(dfd);
})
$.when.apply(null,imgdefereds).done(function(){
//加载完毕处理
//所有内容大图
//debugger;
var dimg_array = $("div[class='entry'] a img");
for (var index = 0; index < dimg_array.length; index++) {
var dimg = dimg_array[index];
dimg.name = dimg.width;
//debugger;
GM_xmlhttpRequest({
method: "GET",
url: dimg.parentElement.name,
headers: {
"User-Agent": "Mozilla/5.0", // If not specified, navigator.userAgent will be used.
"Accept": "text/xml" // If not specified, browser defaults will be used.
},
onload: function(response) {
//alert("1111");
var bodyStr = response.responseText;
var new_img_src = bodyStr.substring(bodyStr.indexOf('<meta name="twitter:image" content="') + 36,bodyStr.indexOf('<meta name="twitter:url" content="')-9);
var n1 = new_img_src.lastIndexOf('/');
var n2 = new_img_src.lastIndexOf('/')-9;
var imgId = new_img_src.substring(n1, n2);
var img = document.getElementById('img'+ imgId);
//debugger;
//重新插入img新标签,在原img的后面
img.insertAdjacentHTML('beforeBegin', '<img id="imgN'+ imgId +'" src="'+ new_img_src +'" name="'+ img.name +'" style="width:'+ img.name +'px;max-width: none; float: left;clear:none;">');
//删除原img标签
img.parentNode.removeChild(img);
var imgN = document.getElementById('imgN'+ imgId);
//新img标签增加onclick事件
imgN.onclick = function(event){
//debugger;
event = event || window.event;
//屏蔽到外部的onclick事件
event.cancelBubble = true;
//debugger;
//判断如果当前为关闭,需要展开
if(this.style.width !== ''){
this.style.maxWidth = "none";
this.style.width = "";
this.style.clear = "both";
}
//关闭
else{
//chrome浏览器必须使用100px才生效
this.style.width = this.name+"px";
this.style.clear = "none";
//跳到标题的锚点
location.href = "#h-" + this.parentElement.parentElement.parentElement.nextElementSibling.id;
//debugger;
}
};
}
});
}
});
}