Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feature] custom strings for restock detector #2779

Open
gsaiz opened this issue Nov 14, 2024 · 0 comments
Open

[feature] custom strings for restock detector #2779

gsaiz opened this issue Nov 14, 2024 · 0 comments
Labels
enhancement New feature or request

Comments

@gsaiz
Copy link

gsaiz commented Nov 14, 2024

Version and OS
0.47.06 on linux/docker

Is your feature request related to a problem? Please describe.

The problem I am facing is that the list of out-of-stock strings in stock-not-in-stock.js does not cover this product: https://www.vagabond.com/es/sheila-5635-001-35

¡Pronto estarán en stock!

Describe the solution you'd like

I have thought about just opening a PR with my new use case, but maybe what would be better for the long run would be to allow a custom string to be passed to the "Restock & Price Detection" tab when you configure the URL?

Describe the use-case and give concrete real-world examples

The use case is using the restock detector feature to parse the fact that size 39 is out of stock for this URL at this moment:

https://www.vagabond.com/es/sheila-5635-001-35

<button class="jsProductPageSizeButton semButtonSecondary tw-p-0 tw-pt-2 tw-flex tw-flex-wrap tw-justify-center tw-items-center tw-border tw-border-neutral300 on-active:tw-bg-neutral100 on-active:tw-shadow-[0_2px_0_0_theme(colors.black)] on-active:tw-font-semibold on-active:tw-text-stroke-width-0 tw-bg-[linear-gradient(to_bottom_right,transparent,transparent_calc(50%-1px),theme(colors.neutral300)_calc(50%-0.5px),theme(colors.neutral300)_calc(50%+0.5px),transparent_calc(50%+1px),transparent)] jsSizeSelectorStockUpdates jsProductPageSizeButtonNotBuyable tw-relative tw-text-stroke-width-0 active" data-buyable="false" data-size="39" data-eusize="39" data-code="5635-001-35-39" data-fewinstock="False" data-stock-message="Pronto en stock" data-delivery-information="" data-subscription-text="&lt;p class=&quot;tinymce-content&quot;&gt;&lt;span class=&quot;text-bold&quot;&gt;&amp;iexcl;Pronto estar&amp;aacute;n en stock!&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;tinymce-content&quot; style=&quot;font-size: 13px;&quot;&gt;Elige la talla e introduce tu correo electr&amp;oacute;nico para recibir una notificaci&amp;oacute;n &lt;span class=&quot;tinymce-content&quot;&gt;en cuanto tu talla&lt;/span&gt; est&amp;eacute; disponible.&lt;/span&gt;&lt;/p&gt;">
            39
                <div class="tw-bg-white tw-border tw-absolute tw-w-max tw-z-40 tw-px-4 tw-pt-2 tw-bottom-[50px] tw-text-details-sm-regular tw-max-w-[20em] tw-hidden [*:hover&gt;&amp;]:[@media(hover:hover)_and_(pointer:fine)]:tw-block]">
                    Pronto en stock
                </div>
        </button>

I could write a CSS selector with the data-buyable attribute filtering by the data-eusize=39 attribute, but this request is about having the restock feature allow me to copy&paste "Pronto estarán en stock" to see that it is not in stock.

I have seen that the page has an ld+json script:

<script type="application/ld+json">
    {
        "@context": "https://schema.org/",
        "@type": "Product",
        "name": "SHEILA",
        "image": [
"https://cdn.vagabond.com/thumbnails/200/211/crop/productimages/pos1/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/462/488/crop/productimages/pos1/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/564/596/crop/productimages/pos1/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/924/976/crop/productimages/pos1/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/1264/1336/crop/productimages/pos1/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/2048/2164/crop/productimages/pos1/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/200/211/crop/productimages/pos2/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/462/488/crop/productimages/pos2/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/564/596/crop/productimages/pos2/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/924/976/crop/productimages/pos2/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/1264/1336/crop/productimages/pos2/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/2048/2164/crop/productimages/pos2/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/200/211/crop/productimages/pos3/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/462/488/crop/productimages/pos3/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/564/596/crop/productimages/pos3/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/924/976/crop/productimages/pos3/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/1264/1336/crop/productimages/pos3/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/2048/2164/crop/productimages/pos3/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/200/78/crop/productimages/pos1/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/462/180/crop/productimages/pos1/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/564/220/crop/productimages/pos1/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/924/361/crop/productimages/pos1/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/1264/494/crop/productimages/pos1/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/2048/800/crop/productimages/pos1/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/200/78/crop/productimages/pos2/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/462/180/crop/productimages/pos2/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/564/220/crop/productimages/pos2/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/924/361/crop/productimages/pos2/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/1264/494/crop/productimages/pos2/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/2048/800/crop/productimages/pos2/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/200/78/crop/productimages/pos3/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/462/180/crop/productimages/pos3/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/564/220/crop/productimages/pos3/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/924/361/crop/productimages/pos3/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/1264/494/crop/productimages/pos3/list/5635-001-35.jpg","https://cdn.vagabond.com/thumbnails/2048/800/crop/productimages/pos3/list/5635-001-35.jpg"],
        "description": "Sheila son botas de montar minimalistas con un estilo atemporal. El modelo está confeccionado en cuero marrón oscuro con puntera redondeada, caña ancha y cierre de cremallera lateral. Tacón en bloque mide 38 mm. Cuero marrón oscuro Puntera redondeada Caña ancha Cierre con cremallera Tacones de 38mm Para un cuidado duradero: usa crema para zapatos e impermeabilizante para alargar la vida útil del calzado.",
        "sku": "5635-001-35",
        "brand": {
            "@type": "Thing",
            "name": "Vagabond Shoemakers"
        },
        "offers": {
            "@type": "Offer",
            "url": "https://www.vagabond.com/es/sheila-5635-001-35/",
            "priceCurrency": "EUR",
            "price": "220.00",
            "itemCondition": "https://schema.org/NewCondition",
            "availability": "https://schema.org/InStock",
            "seller": {
                "@type": "Organization",
                "name": "Vagabond International AB"
            }
        },

        "aggregateRating": {
            "@type": "AggregateRating",
            "ratingValue": 5,
            "ratingCount": 3
        }
    }
</script>

Unfortunately the item appears as in stock ("availability": "https://schema.org/InStock") because 1 of its variants is, that is there is stock in 2 out of the 7 sizes available. I don't know if this is supposed to be like this in JSON-LD, but it does not make much sense to me since a buyer will usually only buy one variant of the product, so knowing which one is in stock is relevant.

Additional context

I am happy to give a go to any changes to the Python side; I am much less comfortable on the JS side of things.

@gsaiz gsaiz added the enhancement New feature or request label Nov 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant