11import { Route } from '@/types' ;
22import { load } from 'cheerio' ;
33import ofetch from '@/utils/ofetch' ;
4- import { parseDate } from '@/utils/parse-date' ;
54import logger from '@/utils/logger' ;
65
76export const route : Route = {
@@ -17,52 +16,59 @@ export const route: Route = {
1716 supportPodcast : false ,
1817 supportScihub : false ,
1918 } ,
19+ radar : [
20+ {
21+ source : [ 'ebay.com/sch/i.html' ] ,
22+ target : ( params , url ) => {
23+ const searchKeywords = new URL ( url ) . searchParams . get ( '_nkw' ) ;
24+ return `/search/${ searchKeywords } ` ;
25+ } ,
26+ } ,
27+ ] ,
2028 name : 'Search Results' ,
2129 maintainers : [ 'phoeagon' ] ,
22- handler,
23- } ;
24-
25- async function handler ( ctx ) {
26- const { keywords } = ctx . req . param ( ) ;
27- const url = `https://www.ebay.com/sch/i.html?_nkw=${ encodeURIComponent ( keywords ) } &_sop=10&_ipg=240` ;
30+ handler : async ( ctx ) => {
31+ const { keywords } = ctx . req . param ( ) ;
32+ const url = `https://www.ebay.com/sch/i.html?_nkw=${ encodeURIComponent ( keywords ) } &_sop=10&_ipg=240` ;
2833
29- logger . info ( `Fetching eBay search results: ${ url } ` ) ;
30- const response = await ofetch ( url ) ;
31- logger . info ( `eBay response status: ${ response instanceof Response ? response . status : 'unknown' } ` ) ;
32- const $ = load ( response ) ;
34+ logger . info ( `Fetching eBay search results: ${ url } ` ) ;
35+ const response = await ofetch ( url ) ;
36+ logger . info ( `eBay response status: ${ response instanceof Response ? response . status : 'unknown' } ` ) ;
37+ const $ = load ( response ) ;
3338
34- const items = $ ( '.s-item, .s-card, .s-item__wrapper.clearfix' )
35- . toArray ( )
36- . map ( ( item ) => {
37- const $item = $ ( item ) ;
38- const titleElement = $item . find ( '.s-item__title, .s-card__title, .s-item__title--has-tags' ) ;
39- const title = titleElement . text ( ) . replace ( / ^ N e w L i s t i n g / i, '' ) . trim ( ) ;
40- const link = $item . find ( '.s-item__link, .s-card__link' ) . attr ( 'href' ) ;
41- const price = $item . find ( '.s-item__price, .s-card__price' ) . text ( ) . trim ( ) ;
42- const image =
43- $item . find ( '.s-item__image-img img, img.s-item__image-img' ) . attr ( 'src' ) ||
44- $item . find ( '.s-item__image-wrapper img' ) . attr ( 'src' ) ||
45- $item . find ( '.s-card__image-img img' ) . attr ( 'src' ) ||
46- $item . find ( '.s-item__image img' ) . attr ( 'src' ) ;
39+ const items = $ ( '.s-item, .s-card, .s-item__wrapper.clearfix' )
40+ . toArray ( )
41+ . map ( ( item ) => {
42+ const $item = $ ( item ) ;
43+ const titleElement = $item . find ( '.s-item__title, .s-card__title, .s-item__title--has-tags' ) ;
44+ const title = titleElement . text ( ) . replace ( / ^ N e w L i s t i n g / i, '' ) . trim ( ) ;
45+ const link = $item . find ( '.s-item__link, .s-card__link' ) . attr ( 'href' ) ;
46+ const price = $item . find ( '.s-item__price, .s-card__price' ) . text ( ) . trim ( ) ;
47+ const image =
48+ $item . find ( '.s-item__image-img img, img.s-item__image-img' ) . attr ( 'src' ) ||
49+ $item . find ( '.s-item__image-wrapper img' ) . attr ( 'src' ) ||
50+ $item . find ( '.s-card__image-img img' ) . attr ( 'src' ) ||
51+ $item . find ( '.s-item__image img' ) . attr ( 'src' ) ;
4752
48- if ( ! title || ! link || title . toLowerCase ( ) . includes ( 'shop on ebay' ) || price === '' ) {
49- return null ;
50- }
53+ if ( ! title || ! link || title . toLowerCase ( ) . includes ( 'shop on ebay' ) || price === '' ) {
54+ return null ;
55+ }
5156
52- return {
53- title : `${ title } - ${ price } ` ,
54- link,
55- description : `<img src="${ image } "><br>Price: ${ price } ` ,
56- category : 'eBay Search' ,
57- } ;
58- } )
59- . filter ( Boolean ) ;
57+ return {
58+ title : `${ title } - ${ price } ` ,
59+ link,
60+ description : `<img src="${ image } "><br>Price: ${ price } ` ,
61+ category : 'eBay Search' ,
62+ } ;
63+ } )
64+ . filter ( Boolean ) ;
6065
61- logger . info ( `Found ${ items . length } items on eBay` ) ;
66+ logger . info ( `Found ${ items . length } items on eBay` ) ;
6267
63- return {
64- title : `eBay Search: ${ keywords } ` ,
65- link : url ,
66- item : items ,
67- } ;
68- }
68+ return {
69+ title : `eBay Search: ${ keywords } ` ,
70+ link : url ,
71+ item : items ,
72+ } ;
73+ } ,
74+ } ;
0 commit comments