-
Postów
1181 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
22
Typ zawartości
Forums
Gallery
Blogs
Treść opublikowana przez KushSensei
-
From the album: First #1 (4 pcs)
-
From the album: First #1 (4 pcs)
-
From the album: First #1 (4 pcs)
-
From the album: First #1 (4 pcs)
-
Jaja przy kiełkowaniu
KushSensei odpowiedział(a) na KrzokiAlfreda topic w Etap Kiełkowania i Sadzenia
Myślę że da radę. -
Pierwsze kiełki pierwszy tydzień
KushSensei odpowiedział(a) na KushSensei topic w Zakończone Fotorelacje Indoor
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 😄 -
Zrobiłem dodatek do chroma dla thc-thc
KushSensei opublikował(a) a topic w Recenzje Nasion Marihuany
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" } }
