// ==UserScript==
// @name Steam买买买
// @namespace https://greasyfork.org/users/471937
// @version 0.6.1
// @description 在软锁区游戏商店页面自动显示widget、社区与愿望单链接
// @author 油油
// @match store.steampowered.com/*
// @grant GM_xmlhttpRequest
// @grant unsafeWindow
// @connect steamdb.info
// @downloadURL none
// ==/UserScript==
window.addEventListener('load', function () {
var url_path = location.pathname.split('/'),
game_id = url_path[url_path.indexOf('app') + 1],
user_id, game_title, game_image,
game_subs, game_bundles, game_dlcs,
steamdb_url = `https://steamdb.info/app/${game_id}/subs/`,
tmp;
// 绑定全局变量
var $ = unsafeWindow.jQuery,
AddToWishlist = unsafeWindow.AddToWishlist
// 分域名处理
switch (url_path[1]) {
case 'widget':
case 'sub': // 不作处理
return
case 'agecheck':
// 自动agegate
tmp = document.getElementsByClassName('agegate_birthday_selector')
if (tmp.length) {
document.getElementById('ageDay').value = 1
document.getElementById('ageMonth').value = 'January'
document.getElementById('ageYear').value = 1901
console.log('test') // 未完成
}
case 'app':
match_user()
if (game_id) anti_lock()
break
}
// 匹配用户主页
function match_user() {
tmp = $('a.user_avatar').attr('href')
if (tmp) user_id = tmp.match(/(id|profiles)\/.+?\//)[0]
}
// 反锁区
function anti_lock() {
tmp = $('#error_box')
if (tmp[0]) {
tmp.html('')// 清除原始内容
// widget iframe
add_frame(`${location.origin}/widget/${game_id}`, tmp)
var img_panel, sub_panel
tmp.append($('
').css({ width: '100%', display: 'flex' })
.append(img_panel = $('
'))
.append(sub_panel = $('
').css({ display: 'flex', 'flex-direction': 'column' }))
)
// 查询按钮
var btn_div = $('
')
tmp.append(btn_div)
add_btn('添加到愿望单', () => {
AddToWishlist(game_id)
var wishlist_url = `/wishlist/${user_id}#sort=dateadded`
if (game_title) wishlist_url += '&term=' + encodeURI(game_title)
window.open(wishlist_url)
}, btn_div)
add_btn('社区中心', `https://steamcommunity.com/app/${game_id}/`, btn_div)
// SteamDB查询信息
query_steamDB(page => {
// 匹配信息
var title = page.find('.pagehead h1'),
icon = page.find('.row.app-row .span4 img'),
sub_tables = page.find('#subs table')
dlc_tables = page.find('#dlc table')
game_title = title.text()
game_image = icon[0]
for (var i = 0; i < sub_tables.length; i++) {// 搜索游戏sub+礼包
var table = sub_tables[i]
switch (table.rows[0].cells[0].innerText.toUpperCase()) {
case 'SUBID': // Sub
game_subs = iter_steamdb_table(table)
break
case 'ID': // Bundle
game_bundles = iter_steamdb_table(table)
break
}
}
if (dlc_tables.length > 0) game_dlcs = iter_steamdb_table(dlc_tables[0]) // 搜索游戏DLC
// 写入信息
if (game_title) $('.pageheader').html(document.title = `买买买: ${game_title}`)
if (game_image) img_panel.append(
$('
').attr('title', 'SteamDB').attr('href', steamdb_url).append(game_image)
)
add_links('Sub列表', game_subs, '/sub/@/', sub_panel)
add_links('DLC列表', game_dlcs, '/app/@/', sub_panel)
add_links('礼包列表', game_bundles, '/bundle/@/', sub_panel)
})
}
}
// 添加按钮
function add_btn(text, action, pool, assign = {}) {
var btn = $('').append($('').append(text))
.addClass('btnv6_blue_blue_innerfade btn_medium')
.attr(assign)
pool.append(btn)
if (typeof action == 'function') btn.on('click', action)
else btn.attr('href', action)
}
// 添加iframe
function add_frame(url, pool) {
var loader
pool.append(
loader = $('