tradingview chart assistant

insert a link go finviz chart link

// ==UserScript==
// @name         tradingview chart assistant
// @namespace    http://tampermonkey.net/
// @version      2024-09-25.3
// @description  insert a link go finviz chart link
// @author       goodzhuwang
// @match        https://*.tradingview.com/chart/*/?symbol=*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @license      MIT
// ==/UserScript==

function findElementsByClassRegex(classNameRegex) {
  const selector = `*[class*="${classNameRegex.source}"]`;
  return document.querySelectorAll(selector);
}

(function () {
  "use strict";

  const ext_name = "tradingview_chart_assistant";

  console.debug(`${ext_name} running`);

  let max_times = 10;
  let times = 0;
  let _interval = setInterval(function () {
    // 达到最大次数,就算了。
    if (times >= max_times) {
      console.debug(`${ext_name}达到最大检测次数,算了`);
      if (_interval) {
        clearInterval(_interval);
        _interval = null;
      }
    }
    let symbol = document.querySelector(".js-button-text")?.textContent;
    if (!symbol) {
      console.debug(`没有找到股票代码`);
      return;
    }

    // 在特定的的位置插入一个a
    const targets = findElementsByClassRegex(/filler-/);
    const domElement = targets && targets.length && targets[0];

    if (!domElement) {
      console.debug(`没有找到插入位置`);
    } else {
      let finviz_link_url = `https://finviz.com/quote.ashx?t=${symbol}&ty=c&ta=1&p=d`;

      let finvize_link = document.querySelector("._TCA_finviz-link");
      if (!finvize_link) {
        const aTag = document.createElement("a");
        aTag.href = finviz_link_url;
        aTag.textContent = "F";
        aTag.classList.add("button-I_wb5FjE");
        aTag.classList.add("_TCA_finviz-link");
        aTag.style.cursor = "pointer";
        aTag.title = "点击查看finviz图表";
        aTag.target = "_blank";
        domElement.insertBefore(aTag, domElement.firstChild);
      }
    }

    times++;
  }, 5000);
})();