google-photos-album-image-url-fetch
Version:
extract public image url from google photos shared album url
49 lines • 2.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImageUrls = fetchImageUrls;
exports.extractAppended = extractAppended;
exports.validityVerification = validityVerification;
const fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
const impl_1 = require("./impl");
const expected_json_1 = __importDefault(require("./expected.json"));
const constant_1 = require("./constant");
const split_result_1 = require("./split_result");
const date_compare_1 = require("./date_compare");
async function fetchImageUrls(albumSharedUrl, signal) {
const html = await (0, impl_1.getSharedAlbumHtml)(albumSharedUrl, signal);
const ph1 = (0, impl_1.parsePhase1)(html);
if (null === ph1) {
return null;
}
const ph2 = (0, impl_1.parsePhase2)(ph1);
if (null === ph2) {
return null;
}
return (0, impl_1.parsePhase3)(ph2);
}
function extractAppended(before, after) {
return after.filter(a => typeof before.find(v => (0, fast_deep_equal_1.default)(v, a)) === 'undefined');
}
function dateCompareOrFalse(l, r) {
try {
return (0, date_compare_1.dateCompare)(l, r);
}
catch (_) {
return false;
}
}
async function validityVerification() {
const re = await fetchImageUrls(constant_1.googlePhotosSharedAlbumURL);
if (null === re) {
return false;
}
const [actualRest, actualUrls, actualImageUpdateDates] = (0, split_result_1.splitResult)(re);
const [expectedRest, expectedAnyUrls, expectedImageUpdateDates] = (0, split_result_1.splitResult)(expected_json_1.default);
return (expectedAnyUrls.every((expectedAnyUrl, i) => expectedAnyUrl.some(e => e === actualUrls[i])) &&
expectedImageUpdateDates.every((expectedImageUpdateDate, i) => dateCompareOrFalse(expectedImageUpdateDate, actualImageUpdateDates[i])) &&
(0, fast_deep_equal_1.default)(actualRest, expectedRest));
}
//# sourceMappingURL=index.js.map