您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Search Obsidian while searching on Google and display the results on the right side of the page.
- // ==UserScript==
- // @name Google Search with Obsidian
- // @namespace http://tampermonkey.net/
- // @version 0.1
- // @description Search Obsidian while searching on Google and display the results on the right side of the page.
- // @author maidong
- // @match https://www.google.com.hk/*
- // @match https://www.google.com/*
- // @grant GM_log
- // @license MIT
- // @require https://code.jquery.com/jquery-3.6.0.min.js
- // ==/UserScript==
- (function($) {
- 'use strict';
- // http server endpoint, start based with obsidian-vault directory
- var local_static_file_server="http://localhost:17890/"
- var omnisearch_server="http://127.0.0.1:51361/"
- var max_search_resut=10
- // Function to call the Obsidian search API
- function searchObsidian(keyword) {
- // Make an HTTP request to the Obsidian search API
- // Replace the authorization token and API endpoint with your own
- $.ajax({
- url: omnisearch_server+'search?q=' + encodeURIComponent(keyword),
- headers: {
- 'Content-Type': 'application/json'
- },
- success: function(data) {
- // Process the response and display the results on the right side of the page
- displayResults(data);
- },
- error: function(error) {
- GM_log('Error calling Obsidian search API: ' + error);
- }
- });
- }
- // Function to display the search results
- function displayResults(results) {
- // Remove any existing search results
- $('#obsidian-results').remove();
- // Create a container for the search results
- var container = $('<div>').attr('id', 'obsidian-results')
- .css({'position': 'fixed',
- 'top': '135px',
- 'right': '0',
- 'padding': '10px',
- 'height': '1160px',
- 'width': '500px',
- 'background-color': '#fff',
- 'box-shadow': '0 2px 4px rgba(0, 0, 0, 0.1)',
- 'padding': '16px',
- 'z-index': '9999'
- });
- // Create an iframe to render the search results
- var iframe = $('<iframe>').attr('srcdoc', getIframeContent(results))
- .css({'width': '100%', 'height': '100%', 'border': 'none'});
- container.append(iframe);
- $('body').append(container);
- }
- // Function to generate the HTML content for the iframe
- function getIframeContent(results) {
- var html = "<html><head><style>body {padding:0;margin:0;background:0 0;font-family:system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji'}</style></head><body>";
- var count = 0;
- // Loop through the search results and create a result element for each
- $.each(results, function(index, result) {
- if (count >= max_search_resut) {
- return false;
- }
- html += '<div style="margin-bottom: 16px;">';
- html += '<h3 style="font-size: 18px; margin-bottom: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">';
- html += '<a target="_blank" href="' +local_static_file_server+ result.path + '">' + result.basename + '</a></h3>';
- var excerpt = result.excerpt.length > 100 ? result.excerpt.substring(0, 100) + '...' : result.excerpt;
- html += '<span style="font-size: 14px; color: #70757a; display: block; margin-bottom: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">';
- html += excerpt + '</span>';
- html += '</div>';
- count++;
- });
- html += '</body></html>';
- return html;
- }
- // Get the keyword from the URL parameters
- var urlParams = new URLSearchParams(window.location.search);
- var keyword = urlParams.get('q');
- // Call the Obsidian search API
- searchObsidian(keyword);
- })(jQuery);