הכל מלמעלה
-
שיפור חווית החיפוש ביד 2 -
טויוטה ורסו מול מיצובישי אאוטלנדר (2013-2015)@שמואל-קליין 50,000
-
שיפור חווית החיפוש ביד 2מי שרוצה, יש לי גם קוד לשליפת שם וטלפון ישירות לתוצאות ביד2
כרגע זה עובד רק על מודעות פרטיות ולא סוכנויות ולכן אני עדיין לא מפרסם בגיטהאב, ואני גם עובד על זה שזה יהיה בגרסה משולבת עם הסקריפט הקודם.
כרגע זה רק התקנה ידנית דרך טמפרמונקי// ==UserScript== // @name שליפת טלפון ושם ביד2 // @namespace http://tampermonkey.net/ // @version 3.4 // @description שליפת טלפון ושם מוכר ממודעות רכב פרטיות ביד2 בלבד // @author HAKOL-MILEMALA // @match https://www.yad2.co.il/vehicles/* // @grant none // ==/UserScript== (function () { 'use strict'; const לוג_צבעים = { מידע: 'color: #3498db; font-weight: bold;', הצלחה: 'color: #27ae60; font-weight: bold;', המתנה: 'color: #f39c12; font-weight: bold;', אזהרה: 'color: #9b59b6; font-weight: bold;', שגיאה: 'color: #e74c3c; font-weight: bold;' }; // העיצוב הזה משמש גם את כפתור המודעות וגם את כפתור המאסטר const עיצוב_כפתור = [ 'background: #eef9f6', 'color: #16c39b', 'border: 1px solid #16c39b', 'padding: 4px 10px', 'border-radius: 6px', 'font-size: 12px', 'font-weight: bold', 'font-family: inherit', 'cursor: pointer', 'transition: background 0.2s, opacity 0.2s', 'user-select: none', 'white-space: nowrap' ].join(';'); let isBatchRunning = false; let מספר_מודעות_פרטיות_אחרון = -1; let דווח_כותרת_ממתינה = false; function לוג(סוג, הודעה, מידע = null) { const סגנון = לוג_צבעים[סוג] || לוג_צבעים.מידע; if (מידע !== null) { console.log(`%c[Yad2-Script] ${הודעה}`, סגנון, מידע); } else { console.log(`%c[Yad2-Script] ${הודעה}`, סגנון); } } function עיצוב_כפתור_עברי(כפתור) { כפתור.style.cssText = עיצוב_כפתור; כפתור.addEventListener('mouseenter', () => { if (!כפתור.disabled) { כפתור.style.background = '#dcf2ec'; } }); כפתור.addEventListener('mouseleave', () => { כפתור.style.background = '#eef9f6'; }); } // ============================================================ // זיהוי מודעות פרטיות בלבד // ============================================================ function קבל_מודעות_פרטיות() { return Array.from( document.querySelectorAll( 'a[data-nagish="private-item-link"][data-listing-type="private-vehicle"], ' + 'a[data-nagish="private-item-link"][data-listing-type="private-vehicle-no-footer"]' ) ); } function חלץ_ID_מודעה(מודעה) { const href = מודעה.getAttribute('href') || ''; const התאמה = href.match( /(?:^|\/)item\/([a-zA-Z0-9_-]+)/ ); return התאמה ? התאמה[1] : null; } function קבל_שם_רכב(מודעה) { return ( מודעה .querySelector('[data-nagish="feed-item-section-title"]') ?.innerText ?.trim() || 'מודעה פרטית' ); } // ============================================================ // כפתור מאסטר // נשאר באותו מקום, עם אותו עיצוב של כפתור המודעה // ============================================================ function הכנס_כפתור_מאסטר() { if (document.getElementById('yad2-master-fetch-btn')) { return; } const תיבת_כותרת = document.querySelector('[class*="sortAndTotalBox"]') || document.querySelector('[data-testid="total-items"]')?.parentNode; if (!תיבת_כותרת) { if (!דווח_כותרת_ממתינה) { דווח_כותרת_ממתינה = true; לוג( 'המתנה', 'עדיין לא נמצאה תיבת הכותרת. ממתין לטעינת העמוד...' ); } return; } דווח_כותרת_ממתינה = false; תיבת_כותרת.style.display = 'flex'; תיבת_כותרת.style.alignItems = 'center'; תיבת_כותרת.style.gap = '15px'; const כפתור_מאסטר = document.createElement('button'); כפתור_מאסטר.id = 'yad2-master-fetch-btn'; כפתור_מאסטר.type = 'button'; כפתור_מאסטר.innerText = '📞 שלוף את כל הטלפונים (יתכן חסימת בוט)'; // בדיוק אותו עיצוב כמו הכפתור שבתוך כל מודעה עיצוב_כפתור_עברי(כפתור_מאסטר); כפתור_מאסטר.addEventListener('click', (אירוע) => { אירוע.preventDefault(); אירוע.stopPropagation(); לוג( 'מידע', 'נלחץ הכפתור הראשי – מתחיל סריקה של מודעות פרטיות בלבד.' ); if (isBatchRunning) { לוג( 'אזהרה', 'השליפה כבר מתבצעת. מתעלם מהלחיצה הנוספת.' ); return; } שלוף_את_כל_הפרטיים(כפתור_מאסטר); }); const סך_המודעות = document.querySelector('[data-testid="total-items"]'); if (סך_המודעות) { תיבת_כותרת.insertBefore( כפתור_מאסטר, סך_המודעות.nextSibling ); } else { תיבת_כותרת.appendChild(כפתור_מאסטר); } לוג( 'הצלחה', 'כפתור השליפה הראשי הוזרק בהצלחה ונמצא במקום המקורי.' ); } // ============================================================ // כפתורים בתוך מודעות פרטיות בלבד // ============================================================ function הכנס_כפתורי_מודעות() { const מודעות = קבל_מודעות_פרטיות(); if (מודעות.length !== מספר_מודעות_פרטיות_אחרון) { מספר_מודעות_פרטיות_אחרון = מודעות.length; לוג( 'מידע', `זוהו ${מודעות.length} מודעות פרטיות בעמוד.` ); } מודעות.forEach((מודעה) => { // אם כבר הוספנו כפתור למודעה הזאת if (מודעה.dataset.yad2injected === 'true') { return; } const itemId = חלץ_ID_מודעה(מודעה); if (!itemId) { לוג( 'אזהרה', 'נמצאה מודעה פרטית אך לא הצלחתי לחלץ את מזהה המודעה.' ); return; } const תיבת_צד_שמאל = מודעה.querySelector( '[data-testid="promotion-left-side-box"]' ) || מודעה.querySelector( '[data-testid="feed-item-left-side"]' )?.parentNode || מודעה.querySelector( '[data-testid="price"]' )?.closest('div'); if (!תיבת_צד_שמאל) { לוג( 'המתנה', `נמצאה מודעה פרטית (${itemId}), אבל אזור המחיר עדיין לא נטען. ממתין...` ); return; } מודעה.dataset.yad2injected = 'true'; const תיבה = document.createElement('div'); תיבה.className = 'yad2-custom-container'; תיבה.dataset.itemid = itemId; תיבה.dataset.רכב = קבל_שם_רכב(מודעה); תיבה.dataset.מצב = 'חדש'; תיבה.style.cssText = [ 'margin-bottom: 6px', 'direction: rtl', 'text-align: right', 'display: flex', 'flex-direction: column', 'align-items: flex-start', 'clear: both', 'position: relative', 'z-index: 999' ].join(';'); const כפתור = document.createElement('button'); כפתור.type = 'button'; כפתור.className = 'yad2-single-btn'; כפתור.innerText = '📞 שלוף טלפון'; עיצוב_כפתור_עברי(כפתור); const תוצאת_שליפה = document.createElement('div'); תוצאת_שליפה.className = 'yad2-ui-box'; תוצאת_שליפה.style.cssText = [ 'font-size: 13px', 'font-weight: bold', 'color: #2c3e50', 'display: none', 'margin-top: 2px', 'background: rgba(255,255,255,0.95)', 'padding: 3px 8px', 'border-radius: 4px', 'box-shadow: 0 1px 3px rgba(0,0,0,0.15)', 'direction: rtl' ].join(';'); תוצאת_שליפה.dataset.מצב = 'חדש'; כפתור.addEventListener('click', (אירוע) => { אירוע.preventDefault(); אירוע.stopPropagation(); const שם_רכב = תיבה.dataset.רכב || 'מודעה פרטית'; לוג( 'מידע', `נלחץ כפתור שליפה – ${שם_רכב} | מזהה: ${itemId}` ); if (תוצאת_שליפה.dataset.מצב === 'טוען') { לוג( 'אזהרה', `השליפה כבר מתבצעת עבור ${שם_רכב}.` ); return; } כפתור.style.display = 'none'; תוצאת_שליפה.style.display = 'inline-block'; שלוף_מודעה_פרטית( itemId, תוצאת_שליפה, שם_רכב ); }); תיבה.appendChild(כפתור); תיבה.appendChild(תוצאת_שליפה); תיבת_צד_שמאל.insertBefore( תיבה, תיבת_צד_שמאל.firstChild ); לוג( 'הצלחה', `כפתור שליפה נוסף למודעה פרטית – ${תיבה.dataset.רכב} | מזהה: ${itemId}` ); }); } // ============================================================ // שליפת טלפון ממודעה פרטית // ============================================================ function שלוף_מודעה_פרטית( itemId, uiBox, carName = 'מודעה פרטית' ) { return new Promise((resolve) => { uiBox.dataset.מצב = 'טוען'; uiBox.innerText = '⏳ שולף...'; uiBox.style.color = '#f39c12'; לוג( 'המתנה', `מתחיל שליפה – ${carName} | מזהה: ${itemId}` ); const cleanUrl = `${window.location.origin}/item/${itemId}`; const iframe = document.createElement('iframe'); iframe.src = cleanUrl; iframe.style.display = 'none'; iframe.setAttribute('aria-hidden', 'true'); document.body.appendChild(iframe); לוג( 'מידע', `פתחתי חלון נסתר למודעה ${itemId}. ממתין לטעינת המודעה...` ); let סיים = false; let detailsClicked = false; let attempts = 0; let checkInterval = null; let phoneCheckInterval = null; const סיום = ( מצב, טקסט, צבע = '#e74c3c' ) => { if (סיים) { return; } סיים = true; if (checkInterval) { clearInterval(checkInterval); } if (phoneCheckInterval) { clearInterval(phoneCheckInterval); } uiBox.dataset.מצב = מצב; uiBox.innerText = טקסט; uiBox.style.color = צבע; נקה_מסגרת(iframe); resolve(); }; const חלץ_תוצאה = (iframeDoc) => { const phoneLink = iframeDoc.querySelector('a[href^="tel:"]'); if (!phoneLink) { return false; } const href = phoneLink.getAttribute('href') || ''; const phoneNum = phoneLink.innerText.trim() || href.replace(/^tel:/i, '').trim(); let ownerName = 'מוכר'; const nameElement = iframeDoc.querySelector( '.private-contact-info-module-scss-module__szN9CG__name' ) || iframeDoc.querySelector( 'li[data-testid="private-contact-info"] span:first-child' ) || iframeDoc.querySelector( '[class*="contact-info"] span' ); if ( nameElement && nameElement.innerText.trim() ) { ownerName = nameElement.innerText.trim(); } uiBox.dataset.מצב = 'הושלם'; uiBox.innerText = `👤 ${ownerName} | 📞 ${phoneNum}`; uiBox.style.color = '#16c39b'; לוג( 'הצלחה', `נשלף בהצלחה – ${carName} | מוכר: ${ownerName} | טלפון: ${phoneNum}` ); סיום( 'הושלם', `👤 ${ownerName} | 📞 ${phoneNum}`, '#16c39b' ); return true; }; iframe.onload = () => { if (סיים) { return; } לוג( 'הצלחה', `המודעה ${itemId} נטענה. עכשיו מחפש את כפתור הצגת הטלפון...` ); let iframeDoc; try { iframeDoc = iframe.contentDocument || iframe.contentWindow.document; } catch (שגיאה) { לוג( 'שגיאה', `לא ניתן לגשת לתוכן המודעה ${itemId}.`, שגיאה ); סיום( 'שגיאה', '❌ נחסם ע״י הגנה' ); return; } if (!iframeDoc || !iframeDoc.body) { לוג( 'שגיאה', `תוכן המודעה ${itemId} עדיין לא מוכן.` ); return; } // לפעמים הטלפון כבר נמצא בלי צורך בלחיצה if (חלץ_תוצאה(iframeDoc)) { return; } checkInterval = setInterval(() => { if (סיים) { return; } attempts++; try { iframeDoc = iframe.contentDocument || iframe.contentWindow.document; if (!iframeDoc || !iframeDoc.body) { return; } // בדיקה האם הטלפון כבר הופיע if (חלץ_תוצאה(iframeDoc)) { return; } const showPhoneBtn = iframeDoc.querySelector( '[data-testid="show-details-button"]' ); if ( showPhoneBtn && !detailsClicked ) { detailsClicked = true; לוג( 'מידע', `נמצא כפתור הצגת הטלפון עבור ${carName}. לוחץ עליו...` ); showPhoneBtn.click(); לוג( 'המתנה', `הכפתור נלחץ. ממתין שהמספר יופיע עבור ${carName}...` ); if (checkInterval) { clearInterval(checkInterval); } let phoneAttempts = 0; phoneCheckInterval = setInterval(() => { if (סיים) { return; } phoneAttempts++; try { iframeDoc = iframe.contentDocument || iframe.contentWindow.document; if ( !iframeDoc || !iframeDoc.body ) { return; } if ( חלץ_תוצאה(iframeDoc) ) { return; } if ( phoneAttempts >= 25 ) { לוג( 'שגיאה', `המספר לא הופיע לאחר ההמתנה – ${carName}.` ); סיום( 'שגיאה', '❌ לא הצלחתי לשלוף טלפון' ); } } catch (שגיאה) { if ( phoneAttempts >= 25 ) { לוג( 'שגיאה', `שגיאה בקריאת פרטי הטלפון של ${carName}.`, שגיאה ); סיום( 'שגיאה', '❌ שגיאה בחילוץ' ); } } }, 400); } if ( !detailsClicked && attempts >= 24 ) { לוג( 'שגיאה', `לא נמצא כפתור הצגת הטלפון עבור ${carName}. ייתכן שהמודעה לא זמינה או שנמכרה.` ); סיום( 'שגיאה', '❌ לא זמין / נמכר' ); } } catch (שגיאה) { if (attempts >= 24) { לוג( 'שגיאה', `לא הצלחתי לקרוא את מודעה ${itemId}.`, שגיאה ); סיום( 'שגיאה', '❌ נחסם ע״י הגנה' ); } } }, 500); }; iframe.onerror = () => { לוג( 'שגיאה', `שגיאת רשת בטעינת המודעה ${itemId}.` ); סיום( 'שגיאה', '❌ שגיאת רשת' ); }; }); } // ============================================================ // שליפה מרוכזת של כל הפרטיים בלבד // ============================================================ async function שלוף_את_כל_הפרטיים(כפתור_מאסטר) { if (isBatchRunning) { לוג( 'אזהרה', 'השליפה המרוכזת כבר פועלת.' ); return; } isBatchRunning = true; כפתור_מאסטר.disabled = true; כפתור_מאסטר.innerText = '⏳ שולף טלפונים...'; כפתור_מאסטר.style.opacity = '0.7'; const containers = Array.from( document.querySelectorAll( '.yad2-custom-container' ) ).filter( (container) => container.dataset.itemid ); לוג( 'מידע', `נמצאו ${containers.length} מודעות פרטיות מוכנות לשליפה.` ); if (containers.length === 0) { לוג( 'אזהרה', 'לא נמצאו מודעות פרטיות בעמוד.' ); כפתור_מאסטר.disabled = false; כפתור_מאסטר.innerText = '📞 שלוף את כל הטלפונים'; כפתור_מאסטר.style.opacity = '1'; isBatchRunning = false; return; } let להשליף = 0; containers.forEach((container) => { const מצב = container.querySelector( '.yad2-ui-box' )?.dataset.מצב || 'חדש'; if ( מצב !== 'הושלם' && מצב !== 'שגיאה' ) { const singleBtn = container.querySelector( '.yad2-single-btn' ); const uiBox = container.querySelector( '.yad2-ui-box' ); if (singleBtn) { singleBtn.style.display = 'none'; } if (uiBox) { uiBox.style.display = 'inline-block'; uiBox.innerText = '⏱️ ממתין בתור...'; uiBox.style.color = '#7f8c8d'; uiBox.dataset.מצב = 'בתור'; } להשליף++; } }); לוג( 'המתנה', `מכין תור לשליפה של ${להשליף} מודעות פרטיות.` ); let מספר_נוכחי = 0; let מספר_הצלחות = 0; let מספר_שגיאות = 0; for (const container of containers) { const uiBox = container.querySelector( '.yad2-ui-box' ); const itemId = container.dataset.itemid; const carName = container.dataset.רכב || 'מודעה פרטית'; if (!uiBox || !itemId) { continue; } const מצב = uiBox.dataset.מצב || 'חדש'; if ( מצב === 'הושלם' || מצב === 'שגיאה' ) { continue; } מספר_נוכחי++; uiBox.style.display = 'inline-block'; uiBox.innerText = `⏳ שולף (${מספר_נוכחי}/${להשליף})...`; uiBox.style.color = '#f39c12'; לוג( 'המתנה', `מתחיל עכשיו ${מספר_נוכחי}/${להשליף}: ${carName}` ); await שלוף_מודעה_פרטית( itemId, uiBox, carName ); if ( uiBox.dataset.מצב === 'הושלם' ) { מספר_הצלחות++; } else { מספר_שגיאות++; } if ( מספר_נוכחי < להשליף ) { const delay = Math.floor( Math.random() * 2000 ) + 2000; לוג( 'המתנה', `המודעה נשלפה. ממתין ${delay / 1000} שניות לפני המודעה הבאה...` ); await new Promise( (resolve) => setTimeout( resolve, delay ) ); } } כפתור_מאסטר.disabled = false; כפתור_מאסטר.innerText = '✔ השליפה הושלמה'; כפתור_מאסטר.style.opacity = '1'; לוג( 'הצלחה', `השליפה המרוכזת הסתיימה. הצלחות: ${מספר_הצלחות} | שגיאות: ${מספר_שגיאות} | טופלו: ${מספר_נוכחי}` ); setTimeout(() => { כפתור_מאסטר.innerText = '📞 שלוף את כל הטלפונים'; isBatchRunning = false; לוג( 'מידע', 'כפתור השליפה הראשי חזר למצב רגיל ומוכן להפעלה נוספת.' ); }, 4000); } // ============================================================ // ניקוי // ============================================================ function נקה_מסגרת(iframe) { if ( iframe && iframe.parentNode ) { iframe.parentNode.removeChild( iframe ); } } // ============================================================ // אתחול // ============================================================ function אתחול() { הכנס_כפתור_מאסטר(); הכנס_כפתורי_מודעות(); } לוג( 'הצלחה', 'הסקריפט נטען ומתחיל לעקוב אחר מודעות פרטיות בלבד.' ); לוג( 'מידע', 'סוגי המודעות המותרים: private-vehicle / private-vehicle-no-footer בלבד.' ); אתחול(); const observer = new MutationObserver(() => { אתחול(); }); observer.observe( document.body, { childList: true, subtree: true } ); לוג( 'הצלחה', 'המאזין לעדכונים דינמיים של יד2 הופעל.' ); })();וכך זה נראה

-
שיפור חווית החיפוש ביד 2@מאיר תודה רבה
בשביל לעשות תוסף מוכן צריך לשלם 5$ חד פעמי וכן לקבל איזשהו ותק (שים לב שבתוסף של לקסוס יש אזהרה לפני ההתקנה)
מה שפירסמתי מתאים לכל אחד,
למי שלא מכיר, טמפרמונקי זה תוסף שמאפשר להוסיף לו סקריפטים שיעשו כל מה שבא לך בראש, למשל אתה מגדיר לו שיעשה התאמת מחיר אוטומטי בטמו בלי שתצטרך ללחוץ כלום (כן, עשיתי לעצמי…), או שבכל פעם שנכנסים לרכבים זה לזה הוא יפתח את כל ההתראות בחלון חדש, בקיצור - קודים… לי אישיתי יש מעל 50 סקריפטים כאלה, וזה קצת…
מי שאין לו יכול להתקין מהחנות של גוגל כאן, זהירות, זה ממכר!
אחרי שמותקן טמפרמונקי לוחצים על צור סקריפט חדש, מכניסים את הקוד שהבאתי למעלה, שומרים וזהו…עריכה: פירסמתי את הסקריפט בגיטהאב, לחיצה אחת כאן ו"התקן" (אחרי התקנת טמפרמונקי)
התקנה מגיטהאב נתמכת בעדכונים אוטומטיים שיהיו בעז"ה -
טויוטה ורסו מול מיצובישי אאוטלנדר (2013-2015)אווווווווווווווףףףףףףףף
אני כבר מסובך שבוע, אין לי איך להחליט
הדברים שהכי חשובים לי זה 7 מקומות ואמינות - זה יש בשניהם
אח"כ זה תא מטען ועלות דלק - בשניהם לא משהו
כל השאר - בעיני פחות חשוב, מעדיף לוותר בשביל תא מטען או דלקמאין יבוא עזרי???
-
שיפור חווית החיפוש ביד 2@Lexus
מעולה!!!
אחרי שעבדתי גם על זה לעצמי, אמרתי שנעלה את זה לפורום ואז ראיתי שהקדמת אותי
בכל מקרה, הסינון של סוכנויות שלך לא עובד לי וגם שליפת הנתונים מאוד איטית
זה הסקריפט שלי ואולי כדאי שתשלב אותו, אגב הוא עובד גם בעמוד המועדפים ולחיצה על מיקום תפתח מפות גוגל…// ==UserScript== // @name יד2 - סינון סוכנויות, הוספת מפות ושליפת נתונים // @namespace http://tampermonkey.net/ // @version 2.8 // @description מערכת סינון חכמה, שליפת נתונים עם מטמון מתקדם, חיווי טעינה וקישור למפות // @author You // @match *://www.yad2.co.il/vehicles/* // @match *://www.yad2.co.il/my-favorites* // @grant none // ==/UserScript== (function() { 'use strict'; console.log('[יד2 סקריפט] --- התחלת ריצת סקריפט: גרסה 2.8 ---'); let isFilterActive = localStorage.getItem('hideYad2Agencies') === 'true'; const carDataCache = new Map(); // ========================================== // חלק 1: מנגנון סינון סוכנויות // ========================================== function toggleAgencies() { if (window.location.href.includes('my-favorites')) return; const allItems = document.querySelectorAll('a[data-listing-type]'); let hiddenCount = 0; allItems.forEach(item => { const listingType = item.getAttribute('data-listing-type') || ''; const isAgency = listingType.includes('agency') || item.querySelector('[class*="agencyName"]'); if (isAgency) { item.style.display = isFilterActive ? 'none' : ''; if (isFilterActive) hiddenCount++; } }); if (isFilterActive && hiddenCount > 0) { console.log(`[יד2 סקריפט] הוסתרו ${hiddenCount} רכבי סוכנויות.`); } } function createCheckbox(container) { if (document.getElementById('hide-agency-checkbox') || window.location.href.includes('my-favorites')) return; const wrapper = document.createElement('div'); wrapper.style.cssText = 'display: flex; align-items: center; margin-right: auto; margin-left: 20px; padding: 5px 10px; background-color: #f5f5f5; border-radius: 5px; border: 1px solid #ccc;'; const checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.id = 'hide-agency-checkbox'; checkbox.style.cssText = 'cursor: pointer; margin-left: 8px; width: 16px; height: 16px;'; checkbox.checked = isFilterActive; checkbox.addEventListener('change', (e) => { isFilterActive = e.target.checked; localStorage.setItem('hideYad2Agencies', isFilterActive); console.log(`[יד2 סקריפט] סינון סוכנויות: ${isFilterActive ? 'פועל' : 'כבוי'}`); toggleAgencies(); }); const label = document.createElement('label'); label.htmlFor = 'hide-agency-checkbox'; label.innerText = 'הסתר רכבי סוכנויות'; label.style.cssText = 'cursor: pointer; font-size: 14px; font-weight: bold; color: #333; margin: 0;'; wrapper.appendChild(checkbox); wrapper.appendChild(label); container.insertBefore(wrapper, container.childNodes[1] || container.firstChild); console.log('[יד2 סקריפט] כפתור סינון סוכנויות נוסף בהצלחה.'); } // ========================================== // חלק 2: מנגנון שליפת נתונים // ========================================== function createDisplayElement(kmValue, locValue, descValue) { const displayDiv = document.createElement('div'); displayDiv.className = 'yad2-extra-data-injected'; // הוסר חיתוך הטקסט - הכרטיסייה תתרחב כלפי מטה בהתאם לאורך הטקסט displayDiv.style.cssText = 'margin-top: 8px; padding-top: 8px; border-top: 1px dashed #ccc; font-size: 14px; line-height: 1.5; color: #444; width: 100%; flex-basis: 100%; position: relative; z-index: 99;'; let locationHtml = `<span>${locValue}</span>`; if (locValue !== 'לא צוין' && locValue.trim() !== '') { const mapsUrl = `https://www.google.co.il/maps/dir//${encodeURIComponent(locValue.trim())}?hl=iw`; locationHtml = `<a class="yad2-map-link" href="${mapsUrl}" target="_blank" style="color: inherit; text-decoration: underline; font-weight: normal; cursor: pointer; position: relative; z-index: 100;" title="פתח מסלול ניווט בגוגל מפות">${locValue} 🗺️</a>`; } displayDiv.innerHTML = ` <div><strong>ק"מ:</strong> ${kmValue}</div> <div><strong>מיקום:</strong> ${locationHtml}</div> <div><strong>פרטים:</strong> ${descValue}</div> `; const mapLink = displayDiv.querySelector('.yad2-map-link'); if (mapLink) { mapLink.addEventListener('click', (e) => { e.stopPropagation(); }); } return displayDiv; } async function processCarCard(card, url) { const isFavoritesPage = window.location.href.includes('my-favorites'); // בעמוד המועדפים אנחנו בודקים את האבא של הכרטיסיה (כמו בעיצוב הישן) כדי לא לדרוס את המבנה const containerToCheck = isFavoritesPage ? (card.closest('article') || card.parentNode) : card; if (containerToCheck.querySelector('.yad2-extra-data-injected') || containerToCheck.querySelector('.yad2-loading-data')) return; const cleanUrl = url.split('?')[0]; const loadingDiv = document.createElement('div'); loadingDiv.className = 'yad2-loading-data'; loadingDiv.style.cssText = 'margin-top: 8px; font-size: 13px; color: #888; font-style: italic; width: 100%; flex-basis: 100%;'; loadingDiv.innerHTML = '⏳ שולף נתונים...'; // פיצול ההזרקה: לוגיקה נפרדת למועדפים ולדף הראשי if (isFavoritesPage) { const favoritesTitlesSection = containerToCheck.querySelector('[class*="titlesSection"]'); if (favoritesTitlesSection) { favoritesTitlesSection.appendChild(loadingDiv); } else { containerToCheck.appendChild(loadingDiv); } } else { const mainPageInfoBox = card.querySelector('[data-testid="feed-item-info"]'); if (mainPageInfoBox) { mainPageInfoBox.style.display = 'flex'; mainPageInfoBox.style.flexWrap = 'wrap'; mainPageInfoBox.appendChild(loadingDiv); } else { card.appendChild(loadingDiv); } } if (!carDataCache.has(cleanUrl)) { const fetchPromise = fetch(cleanUrl) .then(async (response) => { if (!response.ok) throw new Error(`Network response was not ok (${response.status})`); const html = await response.text(); const parser = new DOMParser(); const doc = parser.parseFromString(html, 'text/html'); let kmValue = 'לא צוין', locValue = 'לא צוין', descValue = 'אין פרטים נוספים'; const kmCard = doc.querySelector('[data-testid="we-checked-km-card"]'); if (kmCard) { const valElement = kmCard.querySelector('[data-testid="detail-card-value"]'); if (valElement) kmValue = valElement.textContent.trim(); } const locElement = doc.querySelector('[data-testid="location"]'); if (locElement) locValue = locElement.textContent.trim(); const descElement = doc.querySelector('[data-testid="vehicle-description"]'); if (descElement) descValue = descElement.textContent.trim(); await new Promise(resolve => setTimeout(resolve, 500 + Math.random() * 1000)); return { kmValue, locValue, descValue }; }) .catch(error => { console.error(`[יד2 סקריפט] שגיאה במשיכת נתונים עבור ${cleanUrl}:`, error); return null; }); carDataCache.set(cleanUrl, fetchPromise); } const data = await carDataCache.get(cleanUrl); if (loadingDiv.parentNode) { if (data) { const displayDiv = createDisplayElement(data.kmValue, data.locValue, data.descValue); loadingDiv.replaceWith(displayDiv); } else { loadingDiv.innerHTML = '❌ שגיאה בשליפת הנתונים'; loadingDiv.style.color = '#c00'; setTimeout(() => { if(loadingDiv.parentNode) loadingDiv.remove(); }, 3000); } } } function scanForCars() { const itemCards = document.querySelectorAll('a[href*="item/"]'); let processedCount = 0; const isFavoritesPage = window.location.href.includes('my-favorites'); for (let card of itemCards) { const url = card.href; if (url.includes('/item/')) { const containerToCheck = isFavoritesPage ? (card.closest('article') || card.parentNode) : card; if (!containerToCheck.querySelector('.yad2-extra-data-injected') && !containerToCheck.querySelector('.yad2-loading-data')) { processCarCard(card, url); processedCount++; } } } if (processedCount > 0) { console.log(`[יד2 סקריפט] זוהו ${processedCount} רכבים חדשים, מתחיל בשליפה.`); } if (isFilterActive) { toggleAgencies(); } } // ========================================== // חלק 3: הפעלת הכלים והאזנה לשינויים // ========================================== let scanTimeout = null; const observer = new MutationObserver((mutations) => { const sortContainer = document.querySelector('[class*="sortAndTotalBox"]'); if (sortContainer && !document.getElementById('hide-agency-checkbox')) { createCheckbox(sortContainer); } let shouldScan = false; for (let mutation of mutations) { if (mutation.addedNodes.length > 0) { shouldScan = true; break; } } if (shouldScan) { if (scanTimeout) clearTimeout(scanTimeout); scanTimeout = setTimeout(() => { scanForCars(); }, 300); } }); console.log('[יד2 סקריפט] מפעיל מאזין לשינויים בעמוד...'); observer.observe(document.body, { childList: true, subtree: true }); setTimeout(scanForCars, 1500); })();וכך זה נראה:

-
טויוטה ורסו מול מיצובישי אאוטלנדר (2013-2015)צריכת דלק אמיתית יש למישהו? (אאוטלנדר מול ורסו)
לא ציטוטים מאתרים -
טויוטה ורסו מול מיצובישי אאוטלנדר (2013-2015)סליחה על ההקפצה
תודה לכל הכותבים והסוקרים
חסר לי פה השוואה של תא מטען כשכל המושבים פתוחים
מישהו מתנדב להשוות??שנה טובה!!!
-
שרשור "חיות על הכביש"ילד מתפרץ לכביש
קובץ דחוס.mp4 -
שרשור דיונים אלי אקספרס (פרט לקופונים)@לחי כתב בשרשור דיונים אלי אקספרס (פרט לקופונים):
@הכל-מלמעלה כותב לי אתר לא מאובטח.
לי זה מאובטח
אתה בבזק? סתכל כאן -
איפה אפשר לקנות את החלק הזה? (מקט A6510102667)
מספר מק"ט A6510102667
למרצדס V220 -
שרשור דיונים אלי אקספרס (פרט לקופונים)הכוונה בזה שבאתרים בינלאומיים יש רק מידע עד להגעה לארץ אבל בארץ יש רק מידע חלקי, למשל הגיע לנקודת האיסוף, בדרך וכו’
בחבילוג יש גם מעקב אחר האתרים הישראלים כלומר שהוא מזהה לבד איזה חברה בפועל עושה את המשלוח ועוקב דרך האתר שלה
גם יש אתרים כמו HFD/בר הפצה/צ’יטה שהם דורשים מספר טלפון כדי לעקוב אחרי ההזמנה, אז בחבילוג הוא מזהה שזה החברות האלו ומבקש מספר טלפון וכך אפשר להגיע למידע שלהם ממש
במיילוג ובצ’יטה לא תמיד מגיע מייל אז ככה אפשר מיד בתחילת המשלוח כבר להגיע לקישור שהם שולחים במייל כדי לבחור נקודת איסוף וכו’
בקיצור, תנסו
לדעתי כדאי מאוד לפדבק את המפתח כי זה בפיילוט כרגע ועוד יותר כדאי זה להציע מספרי מעקב חדשים שיפורים -
שרשור דיונים אלי אקספרס (פרט לקופונים)רציתי להמליץ לציבור על אתר חדש למעקב אחרי חבילות
האתר מוצלח ביותר ויש לו ייחודיות בזה שהוא ממש עוקב אחרי חברות שילוח הישראליות ולא כמו כל האתרים שרק שולפים נתונים מאליאקספרס
בעל האתר השיק אותו כרגע בפיילוט והוא ממש רוצה שיאתגרו אותו במספרי מעקב חדשים כדי שאולי יהפוך את האתר לרשמי - אפשר להשאיר משוב בקלות
בהצלחה
https://chavilog.app/ -
מחיר הבנזין - עדכון חודשי (מעודכן ל-5.25)מחיר הדלק לחודש יולי 2026 – ירידה של 32 אגורות
המחיר המרבי לליטר בנזין 95 אוקטן נטול עופרת לצרכן בתחנה בשירות עצמי (כולל מע"מ) לא יעלה על 7.48 ש"ח לליטר, ירידה של 32 אגורות מעדכון קודם. תוספת בעד שירות מלא תעמוד על 25 אגורות לליטר (כולל מע"מ), ללא שינוי מעדכון קודם.
המחיר המרבי לליטר בנזין 95 אוקטן נטול עופרת לצרכן בתחנה בשירות עצמי באילת (ללא מע"מ) לא יעלה על 6.34 ש"ח לליטר, ירידה של 27 אגורות מעדכון קודם. תוספת בעד שירות מלא תעמוד על 21 אגורות (ללא מע"מ), ללא שינוי מעדכון קודם.
-
כיסוי לחלון ברכב (לא השחרה)מישהו מכיר את המוצר הזה ויש לו ניסיון עם זה?
האם המוצר הזה מתאים לקורולה?

יש בזה סוגים?
תודה לכולם -
רגע לפני שתבקש קישור למולטימדיה לרכב שלך - רשימת קישורים עדכניתבשיטוט ברחבי הפורום ראיתי שאין משהו ברור למיצובישי גרנדיס, אשמח לעזרה ממי שניסה
וכן, אני יודע על המורכבות והכיעור שלה
מישהו הביא את AT Frame אבל מישהו כתב שהכבל שם לא מתאים
עוד מישהו הביא את זה אבל הוא כתב שצריך לחתוך את הפנאל כדי להתאים
ואולי בכלל לקנות את הפאנל המלא ולנסות להתאים אותו לדגם שבארץ?
בקיצור, חייבים דחוף את אחד המומחים והבעלי חסד שיעשה סדר בענין - איזה פנאל מתאים ואיזה כבל מתאים? -
שרשור "חיות על הכביש"@אבי-ים
לא כ"כ שמים לב, אבל בהתחלה הוא החליק עם הרכב פעמיים כשפנה שמאלה לנתיב הנגדי ואח"כ יותר חזק כשהתיישר לימין (עדיין בנתיב הנגדי) - הוא כמעט התהפך
בסופו של דבר, מה שהכי קיצר לו - זה הנסיעה באדום
ואגב, מי שלא ראה, מדובר בבנדוד… -
שרשור "חיות על הכביש"סליחה על העריכה…
אולי הוא מיהר לשבת
צפו עד הסוף…
פרויקט וידאו1.mp4 -
סקירת כלל מצלמות הדרך המומלצות לרכב - מדריך מתעדכן - תגובות למדריך@טכנולוג
יצא Z60 MASTER - כדאי להוסיף לסקירה -
עדכון תוכנה ts10s@מיישה כתב בעדכון תוכנה ts10s:
@מאירי כתב בעדכון תוכנה ts10s:
אשמח לקבל גרסה מעודכנת להורדה, תודה רבה.
האם אתה יודע מה עודכן בגירסה הזו?
והאם לא צריך קודם לוודא שזה מתאים למערכת? כי זכור לי שדיברו על כך שיש כמה גרסאות למולטימדיה
תודה רבה

