UNPKG

google-photos-album-image-url-fetch

Version:
78 lines 2.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isContainData = void 0; exports.getSharedAlbumHtml = getSharedAlbumHtml; exports.parsePhase1 = parsePhase1; exports.parsePhase2 = parsePhase2; exports.parsePhase3 = parsePhase3; const gaxios_1 = require("gaxios"); const json5_1 = require("json5"); async function getSharedAlbumHtml(albumSharedurl, signal) { return (0, gaxios_1.request)({ url: albumSharedurl, retryConfig: { retry: 4, retryDelay: 1000 }, retry: true, signal: signal, }).then(r => r.data); } function parsePhase1(input) { const re = /(?<=AF_initDataCallback\()(?=.*data)(\{[\s\S]*?)(\);<\/script>)/g; return [...input.matchAll(re)].reduce((a, b) => (a.length > b[1].length ? a : b[1]), ''); } function parsePhase2(input) { try { return (0, json5_1.parse)(input); } catch (_) { return null; } } const isContainData = (o) => typeof o === 'object' && o != null && 'data' in o; exports.isContainData = isContainData; const rawIsArray = Array.isArray; const isArray = (a) => rawIsArray(a); function parsePhase3(input) { if (!(0, exports.isContainData)(input)) { return null; } const d = input.data; if (!isArray(d) || d.length < 1) { return null; } const arr = d[1]; if (!isArray(arr)) { return null; } return arr .map(e => { if (!isArray(e) || e.length < 6) { return null; } const uid = e[0]; const imageUpdateDate = e[2]; const albumAddDate = e[5]; if (typeof uid !== 'string' || typeof imageUpdateDate !== 'number' || typeof albumAddDate !== 'number') { return null; } const detail = e[1]; if (!isArray(detail) || detail.length < 3) { return null; } const url = detail[0]; const width = detail[1]; const height = detail[2]; if (typeof url !== 'string' || typeof width !== 'number' || typeof height !== 'number') { return null; } return { uid: uid, url: url, width: width, height: height, imageUpdateDate: imageUpdateDate, albumAddDate: albumAddDate, }; }) .filter((e) => !(null === e)); } //# sourceMappingURL=impl.js.map