feat(route): arcteryx regear new arrivals (#12063)
* feat(route): arcteryx regear new arrivals * feat(route): arcteryx regear new arrivals * Update lib/v2/arcteryx/radar.js * fix: arcteryx regear radar * fix: arcteryx regear price * fix: filter first ---------
This commit is contained in:
parent
c3950998a7
commit
965e652487
|
|
@ -62,6 +62,10 @@ Parameter `country` can be found within the url of `Arcteryx` website.
|
|||
|
||||
</RouteEn>
|
||||
|
||||
### Regear New Arrivals
|
||||
|
||||
<RouteEn author="NavePnow" example="/arcteryx/regear/new-arrivals" path="/arcteryx/regear/new-arrivals" />
|
||||
|
||||
## Bellroy
|
||||
|
||||
### New Releases
|
||||
|
|
|
|||
|
|
@ -74,6 +74,10 @@ pageClass: routes
|
|||
|
||||
</Route>
|
||||
|
||||
### Regear 新发布
|
||||
|
||||
<Route author="NavePnow" example="/arcteryx/regear/new-arrivals" path="/arcteryx/regear/new-arrivals" />
|
||||
|
||||
## Bellroy
|
||||
|
||||
### 新发布
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
module.exports = {
|
||||
'/new-arrivals/:country/:gender': ['NavePnow'],
|
||||
'/regear/new-arrivals': ['NavePnow'],
|
||||
};
|
||||
|
|
|
|||
|
|
@ -9,5 +9,13 @@ module.exports = {
|
|||
target: '/arcteryx/new-arrivals/:country/:gender',
|
||||
},
|
||||
],
|
||||
regear: [
|
||||
{
|
||||
title: 'Regear 新发布',
|
||||
docs: 'https://docs.rsshub.app/shopping.html#arcteryx',
|
||||
source: ['/shop/new-arrivals', '/'],
|
||||
target: '/arcteryx/regear/new-arrivals',
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -0,0 +1,53 @@
|
|||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
const { art } = require('@/utils/render');
|
||||
const path = require('path');
|
||||
|
||||
const host = 'https://www.regear.arcteryx.com';
|
||||
function getUSDPrice(number) {
|
||||
return (number / 100).toLocaleString('en-US', { style: 'currency', currency: 'USD' });
|
||||
}
|
||||
module.exports = async (ctx) => {
|
||||
const url = `${host}/shop/new-arrivals`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url,
|
||||
});
|
||||
|
||||
const data = response.data;
|
||||
const $ = cheerio.load(data);
|
||||
const contents = $('script:contains("window.__PRELOADED_STATE__")').text();
|
||||
const regex = /{.*}/;
|
||||
let items = JSON.parse(contents.match(regex)[0]).shop.items;
|
||||
items = items.filter((item) => item.availableSizes.length !== 0);
|
||||
|
||||
const list = items.map((item) => {
|
||||
const data = {};
|
||||
data.title = item.displayTitle;
|
||||
data.link = item.pdpLink.url;
|
||||
data.imgUrl = JSON.parse(item.imageUrls).front;
|
||||
data.availableSizes = item.availableSizes;
|
||||
data.color = item.color;
|
||||
data.originalPrice = getUSDPrice(item.originalPrice);
|
||||
if (item.priceRange[0] === item.priceRange[1]) {
|
||||
data.regearPrice = getUSDPrice(item.priceRange[0]);
|
||||
} else {
|
||||
data.regearPrice = `${getUSDPrice(item.priceRange[0])} - ${getUSDPrice(item.priceRange[1])}`;
|
||||
}
|
||||
data.description = art(path.join(__dirname, 'templates/regear-product-description.art'), {
|
||||
data,
|
||||
});
|
||||
return data;
|
||||
});
|
||||
|
||||
ctx.state.data = {
|
||||
title: 'Arcteryx - Regear - New Arrivals',
|
||||
link: url,
|
||||
description: 'Arcteryx - Regear - New Arrivals',
|
||||
item: list.map((item) => ({
|
||||
title: item.title,
|
||||
link: item.link,
|
||||
description: item.description,
|
||||
})),
|
||||
};
|
||||
};
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
module.exports = function (router) {
|
||||
router.get('/new-arrivals/:country/:gender', require('./new-arrivals'));
|
||||
router.get('/regear/new-arrivals', require('./regear-new-arrivals'));
|
||||
};
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
<div>
|
||||
Available Sizes:
|
||||
{{each data.availableSizes}}
|
||||
{{$value}}
|
||||
{{/each}}
|
||||
<br>
|
||||
Color: {{data.color}}
|
||||
<br>
|
||||
Original Price: {{data.originalPrice}}
|
||||
<br>
|
||||
Regear Price: {{data.regearPrice}}
|
||||
<br>
|
||||
|
||||
<img src={{data.imgUrl}}>
|
||||
<br><br>
|
||||
</div>
|
||||
Loading…
Reference in New Issue