// ==UserScript== // @name 雪球助手 // @namespace http://tampermonkey.net/ // @version 1.2 // @description 愉快地在雪球、理性仁等网站之间玩耍(跳转) // @author 小紫baby // @include /^https:\/\/(xueqiu|www\.lixinger)+\.com.*/ // @grant none // @downloadURL none // ==/UserScript== /*eslint-disable*/ (function () { 'use strict' // GM_xmlhttpRequest({ // url: 'https://www.lixinger.com/api/open/a/fundamental-info', // method: 'POST', // data: JSON.stringify({ // token: 'e050cb27-4338-404c-99db-40c16deade27', // date: '2017-12-26', // stockCodes: ['01918', '01317'], // metrics: ['market_value', 'pe_ttm', 'pb', 'dividend_r'] // }), // headers: {'Content-Type': 'application/json'}, // onload: function(res) { // console.log(res.responseText) // } // }) var hkStockTemplateUrl = 'https://www.lixinger.com/analytics/company/hk/{0}/detail/fundamental/value' var szStockTemplateUrl = 'https://www.lixinger.com/analytics/company/sz/{0}/detail/fundamental/value' var szFundTemplateUrl = 'https://www.lixinger.com/analytics/fund/sz/{0}/detail' var szIndiceTemplateUrl = 'https://www.lixinger.com/analytics/indice/sz/{0}/detail/value' var shStockTemplateUrl = 'https://www.lixinger.com/analytics/company/sh/{0}/detail/fundamental/value' var shFundTemplateUrl = 'https://www.lixinger.com/analytics/fund/sh/{0}/detail' var shIndiceTemplateUrl = 'https://www.lixinger.com/analytics/indice/sh/{0}/detail/value' var regList = [ // 港股证券 /^\d{5}$/, // 深市证券 /^SZ(00|01|02|20|30)\d{4}$/, // 深市基金 /^SZ(15|16)\d{4}$/, // 深市指数 // 深证综指,理性仁深圳A股 /^SZ399106$/, /^SZ39\d{4}$/, // 沪市证券 /^SH(600|601|900)\d{3}$/, // 沪市基金 /^SH(510|512)\d{3}$/, // 沪市指数 // 上证指数,理性仁上海A股 /^SH000001$/, /^SH000\d{3}$/ ] var urlList = [ hkStockTemplateUrl, szStockTemplateUrl, szFundTemplateUrl, 'https://www.lixinger.com/analytics/indice/lxr/1000003/detail/value', szIndiceTemplateUrl, shStockTemplateUrl, shFundTemplateUrl, 'https://www.lixinger.com/analytics/indice/lxr/1000004/detail/value', shIndiceTemplateUrl ] function normalizeCode(code) { return code && code.replace(/[a-z]+/gi, '') } function getLixingrenStockPageUrl(code) { var stockCode = normalizeCode(code) // 美股不支持 if (!stockCode) return '' for (var i = 0; i < regList.length; i += 1) { if (regList[i].test(code)) { return urlList[i].replace('{0}', stockCode) } } return '' } function setHrefAttribute (el, code) { var url = getLixingrenStockPageUrl(code) if (!url) { console.log('不支持的证券代码:' + code) return } el.attr('href', url) } function insertAfter(newNode, referenceNode) { referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling) } if (location.host === 'xueqiu.com') { /** * 主页自选股跳转到理性仁 */ var linkSelector = '#optional tr.sortable a.code' $(document.body).on('click', linkSelector, function(e) { var href = $(this).attr('href') if (href.indexOf('www.lixinger.com') > -1) { return } var code = href.replace('/S/', '') setHrefAttribute($(this), code) }) /** * 兼容旧版主页 */ var oldTitleSelector = 'tr[data-symbol] span.title' var oldSymbolSelector = 'tr[data-symbol] span.subtitle' $(document.body).on('mouseenter', oldTitleSelector, function(e) { var code = $(this).parents('tr[data-symbol]').attr('data-symbol') $(this).parent().attr('href', '/S/' + code) }) $(document.body).on('mouseenter', oldSymbolSelector, function(e) { var code = $(this).parents('tr[data-symbol]').attr('data-symbol') setHrefAttribute($(this).parent(), code) }) /** * 股票页跳转到理性仁 */ var titleSelector = '#app .stock-name' $(titleSelector).eq(0).after('
' + '
') $('.lxr-icon').one('mouseenter', function() { var code = location.pathname.replace('/S/', '') setHrefAttribute($(this), code) }) return } /* * 理性仁相关功能 */ var lxrStockUrlReg = /\/analytics\/company\/(\w+)\/(\d+)\/detail\/fundamental/ if (lxrStockUrlReg.test(location.pathname)) { var timer = setInterval(function() { var nameNode = document.querySelector('.alert.alert-info .stockName') if (!nameNode) { return } clearInterval(timer) var stockInfo = location.pathname.match(lxrStockUrlReg) var market = stockInfo[1] === 'hk' ? '' : stockInfo[1].toUpperCase() var code = stockInfo[2] var xueqiuUrl = 'https://xueqiu.com/S/' + market + code var a = document.createElement('a') a.style.cssText = 'margin-left: 14px; margin-right: 0;' a.innerHTML = '' a.setAttribute('href', xueqiuUrl) a.setAttribute('target', '_blank') insertAfter(a, nameNode) }, 1000) } })()