Greasy Fork

Shined up real nice.

Greasy Fork is available in English.

pixiv_sk

pixivの検索結果をフィルタリングしソートします。

このスクリプトを使ってみて、質問、レビュー、問題の報告 をすることできます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// ==UserScript==
// @name           pixiv_sk
// @namespace      http://alexam.hateblo.jp/
// @author         shikato
// @description    pixivの検索結果をフィルタリングしソートします。
// @version        2.0.0
// @include        https://www.pixiv.net/search.php*
// @include        https://www.pixiv.net/tags.php*
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
// ==/UserScript==


/** 設定値 ここから **/

// 作品のブックマーク数が以下の値未満の場合は表示しない
var FAV_FILTER = 3;
// リンクを別のタブで開くかどうか true / false
var IS_LINK_BLANK = true; 

/** 設定値 ここまで **/ 


var getFav = function (target) { 
  var favText = target.children('figure').children('figcaption').children('ul').children('li:lt(3)').children('ul').children('li').children('a').text(); 
  if (favText === '') {
    return 0;
  } else { 
    return parseInt(favText);
  }
};

// 作品をフィルタリングしてソートしてHTML(文字列)を返す
var filterAndSort = function () {
  var works = []; 

  // FAV_FILTERでフィルタリング
  $('._2xrGgcY').children('._7IVJuWZ').each(function() { 
    var fav = getFav($(this)); 
    if (fav >= FAV_FILTER) { 
      // blank機能がonの場合 target属性追加
      if (!IS_LINK_BLANK) {
        return;
      }
      $(this).children('figure').children('div').children('a').attr('target', 'blank').attr('rel', '');
      works.push($(this));
    }
  });

  // ソート 
  works.sort(function (a, b) {
    var favA = getFav(a); 
    var favB = getFav(b); 
    if (favA > favB) {
      return -1;
    }
    if (favA < favB) {
      return 1;
    }
    return 0;
  }); 

  var results = ''; 
  works.forEach(function (work) {
    results += $('<div>').append(work).html();
  }); 

  return results;
}; 

var pisivSkInterval = setInterval(function () {
  if ($('._2xrGgcY').length) { 
    var sortedWorks = filterAndSort(); 
    $('._2xrGgcY').empty().append(sortedWorks).show(); 
    clearInterval(pisivSkInterval); 
  }
}, 5);