RSSHub/lib/v2/500px/utils.js

123 lines
3.5 KiB
JavaScript

const got = require('@/utils/got');
const cheerio = require('cheerio');
const config = require('@/config').value;
const baseUrl = 'https://500px.com.cn';
/*
ty_rum.server = {
id: 'Fm3hXcTiLT8',
ignore_err: true,
beacon: 'beacon.tingyun.com',
beacon_err: 'beacon-err.tingyun.com',
key: 'M1laN7-zRM0',
trace_threshold: 7000,
custom_urls: [],
sr: 1.0,
};
v && v.id && this._ty_rum && y(this._ty_rum.url) && (this._ty_rum.r = (new Date).getTime() % 1e8,
this.setRequestHeader && this.setRequestHeader("X-Tingyun-Id", v.id + ";r=" + this._ty_rum.r))
*/
const headers = {
// {"anonymousId":"","latitude":null,"longitude":null,"manufacturer":"","province":"","area":"","city":""}
'x-500px-client-info': 'eyJhbm9ueW1vdXNJZCI6IiIsImxhdGl0dWRlIjpudWxsLCJsb25naXR1ZGUiOm51bGwsIm1hbnVmYWN0dXJlciI6IiIsInByb3ZpbmNlIjoiIiwiYXJlYSI6IiIsImNpdHkiOiIifQ==',
'X-Tingyun-Id': `Fm3hXcTiLT8;r=${new Date().getTime() % 1e8}`,
};
const getUserInfoFromUsername = (username, tryGet) =>
tryGet(`500px:user:${username}`, async () => {
const { data } = await got(`${baseUrl}/${username}`);
const $ = cheerio.load(data);
return JSON.parse(
$('script[type="text/javascript"]')
.text()
.match(/var cur_user = new Object\((.*?)\);/)[1]
);
});
const getUserInfoFromId = (id, tryGet) =>
tryGet(`500px:user:indexInfo:${id}`, async () => {
const { data } = await got(`${baseUrl}/community/v2/user/indexInfo`, {
headers: {
...headers,
},
searchParams: {
queriedUserId: id,
},
});
return data.data;
});
const getUserWorks = (id, limit, tryGet) =>
tryGet(
`500px:user:profile:${id}`,
async () => {
const { data } = await got(`${baseUrl}/community/v2/user/profile`, {
headers: {
...headers,
},
searchParams: {
resourceType: '0,2,4',
imgsize: 'p1,p2,p3,p4',
queriedUserId: id,
startTime: '',
page: 1,
size: limit,
type: 'json',
},
});
return data.data;
},
config.cache.routeExpire,
false
);
const getTribeDetail = (id, tryGet) =>
tryGet(
`500px:tribeDetail:${id}`,
async () => {
const { data } = await got(`${baseUrl}/community/tribe/tribeDetail`, {
headers: {
...headers,
},
searchParams: {
tribeId: id,
},
});
return data.data;
},
config.cache.routeExpire,
false
);
const getTribeSets = (id, limit, tryGet) =>
tryGet(
`500px:tribeSets:${id}`,
async () => {
const { data } = await got(`${baseUrl}/community/tribe/getTribeSetsV2`, {
headers: {
...headers,
},
searchParams: {
tribeId: id,
privacy: 1,
page: 1,
size: limit,
type: 'json',
},
});
return data.data;
},
config.cache.routeExpire,
false
);
module.exports = {
baseUrl,
getUserInfoFromUsername,
getUserInfoFromId,
getUserWorks,
getTribeDetail,
getTribeSets,
};