-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgoodreads-giveaway-high-count.user.js
58 lines (47 loc) · 1.87 KB
/
goodreads-giveaway-high-count.user.js
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
// ==UserScript==
// @name Goodreads high count giveaways
// @namespace randomecho.com
// @description Remove First Reads giveaways offering a low number of books
// @include https://www.goodreads.com/giveaway*
// @exclude https://www.goodreads.com/giveaway/show/*
// @grant none
// @copyright 2014-2017 Soon Van
// @author Soon Van - randomecho.com
// @license http://opensource.org/licenses/BSD-3-Clause
// @version 1.4
// ==/UserScript==
var minimumBooks = 10;
function scanGiveawayListings(minimumBooks) {
var listBooks = document.getElementsByClassName('giveawayListItem');
listBooks = Array.prototype.slice.call(listBooks);
for (var i = 0; i < listBooks.length; i++) {
var bookEntry = listBooks[i];
// Drill down to the right side of the entry
var giveawayDetails = bookEntry.querySelectorAll('p.giveawayDetailItem');
giveawayDetailItem = Array.prototype.slice.call(giveawayDetails); // Convert into array
copiesCount = getAvailabilityCount(giveawayDetailItem);
// Hide those with copies less than minimumBooks
if (copiesCount < minimumBooks) {
bookEntry.style.display = 'none';
}
}
}
function getAvailabilityCount(giveawayDetailItem) {
for (var i = 0; i < giveawayDetailItem.length; i++) {
if (giveawayDetailItem[i].innerText.trim().indexOf('Availability:') !== -1) {
var giveawayAvailability = giveawayDetailItem[i].innerText.trim();
giveawayCopies = giveawayAvailability.split('\n');
// Grab the number from the "X copies available" text
return parseInt(giveawayCopies[1].replace(/cop(ies|y)/i, ''), 10);
}
}
}
function readyFire() {
var footerIsLoaded = document.getElementsByClassName('footer');
if (!footerIsLoaded) {
setTimeout(function() {readyFire()}, 1000);
} else {
scanGiveawayListings(minimumBooks);
}
}
window.onload = readyFire();