rsshub
Version:
Make RSS Great Again!
117 lines (108 loc) • 3.55 kB
text/typescript
import ofetch from '@/utils/ofetch';
import cache from '@/utils/cache';
import { load } from 'cheerio';
import { config } from '@/config';
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=${Date.now() % 1e8}`,
};
const getUserInfoFromUsername = (username) =>
cache.tryGet(`500px:user:${username}`, async () => {
const data = await ofetch(`${baseUrl}/${username}`);
const $ = load(data);
return JSON.parse(
$('script[type="text/javascript"]')
.text()
.match(/var cur_user = new Object\((.*?)\);/)?.[1] || '{}'
);
});
const getUserInfoFromId = (id) =>
cache.tryGet(`500px:user:indexInfo:${id}`, async () => {
const data = await ofetch(`${baseUrl}/community/v2/user/indexInfo`, {
headers: {
...headers,
},
query: {
queriedUserId: id,
},
});
return data.data;
});
const getUserWorks = (id, limit) =>
cache.tryGet(
`500px:user:profile:${id}`,
async () => {
const data = await ofetch(`${baseUrl}/community/v2/user/profile`, {
headers: {
...headers,
},
query: {
resourceType: '0,2,4',
imgsize: 'p1,p2,p3,p4',
queriedUserId: id,
startTime: '',
page: 1,
size: limit,
type: 'json',
},
});
return data;
},
config.cache.routeExpire,
false
);
const getTribeDetail = (id) =>
cache.tryGet(
`500px:tribeDetail:${id}`,
async () => {
const data = await ofetch(`${baseUrl}/community/tribe/tribeDetail`, {
headers: {
...headers,
},
query: {
tribeId: id,
},
});
return data.data;
},
config.cache.routeExpire,
false
);
const getTribeSets = (id, limit) =>
cache.tryGet(
`500px:tribeSets:${id}`,
async () => {
const data = await ofetch(`${baseUrl}/community/tribe/getTribeSetsV2`, {
headers: {
...headers,
},
query: {
tribeId: id,
privacy: 1,
page: 1,
size: limit,
type: 'json',
},
});
return data.data;
},
config.cache.routeExpire,
false
);
export { baseUrl, getUserInfoFromUsername, getUserInfoFromId, getUserWorks, getTribeDetail, getTribeSets };