This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name MyPixiv | |
// @namespace http://d.hatena.ne.jp/kk6/ | |
// @description Pixiv用おれおれGM | |
// @include http://www.pixiv.net/* | |
// @exclude http://www.pixiv.net/bookmark.php* | |
// ==/UserScript== | |
(function($){ | |
if(document.location.pathname === '/'){ | |
var news = $('.NewsTop > h1, #column-misc > .item > h1'); | |
news.next().hide(); | |
news.click(function () { | |
$(this).next().toggle('fast'); | |
}); | |
} | |
// 作品のブックマークリクエストをpostする関数 | |
function ajax_post_bookmark(){ | |
$.post( | |
'bookmark_add.php', | |
{ | |
'mode': 'add', | |
'tt': $('input[name=tt]').val(), | |
'id': $('input#illust_id').val(), | |
'type': 'illust', | |
'from_sid': '', | |
'restrict': '0', | |
'comment': '', | |
'tag': '', | |
'submit': 'add_bookmark' | |
}, | |
function(data, status){ | |
$("input#add_bm").replaceWith($("<p>ブックマークしました</p>")); | |
} | |
); | |
} | |
// 作品ページにブックマークボタンまたはブックマーク済み文言を表示させる関数 | |
function add_bm_button () { | |
var bookmarked = $('div.bookmark a:first').text(); | |
$('<p>, {"style": "font-size: 50%; font-color: #ccc;" }').append(bookmarked); | |
// ブックマーク済みでなければボタン追加 | |
if (bookmarked !== "ブックマーク済み") { | |
// 作品ページ用の隠しフォーム | |
var add_form = $('<form>', {'action': 'bookmark_add.php', 'method': 'post'}); | |
var add = $('<input>', {'type':'hidden', 'name': 'mode', 'value': 'add'}); | |
var tt = $('<input>', {'type':'hidden', 'name': 'tt', 'value': $('input[name=tt]').val()}); | |
var id = $('<input>', {'type':'hidden', 'name': 'id', 'value': $('input#illust_id').val()}); | |
var type = $('<input>', {'type':'hidden', 'name': 'type', 'value': 'illust'}); | |
var from_sid = $('<input>', {'type':'hidden', 'name': 'from_sid', 'value': ''}); | |
var restrict = $('<input>', {'type':'hidden', 'name': 'restrict', 'value': '0'}); | |
var comment = $('<input>', {'type':'hidden', 'name': 'comment', 'value': ''}); | |
var tag = $('<input>', {'type':'hidden', 'name': 'tag', 'value': ''}); | |
var submit = $('<input>', {'type':'submit', 'name': 'submit', 'value': 'add bookmark', 'id':'add_bm'}); | |
submit.addClass('ui-button'); | |
add_form.append(add, tt, id, type, from_sid, restrict, comment, tag, submit); | |
$('div.works_data > h3').append(add_form); | |
}else{ | |
var bookmarked_text = $("<span>ブックマーク済み</span>").css({"background":"#f7f7ed", "padding":"5px"}); | |
$('div.works_data > h3').before(bookmarked_text); | |
} | |
} | |
// ブックマークボタンをクリックした時に、ページ遷移させずに | |
// ajaxでブックマークに成功したか失敗したかを取得して表示する | |
function is_success_bookmark(){ | |
$('input#add_bm').click(function(){ | |
ajax_post_bookmark(); | |
return false; | |
}); | |
} | |
// ブックマーク済みかどうかを表示する。 | |
function is_bookmarked(selecter){ | |
$(selecter).each(function() { | |
// 作品ページへのアンカーを包むliタグを取得 | |
var li = $(this).closest('li'); | |
$.ajax({ | |
type: 'GET', | |
url: $(this).attr('href'), | |
dataType: 'html', | |
success: function(data) { | |
var bm_flag = $(data).find('div.bookmark a:first').text(); | |
if (bm_flag === "ブックマーク済み"){ | |
li.append($('<span>B!</span>').css('color','blue')); | |
} | |
}, | |
error: function() { | |
li.append($('<span>err</span>').css('color','red')); | |
} | |
}); | |
}); | |
} | |
// ユーザー作品一覧ページもしくはお気に入りユーザー新着一覧ページに | |
// ブックマーク済みかどうかを表示させる | |
function is_bookmarked_controller(evt){ | |
var node = $(evt.target); | |
var anchors; | |
// お気に入りユーザー新着一覧 | |
if(document.location.pathname === '/bookmark_new_illust.php'){ | |
anchors = node.find($("ul.images a:first-child")); | |
is_bookmarked(anchors); | |
} | |
// ユーザー作品一覧 | |
if(document.location.pathname === '/member_illust.php'){ | |
anchors = node.find($(".display_works a:first-child")); | |
is_bookmarked(anchors); | |
} | |
} | |
// 最初のページ用 | |
$(document).bind("ready", function(evt){ | |
is_bookmarked_controller(evt); | |
}); | |
// AutoPagerizeで継ぎ足されたページ用 | |
window.addEventListener("AutoPagerize_DOMNodeInserted", function(evt){ | |
is_bookmarked_controller(evt); | |
}, false); | |
//作品ページにブックマークボタン表示 | |
add_bm_button(); | |
// ブックマークリクエストのレスポンスを受け取ってブクマできたか表示 | |
is_success_bookmark(); | |
})(unsafeWindow.jQuery); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment