36 lines
907 B
JavaScript
36 lines
907 B
JavaScript
/**
|
|
* Next data extraction from __NEXT_DATA__ script
|
|
*/
|
|
|
|
import { makeTree } from '../utils.js';
|
|
|
|
/**
|
|
* Extract and parse __NEXT_DATA__ script content
|
|
* @param {string} html - HTML string
|
|
* @param {DOMParser} DOMParser - DOMParser instance
|
|
* @returns {Object|null} Parsed JSON data or null
|
|
*/
|
|
export function getNextData(html, DOMParser) {
|
|
const doc = makeTree(html, DOMParser);
|
|
const script = doc.querySelector('script#__NEXT_DATA__');
|
|
|
|
if (!script || !script.textContent) {
|
|
return null;
|
|
}
|
|
|
|
try {
|
|
return JSON.parse(script.textContent.trim());
|
|
} catch (e) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if HTML contains __NEXT_DATA__ script
|
|
* @param {string} html - HTML string
|
|
* @param {DOMParser} DOMParser - DOMParser instance
|
|
* @returns {boolean} True if __NEXT_DATA__ exists
|
|
*/
|
|
export function hasNextData(html, DOMParser) {
|
|
return getNextData(html, DOMParser) !== null;
|
|
}
|