Skip to content

Instantly share code, notes, and snippets.

@berlysia
Last active January 1, 2016 09:39
Show Gist options
  • Save berlysia/8126212 to your computer and use it in GitHub Desktop.
Save berlysia/8126212 to your computer and use it in GitHub Desktop.
ミリオンライブのバザーにチャンネル選択リンクを追加するuser.js
// ==UserScript==
// @name imas_ml_bazaarutil
// @namespace http://twitter.com/berlysia
// @include http://imas.gree-apps.net/app/index.php/bazaar*
// @run-at document-end
// @version 1.0.0.0
// ==/UserScript==
/*
index
メインページ
top_exhibit
出品メニュー
top_confirm
確認メニュー
search_list
一覧表示
search_wantlist
ほしいもの一覧からの検索ページ
search_usercard
所有カードからの検索ページ
search_idol
アイドル一覧からの検索ページ
search_detail
出品情報
trade_history
成立履歴 noによるサーバー指定が無効
from 必須
top
search
detail
wantlist
type 必須
1,2
アイドル検索なら1、アイテム検索なら2
id
取引ID 取引履歴を見るときは必須
mci
カード固有ID、通し番号
no
0-3
バザーチャンネル番号
box_type
1,2
1は出品検索、2は希望品検索
item
0,1,3
アイテム出品検索(全て、スパークドリンク、バトルキャンディ)
item_num_from
アイテム個数指定下限値
item_num_to
アイテム個数指定上限値
idol
アイドル固有番号
attribute
0
他はエラーにならないが結果が得られない
rarity
0-5
指定なし、N、HN、R、HR、SR
page
1-
hope_type
card
item
money
空なら指定なし
*/
(function(){
// ['index','top_exhibit','top_confirm','search_list','search_wantlist','search_usercard','search_idol','search_detail','trade_history']
var filterForChannel = ['index','top_exhibit','top_confirm','search_wantlist','search_usercard','search_detail']
var filterForChannelMethod = 'deny';
var filterManager = function(list,method,viewtype){
switch(method){
case 'deny':
return list.indexOf(viewtype)<0;
case 'allow':
return list.indexOf(viewtype)>=0;
default:
return false;
}
}
var lh = location.href;
var _d = document;
var qS = function(q,d){d = d || _d; return d.querySelector(q)};
var qSA = function(q,d){d = d || _d; return d.querySelectorAll(q)};
var clone = function(obj){
var foo = function(){};
foo.prototype = obj;
return new foo;
};
var base = "http://imas.gree-apps.net/app/index.php/bazaar";
var keyorder = ['from','type','id','mci','no','box_type','item','item_num_from','item_num_to','idol','attribute','rarity','page','hope_type'];
var arr = (function(arr){return arr.slice(arr.indexOf('bazaar')+1);})(lh.split('/'));
var viewtype = arr.shift() || 'index';
var params = (function(arr){
var obj = {};
for (var i = 0; i < arr.length; i++) {
obj[arr[i]] = arr[++i];
};
return obj;
})(arr);
// 現在のパラメータからいい感じにurl生成
var urlFactory = function(obj,edit){
obj = clone(obj);
for(key in edit) obj[key] = edit[key].toString();
var urlparams = '/'+viewtype+'/';
for(var i=0;i<keyorder.length;i++) if(!(typeof obj[keyorder[i]] === 'undefined')) urlparams += keyorder[i]+'/'+obj[keyorder[i]]+'/';
return urlparams;
}
// バザーサーバーのチャンネル指定リンク
var channelNavigator = function(){
var div = _d.createElement('div');
div.className = 'pager-bottom row';
var ul = _d.createElement('ul');
ul.className = 'clearfix';
var lifactory = function(str){
var li = _d.createElement('li');
var a = _d.createElement('a');
a.href = base + urlFactory(params,{no:str});
a.appendChild(_d.createTextNode(str));
li.appendChild(a);
return li;
}
for(var i=0;i<=3;i++){
if(i.toString()!==params.no){
ul.appendChild(lifactory(i.toString()));
}else{
var li = _d.createElement('li');
li.className = 'selected';
li.appendChild(_d.createTextNode(i.toString()));
ul.appendChild(li);
}
}
div.appendChild(ul);
return div;
};
/**
表示部
*/
if(filterManager(filterForChannel,filterForChannelMethod,viewtype)){
var line = _d.createElement('div');
line.className = 'line-s1';
var target = qS('div.heading.cap-01');
var parent = qS('.main-bg');
parent.insertBefore(line,target.nextSibling);
parent.insertBefore(channelNavigator(),target.nextSibling);
}
return;
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment