Skip to content

抓栏目

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,
};