抓栏目
js
// http://23.99.13.145:8000/publish-center-service/getColumnsInfoBypid?parentId=5010879&appId=30061
const url = "http://23.99.13.145:8000";
const appId = 30061;
const parentId = 5010879;
const apiPath = "/publish-center-service/getColumnsInfoBypid";
const token = "1252c7b5-59d1-41a3-81d7-1439b83f5ef9";
let size = 0;
async function loadHlxColumn(appId, parentId) {
const result = {};
const data = await loadApiData(appId, parentId);
for (const element of data) {
const { id, name, childCount } = element;
size++;
let child;
if (childCount > 0) {
child = await loadHlxColumn(appId, id);
}
// 将来 name 中不能为变量名的char处理为_
const safeName = toSafeVarName(name);
result[safeName] = {
id,
url: `/web/column/col${id}.html`,
...child,
};
}
return result;
}
async function loadApiData(appId, parentId) {
const apiurl = `${url}${apiPath}?appId=${appId}&parentId=${parentId}`;
const response = await fetch(apiurl, {
headers: {
Authorization: `bearer ${token}`,
},
});
console.log(`${parentId} | `, response.status, response.statusText);
const data = await response.json();
return data;
}
function toSafeVarName(str) {
// 允许:
// - 英文字母 a-zA-Z
// - 数字 0-9
// - 下划线 _
// - 美元符号 $
// - 中文字符(\u4e00-\u9fa5)
let name = str.replace(/[^a-zA-Z0-9_$\u4e00-\u9fa5]/g, "_");
// 如果以数字开头,前面补一个 _
if (/^[0-9]/.test(name)) {
name = "_" + name;
}
console.log(str, " -> ", name);
return name;
}
loadHlxColumn(appId, parentId).then((data) => {
console.log(JSON.stringify(data));
console.log("整理栏目数量: ", size);
});数据模样
ts
const hlx_result_demo = {
id: "5010880",
appId: "30061",
appName: "",
name: "要闻",
parentId: "5010879",
templetCode: "NEWS_NOMAR",
parentCode: "5010879",
code: "5010879.5010880",
status: 3,
versionNo: 1,
sortNo: 1,
imageUrl: "",
plViewType: 1,
columnsType: 0,
columnsUrl: "",
commentType: 0,
validateType: null,
viewDate: 2,
viewCountType: 2,
leafType: 0,
viewReplyCount: 0,
createTime: 1761895141000,
creatorId: "1346559366313500672",
creator: "",
updatorId: null,
updator: "",
updateTime: 1761895141000,
imageName: "",
synopsis: "",
showCount: null,
allowShare: 1,
permitType: null,
favorite: false,
childCount: 1,
isLeaf: false,
pcColumnUrl: "https://www.12371.gov.cn/web/column/col5010880.html",
appColumnUrl: " ",
h5ColumnUrl: " ",
jsonColumnUrl: " ",
notPublish: false,
forbiddenStatus: false,
specialColumn: false,
};