Open search-royal-road in Script Kit
/*# Search novel in [royalroad.com](https://www.royalroad.com/)*/// Name: Search Royal Road// Description: Search novel in royalroad.com// Author: Ricardo Gonçalves Basseteimport '@johnlindquist/kit'import { load } from 'cheerio'import { Choice } from '@johnlindquist/kit/types/core.js'const baseURL = 'https://www.royalroad.com'const target = await arg('Search novel', async input => {const searchUrl = `${baseURL}/fictions/search?title=${input}&globalFilters=true`const pageData = await fetch(searchUrl).then(res => res.text())const $ = load(pageData)const choices: Choice[] = $('div.fiction-list').find('.fiction-list-item').get().map(el => {const novelPath = $(el).find('figure a').attr('href')const imgPath = $(el).find('figure a img').attr('src')const name = $(el).find('.fiction-title').text().replaceAll('\n', '').trim()const stats = $(el).find('.stats div').get()const rating = $(stats[1]).find('span').attr('title')const views = $(stats[3]).find('span').text()const chapCount = $(stats[4]).find('span').text()const lastUpdate = $(stats[5]).find('time').text()const novelData = [`Rating: ${rating} / 5`, views, chapCount, `Last Update: ${lastUpdate}`]return {name,value: `${baseURL}${novelPath}`,img: imgPath.endsWith('nocover-new-min.png') ? `${baseURL}/dist/img/nocover-new-min.png` : imgPath,height: 250,description: novelData.join(' | '),}})return choices})open(target)