new(all): Auto import for logo, colors and website content.
This commit is contained in:
		
							parent
							
								
									4a4a69790e
								
							
						
					
					
						commit
						e052ddc28b
					
				
					 1 changed files with 12 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -52,6 +52,7 @@ import puppeteer, { Page } from 'puppeteer';
 | 
			
		|||
import { RecursiveCharacterTextSplitter } from 'langchain/text_splitter';
 | 
			
		||||
import { Document } from 'langchain/document';
 | 
			
		||||
import getColors from 'get-image-colors';
 | 
			
		||||
import sharp from 'sharp';
 | 
			
		||||
 | 
			
		||||
import {
 | 
			
		||||
  GBDialogStep,
 | 
			
		||||
| 
						 | 
				
			
			@ -905,7 +906,6 @@ export class KBService implements IGBKBService {
 | 
			
		|||
      }
 | 
			
		||||
      const currentDomain = new URL(page.url()).hostname;
 | 
			
		||||
      let links = await page.evaluate(currentDomain => {
 | 
			
		||||
        
 | 
			
		||||
        const anchors = Array.from(document.querySelectorAll('a')).filter(p => {
 | 
			
		||||
          try {
 | 
			
		||||
            return currentDomain == new URL(p.href).hostname;
 | 
			
		||||
| 
						 | 
				
			
			@ -983,7 +983,7 @@ export class KBService implements IGBKBService {
 | 
			
		|||
    return await checkPossibilities(page, possibilities);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  async  getFreshPage(browser, url) {
 | 
			
		||||
  async getFreshPage(browser, url) {
 | 
			
		||||
    try {
 | 
			
		||||
      if (!browser || browser.isConnected() === false) {
 | 
			
		||||
        browser = await puppeteer.launch({ headless: false }); // Change headless to true if you don't want to see the browser window
 | 
			
		||||
| 
						 | 
				
			
			@ -996,7 +996,6 @@ export class KBService implements IGBKBService {
 | 
			
		|||
      throw error;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Import all .docx files in reading comprehension folder.
 | 
			
		||||
| 
						 | 
				
			
			@ -1017,7 +1016,7 @@ export class KBService implements IGBKBService {
 | 
			
		|||
    const website = min.core.getParam<string>(min.instance, 'Website', null);
 | 
			
		||||
 | 
			
		||||
    if (website) {
 | 
			
		||||
      let browser = await puppeteer.launch({ headless: false});
 | 
			
		||||
      let browser = await puppeteer.launch({ headless: false });
 | 
			
		||||
      const page = await this.getFreshPage(browser, website);
 | 
			
		||||
 | 
			
		||||
      const logo = await this.getLogoByPage(page);
 | 
			
		||||
| 
						 | 
				
			
			@ -1027,7 +1026,15 @@ export class KBService implements IGBKBService {
 | 
			
		|||
      const logoBinary = await page.goto(urlJoin(baseUrl, logo));
 | 
			
		||||
      const buffer = await logoBinary.buffer();
 | 
			
		||||
      const logoFilename = Path.basename(logo);
 | 
			
		||||
      Fs.writeFileSync(Path.join(logoPath, logoFilename), buffer);
 | 
			
		||||
      sharp(buffer)
 | 
			
		||||
        .resize({
 | 
			
		||||
          width: 48,
 | 
			
		||||
          height: 48,
 | 
			
		||||
          fit: 'inside', // Resize the image to fit within the specified dimensions
 | 
			
		||||
          withoutEnlargement: true // Don't enlarge the image if its dimensions are already smaller
 | 
			
		||||
        })
 | 
			
		||||
        .toFile(Path.join(logoPath, logoFilename));
 | 
			
		||||
 | 
			
		||||
      await min.core['setConfig'](min, 'Logo', logoFilename);
 | 
			
		||||
 | 
			
		||||
      // Extract dominant colors from the screenshot
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue