// ==UserScript== // @name 雪球助手 // @namespace http://tampermonkey.net/ // @version 1.3 // @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 stockRegList = [ // 港股证券 /^\d{5}$/, // 深市证券 /^SZ(00|01|02|20|30)\d{4}$/, // 沪市证券 /^SH(600|601|900)\d{3}$/ ] var regList = [ // 深市基金 /^SZ(15|16)\d{4}$/, // 深市指数 // 深证综指,理性仁深圳A股 /^SZ399106$/, /^SZ39\d{4}$/, // 沪市基金 /^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 isStockCode(code) { for (var i = 0; i < stockRegList.length; i += 1) { if (stockRegList[i].test(code)) { return true } } return false } function getLixingrenStockPageUrl(code) { var stockCode = normalizeCode(code) // 美股不支持 if (!stockCode) return '' var matchList = stockRegList.concat(regList) for (var i = 0; i < matchList.length; i += 1) { if (matchList[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) }) /** * 个股主页跳转到同花顺F10 */ var xqCode = location.pathname.replace('/S/', '') if (isStockCode(xqCode)) { var links = $('#app .stock-links') var code = xqCode.length === 5 ? parseInt(xqCode) : xqCode.replace(/SH|SZ/, '') var configList if (xqCode.length === 5) { configList = [["最新动态","/HK{0}/"],["公司概况","/HK{0}/company.html"],["股本结构","/HK{0}/equity.html"],["业务展望","/HK{0}/business.html"],["分红派息","/HK{0}/bonus.html"],["高管介绍","/HK{0}/manager.html"],["行业对比","/HK{0}/field.html"],["公司新闻","/HK{0}/news.html"],["财务分析","/HK{0}/finance.html"],["股东持股","/HK{0}/holder.html"],["经营分析","/HK{0}/operate.html"],["关联权证","/HK{0}/warrant.html"],["投资评级","/HK{0}/rating.html"],["中港对比","/HK{0}/ahcontrast.html"]] } else { configList = [["最新动态","/{0}/"],["公司资料","/{0}/company.html"],["股东研究","/{0}/holder.html"],[" 经营分析","/{0}/operate.html"],["股本结构","/{0}/equity.html"],[" 资本运作","/{0}/capital.html"],["盈利预测","/{0}/worth.html"],["新闻公告","/{0}/news.html"],["概念题材","/{0}/concept.html"],["主力持仓","/{0}/position.html"],[" 财务概况","/{0}/finance.html"],["分红融资","/{0}/bonus.html"],["公司大事","/{0}/event.html"],["行业对比","/{0}/field.html"]] } links.html('
同花顺F10
' ) } 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) } })()