1
0
Fork 0

update Packstack to work with the new API

main
Gustav Lindqvist 1 month ago
parent 3d6e260e18
commit b86e592ca2

@ -54,56 +54,13 @@ module.exports = {
</li>`;
}
outputString += `</ul>`;
outputString += `<p><a href="https://www.packstack.io/pack/${pack.id}">Utrustningslistan ${pack.name} på Packstack</a></p>`;
outputString += `<p><a href="${pack.shareLink}">Utrustningslistan ${pack.name} på Packstack</a></p>`;
outputString += `</section>`;
outputString += `<script src="/assets/javascript/pack.js" async></script>`;
return outputString;
}
return '';
},
packStatistics: (pack) => {
function prettyDigits (number) {
return number.toString().replace(/(?!^)(?=(?:\d{3})+(?:\.|$))/gm, ' ');
}
if (pack) {
let outputString = `<section class="packStatistics">`;
outputString += `<ul class="pack__list">`;
pack.contents.forEach((category) => {
const color = (typeof category.color !== 'undefined' && category.color.length) ? category.color : 'var(--color__text)';
outputString += `<li class="pack__list-item -overview small">
<span class="pack__list-item__left"><svg class="icon -large" role="presentation" style="color: ${color}" aria-hidden="true" width="12" height="12" viewBox="0 0 24 24"><use xmlns:xlink="http://www.w3.org/1999/xlink" href="/assets/icons/${category.icon}.svg#icon"></use></svg></span><span class="pack__list-item__middle">${category.name}<span class="sr-only">:</span></span>
<span class="pack__list-item__right" style="padding-right: 0.3rem">${prettyDigits(category.total_weight)}g</span>
<div class="pack__list__bar" style="width: ${((category.total_weight / pack.total_weight) * 200).toFixed(3)}%; background: ${color};"></div>
</li>`;
});
outputString += `</ul>`;
outputString += `<ul class="statistics__list ${(pack.consumables_weight > 0) ? '-column-count-4' : ''}">
<li class="statistics__list-item">
<span class="statistics__list-item__label">Total vikt<span class="sr-only">:</span></span>
<span class="statistics__list-item__value">${prettyDigits(pack.total_weight)}g</span>
</li>
<li class="statistics__list-item">
<span class="statistics__list-item__label">Basvikt<span class="sr-only">:</span></span>
<span class="statistics__list-item__value">${prettyDigits(pack.base_weight)}g</span>
</li>
<li class="statistics__list-item">
<span class="statistics__list-item__label"> kroppen<span class="sr-only">:</span></span>
<span class="statistics__list-item__value">${prettyDigits(pack.worn_weight)}g</span>
</li>`;
if (pack.consumables_weight > 0) {
outputString += `<li class="statistics__list-item">
<span class="statistics__list-item__label">Förbrukningsvaror<span class="sr-only">:</span></span>
<span class="statistics__list-item__value">${prettyDigits(pack.consumables_weight)}g</span>
</li>`;
}
outputString += `</ul>`;
outputString += `<p><a href="https://www.packstack.io/pack/${pack.id}">Utrustningslistan ${pack.name} på Packstack</a></p>`;
outputString += `</section>`;
return outputString;
}
return '';
},
packInventory: (pack) => {
function prettyDigits (number) {
return number.toString().replace(/(?!^)(?=(?:\d{3})+(?:\.|$))/gm, ' ');

@ -56,18 +56,17 @@ module.exports = async () => {
}
};
const getPack = async (packUrl) => {
const getPack = async (packId, shareId) => {
let pack = {};
const packUrl = `https://api.packstack.io/pack/trip/${packId}`
try {
const rawPage = await fetch(packUrl, {
const rawPackData = await fetch(packUrl, {
duration: "1d",
type: "text",
directory: ".cache",
});
const htmlPage = cheerio.load(rawPage);
const rawJSON = JSON.parse(htmlPage('body > script#__NEXT_DATA__').text());
const packData = rawJSON.props.pageProps.data;
const packData = JSON.parse(rawPackData)[0]
const categories = [];
@ -142,6 +141,7 @@ module.exports = async () => {
pack.name = packData.title;
pack.id = packData.id;
pack.contents = categories;
pack.shareLink = `https://packstack.io/pack/${shareId}`
console.log('[' + '\x1b[34m%s\x1b[0m', 'Packstack' + '\x1b[0m' + ']:', 'Grabbed pack:', packData.title, '(' + packUrl + ')');
@ -152,12 +152,12 @@ module.exports = async () => {
}
};
packstack.summer_2022 = await getPack('https://www.packstack.io/pack/209');
packstack.summer_2023 = await getPack('https://www.packstack.io/pack/559');
packstack.bikepacking_2023 = await getPack('https://www.packstack.io/pack/581');
packstack.bankerydsleden_2022 = await getPack('https://www.packstack.io/pack/257');
packstack.big_camera_kit = await getPack('https://www.packstack.io/pack/654');
packstack.small_camera_kit = await getPack('https://www.packstack.io/pack/655');
packstack.bankerydsleden_2022 = await getPack('368', '020cc93d-2d4e-43c0-9df4-c1ccb63c90eb');
packstack.summer_2022 = await getPack('369', 'dc516757-bc41-4304-a29e-5dadc9dcf50e');
packstack.summer_2023 = await getPack('367', '5f4edc0b-ddca-4a64-a97f-ee313f66e6bd');
packstack.bikepacking_2023 = await getPack('370', '10c47671-c9f4-414e-b07d-2d796eb1c3e0');
packstack.big_camera_kit = await getPack('372', '12baa3b2-8104-4c26-9532-acb721f05240');
packstack.small_camera_kit = await getPack('371', 'c8848465-155d-4b9e-ac99-ddf43d8cbdbb');
return packstack;

Loading…
Cancel
Save