ツタヤ在庫一括表示
by
hotokediary
2018-11-29 [2018/11/29 12:40:03]
TSUTAYAの店頭在庫検索結果でこれを使うと表示されてる店舗の在庫を一括で取得し結果を表示します 連続取得は巡回速度1/(1+res)[page/s]にしてあるので取得に1秒かかる場合は20件40秒かかります 詳しい使い方の説明は https://1mu.info/texts/tsutayalet/
@@ -1,26 +1,48 @@
/*
- * @title TSUTAYA在庫表示
- * @description TSUTAYAの店頭在庫検索結果でこれを使うと表示されてる店舗の在庫を一括で取得し結果を表示します 巡回速度を1page/sにしてあるので最短20秒かかります
- * @include http://store.tsutaya.co.jp/item/store_search/result.html?
+ * @title ツタヤ在庫一括表示
+ * @description TSUTAYAの店頭在庫検索結果でこれを使うと表示されてる店舗の在庫を一括で取得し結果を表示します 巡回速度1/(0.5+res)[page/s]にしてあるので最短10秒かかります
+ * @include
* @license
- * @require jQuery
+ * @require
*/
-var links = document.links;
-for (var i = 0, n = 0; i < links.length; ++i)
- if (/http:\/\/store\.tsutaya\.co\.jp\/item\/rental_[^\/]+\/\d+\.html\?storeId/.test(links[i].href))
- (function (link, wait) {
- var t = link.parentNode.insertBefore(document.createTextNode("取得中..."), link.nextSibling);
- setTimeout(function () {
- $.ajax({
- type: "GET",
- url: link,
- dataType: "text",
- success: function(data){
- var m = data.match(/<span class="tolShStkInMrk">([^<]+)<\/span>/);
- if (m)
- t.nodeValue = m[1];
- },
- error: function () { t.nodeValue = "取得失敗";}
- });
- }, wait);
- })(links[i], n++ * 1000);
+
+var wait = 500;
+
+if (location.href.indexOf("http://store.tsutaya.co.jp/tsutaya/articleList?")) {
+
+ if (confirm("TSUTAYAのページに移動しますか"))
+ location.href = "http://store.tsutaya.co.jp/";
+
+} else if (window.isGetting) {
+
+ if (confirm("取得を中止しますか"))
+ window.isGetting = false;
+
+} else {
+
+ var links = document.links, storeLinks = [];
+
+ for (var i = 0, link; link = links[i]; ++i)
+ if (/http:\/\/store\.tsutaya\.co\.jp\/item\/rental_[^\/]+\/\d+\.html\?storeId/.test(link.href))
+ storeLinks.push(link);
+
+ window.isGetting = true;
+ (function getStockInfo() {
+ if (window.isGetting && (window.isGetting = storeLinks.length))
+ (function (link) {
+ var t = link.parentNode.insertBefore(document.createTextNode("取得中..."), link.nextSibling);
+ setTimeout(function () {
+ new Ajax.Request(link, {
+ type: "GET",
+ onSuccess: function(data){
+ var m = data.responseText.match(/<span class="tolShStkInMrk">([^<]+)<\/span>/);
+ if (m)
+ t.nodeValue = m[1];
+ },
+ onFailure: function () { t.nodeValue = "取得失敗";},
+ onComplete: getStockInfo
+ });
+ }, wait);
+ })(storeLinks.shift());
+ })();
+}
/*
* @title ツタヤ在庫一括表示
* @description TSUTAYAの店頭在庫検索結果でこれを使うと表示されてる店舗の在庫を一括で取得し結果を表示します 巡回速度1/(0.5+res)[page/s]にしてあるので最短10秒かかります
* @include
* @license
* @require
*/
var wait = 500;
if (location.href.indexOf("http://store.tsutaya.co.jp/tsutaya/articleList?")) {
if (confirm("TSUTAYAのページに移動しますか"))
location.href = "http://store.tsutaya.co.jp/";
} else if (window.isGetting) {
if (confirm("取得を中止しますか"))
window.isGetting = false;
} else {
var links = document.links, storeLinks = [];
for (var i = 0, link; link = links[i]; ++i)
if (/http:\/\/store\.tsutaya\.co\.jp\/item\/rental_[^\/]+\/\d+\.html\?storeId/.test(link.href))
storeLinks.push(link);
window.isGetting = true;
(function getStockInfo() {
if (window.isGetting && (window.isGetting = storeLinks.length))
(function (link) {
var t = link.parentNode.insertBefore(document.createTextNode("取得中..."), link.nextSibling);
setTimeout(function () {
new Ajax.Request(link, {
type: "GET",
onSuccess: function(data){
var m = data.responseText.match(/<span class="tolShStkInMrk">([^<]+)<\/span>/);
if (m)
t.nodeValue = m[1];
},
onFailure: function () { t.nodeValue = "取得失敗";},
onComplete: getStockInfo
});
}, wait);
})(storeLinks.shift());
})();
}
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。