Skocz do zawartości
nasiona konopi na stronie thc-thc

sklep i producent nasion marihuany seedbay

KushSensei

Użytkownik
  • Postów

    1181
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    22

Treść opublikowana przez KushSensei

  1. KushSensei

    #las_deszczowy_1.jpg

    From the album: First #1 (4 pcs)

  2. KushSensei

    #po_czyszczeniu_2.jpg

    From the album: First #1 (4 pcs)

  3. KushSensei

    #odpady.jpg

    From the album: First #1 (4 pcs)

  4. KushSensei

    #przed_czyszczeniem_1.jpg

    From the album: First #1 (4 pcs)

  5. KushSensei

    #przed_czyszczeniem_2.jpg

    From the album: First #1 (4 pcs)

  6. KushSensei

    #mid_up_2

    From the album: First #1 (4 pcs)

  7. KushSensei

    #mid_up_4.jpg

    From the album: First #1 (4 pcs)

  8. KushSensei

    #mid_up_3

    From the album: First #1 (4 pcs)

  9. KushSensei

    #all_top_2.jpg

    From the album: First #1 (4 pcs)

  10. KushSensei

    #all_top_3.jpg

    From the album: First #1 (4 pcs)

  11. KushSensei

    #4_2.jpg

    From the album: First #1 (4 pcs)

  12. KushSensei

    #all_top_1.jpg

    From the album: First #1 (4 pcs)

  13. KushSensei

    #3-4_1.jpg

    From the album: First #1 (4 pcs)

  14. KushSensei

    #4_1.jpg

    From the album: First #1 (4 pcs)

  15. KushSensei

    #3_2.jpg

    From the album: First #1 (4 pcs)

  16. KushSensei

    #3_4.jpg

    From the album: First #1 (4 pcs)

  17. KushSensei

    #3_1.jpg

    From the album: First #1 (4 pcs)

  18. KushSensei

    #1-2_1.jpg

    From the album: First #1 (4 pcs)

  19. KushSensei

    #2_1.jpg

    From the album: First #1 (4 pcs)

  20. KushSensei

    #1_4.jpg

    From the album: First #1 (4 pcs)

  21. KushSensei

    #1_1.jpg

    From the album: First #1 (4 pcs)

  22. KushSensei

    #1_3.jpg

    From the album: First #1 (4 pcs)

  23. Myślę że da radę.
  24. No powiem wam, że dziś zaczyna się zagęszczać i dziwne to ale tam z dołu się teraz nowe pojawiaja. Troche też wyciołem takich co już czarniały na dole oczywiście dokonałem solidnego odzysku 😄
  25. Bardzo cieżko było mi wybierać cokolwiek przy tak dużym wyborze. Dodatek przeszukuje stronę i wypisuje najważniejsze bynajmiej dla mnie informacje oblicza też stosunki oraz robi podsumowującą ocenę. Szybko poznasz po koloże czy to sativa czy indica a może hybryda. Hybryda 50% bedzie na niebieski kolor, Sativa zielony, idica pomarańczowy. Obliczam stosunek Plon / Wysokość, Plon / Czas, Wysokość / Czas, a suma to suma wszystkich stosunków. Suma też jest koloryzowana Czerwony 0 do 10 zielony 😛 Dodatkowo przeskanuje cały opis aby wychwycić czy roślina lubi chłodniejszy klimat. Do obliczen wykorzystuje zawsze najmniejszy plon, wysokość outdoor oraz czas outdoor. Aby obliczyć możliwie najgorszy przypadek. Dodatek dodaje taki mały widzecik na górze strony. Dobra łapcie zdjęcia, dodatku nie udostepniam liczę na opinie i może jak ktoś z administracji bedzie chciał go sprawdzić i zatwierdzić, to go wstawi za mnie. Nie nie będę publigował go w chrome store chyba, że ktoś inny to zrobi. content.js function kolorNaglowka(rodzaj, tekst) { if (!rodzaj) return tekst; // Obsługa mixów 50/50 if (/50\s*%[\s\/]+Indica\s*\/\s*50\s*%[\s\/]+Sativa/i.test(rodzaj) || /50\s*%[\s\/]+Sativa\s*\/\s*50\s*%[\s\/]+Indica/i.test(rodzaj) || /Indica.*50.*Sativa.*50/i.test(rodzaj) || /Sativa.*50.*Indica.*50/i.test(rodzaj) ) { return `<span style="color: #00B3FF; font-weight:bold">${tekst} (Mix 50%)</span>`; } if (rodzaj.toLowerCase().includes("indica")) return `<span style="color: orange; font-weight:bold">${tekst}</span>`; if (rodzaj.toLowerCase().includes("sativa")) return `<span style="color: green; font-weight:bold">${tekst}</span>`; return tekst; } // Gradient koloru sumy 0=czerwony, 10=jasnozielony function kolorSuma(suma) { let value = parseFloat(suma); if (isNaN(value)) value = 0; let r, g, b; if (value <= 5) { let percent = value / 5; r = 231; g = Math.round(76 + (176 - 76) * percent); b = 60; } else { let percent = (value - 5) / 5; r = Math.round(241 - (241 - 39) * percent); g = Math.round(196 + (174 - 196) * percent); b = Math.round(15 + (96 - 15) * percent); } return `rgb(${r},${g},${b})`; } function parseIntFromText(txt) { if(!txt) return null; let m = txt.match(/(\d+)/g); if(m) return Math.max(...m.map(Number)); return null; } function parseMinFromText(txt) { if(!txt) return null; let m = txt.match(/(\d+)/g); if(m) return Math.min(...m.map(Number)); return null; } function parseRange(txt) { let m = txt.match(/(\d+)/g); if(m) { if(m.length > 1) return [Math.min(...m.map(Number)), Math.max(...m.map(Number))]; return [Number(m[0]), Number(m[0])]; } return [null, null]; } function insertSummary(html) { let gallery = document.querySelector('.woocommerce-product-gallery__wrapper'); let form = document.querySelector('.variations_form.cart'); if (!gallery || !form) return; let div = document.createElement('div'); div.id = "thc-thc-sum"; div.innerHTML = html; div.style.margin = '20px 0 20px 0'; div.style.padding = '16px'; div.style.background = '#f9f9fb'; div.style.border = '1px solid #e7e7e7'; div.style.borderRadius = '14px'; div.style.fontSize = '1.08em'; div.style.boxShadow = '0 2px 12px 0 #eee'; form.parentNode.insertBefore(div, form); } // Szukanie słów-kluczy dla "zimne klimaty" function czyZimneKlimaty(opis) { const klucze = [ "zimn", "zimnych", "zimny", "zimne", "zimno", "zimowy", "chłodn", "chłodne", "chłodny", "frost", "cold", "cool" ]; let txt = opis.toLowerCase(); return klucze.some(slowo => txt.includes(slowo)); } (function() { if (!window.location.href.includes('/produkt/')) return; if (document.getElementById('thc-thc-sum')) return; let nazwa = (document.querySelector('h1.product_title') || {}).innerText || ""; let opis = (document.querySelector('.woocommerce-product-details__short-description') || {}).innerText || ""; let opisDlug = (document.querySelector('#tab-description') || {}).innerText || ""; // Rodzaj let rodzaj = ""; let mRodz = opisDlug.match(/Rodzaj:\s*(.+)/i); if (mRodz) rodzaj = mRodz[1].replace(/\s*\n.*/,"").trim(); // Plon let plonOutdoor = null, plonIndoor = null; let mPlonOutdoor = opisDlug.match(/Plon z Jednej Rośliny na Outdoor:.*?(\d+)/i); if (mPlonOutdoor) plonOutdoor = parseInt(mPlonOutdoor[1]); let mPlonIndoor = opisDlug.match(/Plon z Jednej Rośliny w Indoor:.*?(\d+)/i); if (mPlonIndoor) plonIndoor = parseInt(mPlonIndoor[1]); if (!plonOutdoor) { let mPlon2 = opisDlug.match(/Outdoor:.*?(\d+)/i); if (mPlon2) plonOutdoor = parseInt(mPlon2[1]); } if (!plonIndoor) { let mPlon2 = opisDlug.match(/Indoor:.*?(\d+)/i); if (mPlon2) plonIndoor = parseInt(mPlon2[1]); } let plon = plonOutdoor && plonIndoor ? Math.min(plonOutdoor, plonIndoor) : (plonOutdoor || plonIndoor || null); // Wysokość let wysOutdoor = null, wysIndoor = null; let mWysOutdoor = opisDlug.match(/Wysokość na Outdoor:.*?(\d+)/i); if (mWysOutdoor) wysOutdoor = parseInt(mWysOutdoor[1]); let mWysIndoor = opisDlug.match(/Wysokość w Indoor:.*?(\d+)/i); if (mWysIndoor) wysIndoor = parseInt(mWysIndoor[1]); if (!wysOutdoor) { let mWys2 = opisDlug.match(/Outdoor:.*?(\d+)\s*cm/i); if (mWys2) wysOutdoor = parseInt(mWys2[1]); } if (!wysIndoor) { let mWys2 = opisDlug.match(/Indoor:.*?(\d+)\s*cm/i); if (mWys2) wysIndoor = parseInt(mWys2[1]); } let wysokosc = wysOutdoor || wysIndoor || null; // Czas do zbioru let czasIndoor = null, czasOutdoor = null; let mCzasIndoor = opisDlug.match(/Zbiór w Indoor:.*?(\d+)/i); if (mCzasIndoor) czasIndoor = parseInt(mCzasIndoor[1]); let mCzasOutdoor = opisDlug.match(/Zbiór na Outdoor:.*?(\d+)/i); if (mCzasOutdoor) czasOutdoor = parseInt(mCzasOutdoor[1]); if (!czasOutdoor) { let mCz2 = opisDlug.match(/Outdoor:.*?po (\d+) dniach/i); if (mCz2) czasOutdoor = parseInt(mCz2[1]); } if (!czasIndoor) { let mCz2 = opisDlug.match(/Indoor:.*?po (\d+) dniach/i); if (mCz2) czasIndoor = parseInt(mCz2[1]); } let czas = czasIndoor && czasOutdoor ? Math.max(czasIndoor, czasOutdoor) : (czasIndoor || czasOutdoor || null); // Zimne klimaty let czyZimne = czyZimneKlimaty(opis + opisDlug) ? "TAK" : "NIE"; // Kolorowany nagłówek let naglowek = kolorNaglowka(rodzaj, `1 x ${nazwa}`); // Wskaźniki let p_w = (plon && wysokosc) ? (plon / wysokosc).toFixed(2) : "-"; let p_c = (plon && czas) ? (plon / czas).toFixed(2) : "-"; let w_c = (wysokosc && czas) ? (wysokosc / czas).toFixed(2) : "-"; let suma = 0, licznik = 0; if (p_w !== "-") { suma += parseFloat(p_w); licznik++; } if (p_c !== "-") { suma += parseFloat(p_c); licznik++; } if (w_c !== "-") { suma += parseFloat(w_c); licznik++; } suma = licznik > 0 ? suma.toFixed(2) : "-"; // Kolor sumy let kolorS = kolorSuma(suma); // Składanie eleganckiej listy let out = `<div> <div style="margin-bottom:8px;font-size:1.1em">${naglowek}</div> <ul style="list-style:none; padding:0; margin:0 0 0 0;"> <li><b>Przewaga:</b> ${rodzaj || '-'}</li> <li><b>Plon około:</b> ${plon ? plon+"g" : '-'}</li> <li><b>Czas do zbioru:</b> ${czas ? czas+" dni" : '-'}</li> <li><b>Wysokość:</b> ${wysokosc ? "do "+wysokosc+"cm" : '-'}</li> <li><b>Zimne Klimaty:</b> ${czyZimne}</li> <li><b>P/W:</b> ${p_w}</li> <li><b>P/C:</b> ${p_c}</li> <li><b>W/C:</b> ${w_c}</li> <li><b>Suma:</b> <span style="color:${kolorS}; font-weight:bold; font-size:1.13em;">${suma}</span></li> </ul> </div>`; insertSummary(out); })(); manifest.json { "manifest_version": 3, "name": "THC-THC.pl Skrót Odmiany", "version": "1.0", "description": "Wyświetla skrócone podsumowanie odmian na stronach produktu THC-THC.pl", "permissions": ["scripting"], "host_permissions": [ "https://thc-thc.pl/produkt/*" ], "content_scripts": [ { "matches": ["https://thc-thc.pl/produkt/*"], "js": ["content.js"], "run_at": "document_idle" } ], "icons": { "16": "icon16.png", "32": "icon32.png" } }
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Polityka prywatności link do Polityki Prywatności RODO - Strona tylko dla osób pełnoletnich, 18+