• דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private
    • הרשמה
    • התחברות

    ניתוב מהשמעת קבצים לכמה שלוחות API

    מתוזמן נעוץ נעול הועבר טיפים עצות והדגמות מהמשתמשים
    26 פוסטים 7 כותבים 656 צפיות 4 עוקבים
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • תגובה כנושא
    התחברו כדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • ת מנותק
      תות לבן @אA
      נערך לאחרונה על ידי

      @אA אז מה תכל'ס זה נראה שזה מנסה לעבור אבל משהו תוקע מה נראה לך הבעיה?

      תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • י מנותק
        יצחק י. @איל משולש
        נערך לאחרונה על ידי יצחק י.

        @איל-משולש
        אני רואה שניתן להגדיר במודול מקש תוך כדי השמעה, ומקש בתפריט כוכבית (PressKey_*-8)
        אני רוצה להגדיר במקש control_after_play_moreAX
        בתפריט לאחר ההשמעה (after_play_tfr=tfr_more_options)
        האם אפשרי במודול הנ"ל

        תודה רבה
        וכן האם המודול עדיין עובד?

        תגובה 1 תגובה אחרונה תגובה ציטוט 0
        • ה מנותק
          הדיבל המעופף @איל משולש
          נערך לאחרונה על ידי

          @איל-משולש
          איך וכיצד שמים את הפרמטרים לשליחה? והאם המודל עדיין פעיל?

          א תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • א מנותק
            איל משולש @הדיבל המעופף
            נערך לאחרונה על ידי

            @הדיבל-המעופף אני לא בטוח שהוא אכן פעיל
            אבל בעיקרון אתה אמור לשים את כל הפרמטרים של כל המודלים יחד (כל הפרמטרים ישלחו לכל המודלים, אבל זה לא ישפיע עליהם) רק צריך לשים לב לשמור על מספר סידורי תקין

            ה תגובה 1 תגובה אחרונה תגובה ציטוט 0
            • ה מנותק
              הדיבל המעופף @איל משולש
              נערך לאחרונה על ידי

              @איל-משולש כתב:

              כל הפרמטרים ישלחו לכל המודלים, אבל זה לא ישפיע עליהם)

              אתה בטוח?

              י א 2 תגובות תגובה אחרונה תגובה ציטוט 0
              • י מנותק
                יצחק י. @הדיבל המעופף
                נערך לאחרונה על ידי יצחק י.

                @הדיבל-המעופף
                תנסה את זה (תפתח ב-HTML)

                <!DOCTYPE html>
                <html lang="he" dir="rtl">
                <head>
                    <meta charset="UTF-8">
                    <meta name="viewport" content="width=device-width, initial-scale=1.0">
                    <title>מחולל ניתוב מקשים ל-API - ימות המשיח</title>
                    <style>
                        body {
                            font-family: system-ui, -apple-system, sans-serif;
                            background-color: #f8fafc;
                            color: #1e293b;
                            margin: 0;
                            padding: 20px;
                        }
                        header {
                            text-align: center;
                            margin-bottom: 25px;
                        }
                        header h1 {
                            color: #0284c7;
                            margin-bottom: 5px;
                        }
                        .container {
                            display: flex;
                            gap: 25px;
                            max-width: 1200px;
                            margin: 0 auto;
                        }
                        .form-panel {
                            flex: 1;
                            background: #ffffff;
                            padding: 25px;
                            border-radius: 12px;
                            box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
                        }
                        .preview-panel {
                            width: 420px;
                            background: #1e293b;
                            color: #e2e8f0;
                            padding: 25px;
                            border-radius: 12px;
                            display: flex;
                            flex-direction: column;
                            position: sticky;
                            top: 20px;
                            height: fit-content;
                        }
                        fieldset {
                            border: 1px solid #cbd5e1;
                            border-radius: 10px;
                            padding: 20px;
                            margin-bottom: 30px;
                            background: #fafafa;
                            position: relative;
                        }
                        legend {
                            font-weight: bold;
                            color: #0284c7;
                            padding: 0 8px;
                            font-size: 1.1rem;
                        }
                        .form-group {
                            margin-bottom: 18px;
                        }
                        label {
                            display: block;
                            margin-bottom: 6px;
                            font-size: 0.92rem;
                            font-weight: 600;
                            color: #334155;
                        }
                        input[type="text"], select {
                            width: 100%;
                            padding: 10px 12px;
                            border: 1px solid #cbd5e1;
                            border-radius: 6px;
                            box-sizing: border-box;
                            direction: ltr;
                            text-align: left;
                            font-size: 0.95rem;
                            background: #fff;
                        }
                        select {
                            direction: rtl;
                            text-align: right;
                        }
                        input[type="text"]:focus, select:focus {
                            outline: none;
                            border-color: #0284c7;
                            box-shadow: 0 0 0 3px rgba(2, 132, 199, 0.15);
                        }
                        .param-row {
                            display: flex;
                            gap: 8px;
                            margin-bottom: 10px;
                            align-items: center;
                        }
                        .code-box {
                            background: #0f172a;
                            color: #38bdf8;
                            padding: 15px;
                            border-radius: 6px;
                            font-family: monospace;
                            white-space: pre-wrap;
                            direction: ltr;
                            text-align: left;
                            font-size: 0.85rem;
                            height: 420px;
                            overflow-y: auto;
                            line-height: 1.5;
                        }
                        .btn {
                            padding: 8px 14px;
                            border: none;
                            border-radius: 6px;
                            font-weight: bold;
                            cursor: pointer;
                            font-size: 0.85rem;
                            transition: background-color 0.2s;
                        }
                        .btn-add-key {
                            background-color: #10b981;
                            color: white;
                            width: 100%;
                            padding: 12px;
                            font-size: 1rem;
                            margin-top: 10px;
                        }
                        .btn-add-key:hover { background-color: #059669; }
                
                        .btn-add-param {
                            background-color: #0ea5e9;
                            color: white;
                            margin-top: 5px;
                        }
                        .btn-add-param:hover { background-color: #0284c7; }
                
                        .btn-remove {
                            background-color: #ef4444;
                            color: white;
                            position: absolute;
                            top: 15px;
                            left: 15px;
                            padding: 5px 10px;
                            font-size: 0.8rem;
                        }
                        .btn-remove:hover { background-color: #dc2626; }
                
                        .btn-remove-param {
                            background-color: #fee2e2;
                            color: #991b1b;
                            padding: 10px 12px;
                        }
                        .btn-remove-param:hover { background-color: #fecaca; }
                
                        .copy-btn {
                            background-color: #38bdf8;
                            color: #0f172a;
                            border: none;
                            padding: 12px;
                            border-radius: 6px;
                            font-weight: bold;
                            cursor: pointer;
                            margin-top: 15px;
                            font-size: 0.95rem;
                            transition: background-color 0.2s;
                        }
                        .copy-btn:hover { background-color: #7dd3fc; }
                    </style>
                </head>
                <body>
                
                    <header>
                        <h1>מחולל ניתוב מקשים ל-API (שיטת הגישור)</h1>
                        <p>ימות המשיח</p>
                    </header>
                
                    <div class="container">
                        <!-- פאנל הזנה -->
                        <div class="form-panel" id="formPanel">
                            <div id="keysContainer">
                                <!-- המקשים יתווספו לכאן דינמית -->
                            </div>
                            <button type="button" class="btn btn-add-key" onclick="addKeyBox()">+ הוסף מקש חדש</button>
                        </div>
                
                        <!-- פאנל תצוגה מקדימה -->
                        <div class="preview-panel">
                            <h3 style="margin-top:0; color:#38bdf8; border-bottom:1px solid #334155; padding-bottom:10px;">תצוגה מקדימה לקובץ INI</h3>
                            <div id="output" class="code-box"></div>
                            <button class="copy-btn" onclick="copyText()">העתק קוד ללוח</button>
                        </div>
                    </div>
                
                    <script>
                        const initialKeys = [
                            {
                                num: "9",
                                timing: "during",
                                url: "https://nituv-u1oq.onrender.com//api/process",
                                params: ["A=0799999999:1234"]
                            },
                            {
                                num: "*",
                                timing: "more",
                                url: "https://pirtey-vashmaha.onrender.com/",
                                params: ["token=0799999999:1234", "password=3312"]
                            }
                        ];
                
                        function renderInitial() {
                            const container = document.getElementById('keysContainer');
                            container.innerHTML = '';
                            initialKeys.forEach(k => addKeyBox(k.num, k.timing, k.url, k.params));
                        }
                
                        const validKeys = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "*", "#"];
                
                        function getKeysOptionsHtml(selectedVal) {
                            let html = '';
                            validKeys.forEach(k => {
                                let sel = (k === selectedVal) ? 'selected' : '';
                                html += `<option value="${k}" ${sel}>מקש ${k}</option>`;
                            });
                            return html;
                        }
                
                        function addKeyBox(keyNum = "9", keyTiming = "during", keyUrl = "", paramsList = [""]) {
                            const container = document.getElementById('keysContainer');
                            const fieldset = document.createElement('fieldset');
                            
                            let paramsHtml = '';
                            paramsList.forEach(p => {
                                paramsHtml += `
                                    <div class="param-row">
                                        <input type="text" class="param-input" value="${p}" oninput="updateCode()" placeholder="שם=ערך (לדוגמה: token=...)">
                                        <button type="button" class="btn btn-remove-param" onclick="removeParamRow(this)">✕</button>
                                    </div>
                                `;
                            });
                
                            fieldset.innerHTML = `
                                <button type="button" class="btn btn-remove" onclick="removeKeyBox(this)">הסר מקש</button>
                                <legend>הגדרת מקש</legend>
                                <div class="form-group">
                                    <label>בחר מקש:</label>
                                    <select class="key-num" onchange="updateCode()">
                                        ${getKeysOptionsHtml(keyNum)}
                                    </select>
                                </div>
                                <div class="form-group">
                                    <label>תזמון הקשה (קידומת):</label>
                                    <select class="key-timing" onchange="updateCode()">
                                        <option value="during" ${keyTiming === 'during' ? 'selected' : ''}>בעת שמיעת כל קובץ בשלוחה (control_playX)</option>
                                        <option value="more" ${keyTiming === 'more' ? 'selected' : ''}>בתפריט אפשרויות נוספות (control_play_moreAX)</option>
                                        <option value="after" ${keyTiming === 'after' ? 'selected' : ''}>בתפריט שלאחר ההשמעה (control_after_play_moreAX)</option>
                                        <option value="replies" ${keyTiming === 'replies' ? 'selected' : ''}>בעת שמיעת תגובות (control_play_repliesX)</option>
                                        <option value="playlist" ${keyTiming === 'playlist' ? 'selected' : ''}>בעת שמיעת רשימת השמעה (control_playlistX)</option>
                                    </select>
                                </div>
                                <div class="form-group">
                                    <label>כתובת לשליחה (כמו api_link בשלוחה רגילה):</label>
                                    <input type="text" class="key-url" value="${keyUrl}" oninput="updateCode()">
                                </div>
                                <div class="form-group">
                                    <label>פרמטרים לשלוחה (api_add_0, api_add_1 וכו'):</label>
                                    <div class="params-container">
                                        ${paramsHtml}
                                    </div>
                                    <button type="button" class="btn btn-add-param" onclick="addParamRow(this)">+ הוסף שורת פרמטר</button>
                                </div>
                            `;
                            container.appendChild(fieldset);
                            updateCode();
                        }
                
                        function removeKeyBox(btn) {
                            btn.closest('fieldset').remove();
                            updateCode();
                        }
                
                        function addParamRow(btn, val = "") {
                            const paramsContainer = btn.previousElementSibling;
                            const row = document.createElement('div');
                            row.className = 'param-row';
                            row.innerHTML = `
                                <input type="text" class="param-input" value="${val}" oninput="updateCode()" placeholder="שם=ערך">
                                <button type="button" class="btn btn-remove-param" onclick="removeParamRow(this)">✕</button>
                            `;
                            paramsContainer.appendChild(row);
                            updateCode();
                        }
                
                        function removeParamRow(btn) {
                            const container = btn.closest('.params-container');
                            if (container.querySelectorAll('.param-row').length > 1) {
                                btn.closest('.param-row').remove();
                                updateCode();
                            } else {
                                btn.closest('.param-row').querySelector('input').value = '';
                                updateCode();
                            }
                        }
                
                        function updateCode() {
                            let lines = [];
                            
                            // שרת הגישור הקבוע מראש ברקע
                            lines.push(`api_link=https://gesher.onrender.com/`);
                            lines.push(`api_add_0=plus=yes`);
                
                            let counter = 1;
                            let controls = [];
                
                            const keyFieldsets = document.querySelectorAll('#keysContainer fieldset');
                
                            keyFieldsets.forEach(fieldset => {
                                let kNum = fieldset.querySelector('.key-num').value;
                                let kTiming = fieldset.querySelector('.key-timing').value;
                                let kUrl = fieldset.querySelector('.key-url').value.trim();
                                let paramInputs = fieldset.querySelectorAll('.param-input');
                
                                if (kNum && kUrl) {
                                    let fullUrl = kUrl;
                                    let paramPairs = [];
                                    
                                    paramInputs.forEach(input => {
                                        let val = input.value.trim();
                                        if (val) paramPairs.push(val);
                                    });
                
                                    if (paramPairs.length > 0) {
                                        let separator = fullUrl.includes('?') ? '&' : '?';
                                        fullUrl += separator + paramPairs.join('&');
                                    }
                
                                    // בניית שם משתנה ה-api_add בהתאם לתווים מיוחדים
                                    let formattedKeyForApi = kNum;
                                    if (kTiming === 'more' || kTiming === 'after') {
                                        formattedKeyForApi = (kNum === '*') ? 'A' : (kNum === '#') ? 'B' : kNum;
                                    }
                
                                    lines.push(`api_add_${counter}=PressKey_${formattedKeyForApi}=${fullUrl}`);
                
                                    // עיבוד נכון של פקודות הבקרה לפי ימות המשיח ותזמון ההקשה
                                    let cleanKey = kNum.replace(/\*/g, 'A').replace(/#/g, 'B');
                                    
                                    if (kTiming === 'during') {
                                        controls.push(`control_play${cleanKey}=send_api`);
                                    } else if (kTiming === 'more') {
                                        controls.push(`control_play_more${cleanKey}=send_api`);
                                    } else if (kTiming === 'after') {
                                        // הוספת ההגדרה הנדרשת לתפריט שלאחר השמעה לפי התיעוד
                                        if (!lines.includes('after_play_tfr=tfr_more_options')) {
                                            // נוסיף בהמשך או למעלה
                                        }
                                        controls.push(`control_after_play_more${cleanKey}=send_api`);
                                    } else if (kTiming === 'replies') {
                                        controls.push(`control_play_replies${cleanKey}=send_api`);
                                    } else if (kTiming === 'playlist') {
                                        controls.push(`control_playlist${cleanKey}=send_api`);
                                    }
                
                                    counter++;
                                }
                            });
                
                            // אם יש תפריט שלאחר השמעה, נוסיף את ההגדרה הכללית הנדרשת
                            let hasAfterPlay = Array.from(keyFieldsets).some(f => f.querySelector('.key-timing').value === 'after');
                            if (hasAfterPlay) {
                                lines.splice(2, 0, `after_play_tfr=tfr_more_options`);
                            }
                
                            if (controls.length > 0) {
                                lines.push("");
                                controls.forEach(c => lines.push(c));
                            }
                
                            document.getElementById('output').innerText = lines.join('\n');
                        }
                
                        function copyText() {
                            let text = document.getElementById('output').innerText;
                            navigator.clipboard.writeText(text).then(() => {
                                alert('הקוד הועתק בהצלחה!');
                            });
                        }
                
                        renderInitial();
                    </script>
                </body>
                </html>
                
                

                לי המודול הזה לא עובד...
                תנסה....

                א תגובה 1 תגובה אחרונה תגובה ציטוט 0
                • א מנותק
                  איל משולש @הדיבל המעופף
                  נערך לאחרונה על ידי

                  @הדיבל-המעופף בטוח שמה?

                  תגובה 1 תגובה אחרונה תגובה ציטוט 0
                  • א מנותק
                    איל משולש @יצחק י.
                    נערך לאחרונה על ידי

                    @יצחק-י. מה זה?

                    י 2 תגובות תגובה אחרונה תגובה ציטוט 0
                    • י מנותק
                      יצחק י. @איל משולש
                      נערך לאחרונה על ידי

                      @איל-משולש המודול אמור לעבוד?

                      תגובה 1 תגובה אחרונה תגובה ציטוט 0
                      • י מנותק
                        יצחק י. @איל משולש
                        נערך לאחרונה על ידי יצחק י.

                        @איל-משולש כתב:

                        @יצחק-י. מה זה?

                        עשיתי בגמיני, דף להגדרת המודול

                        תגובה 1 תגובה אחרונה תגובה ציטוט 0

                        שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

                        נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

                        בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                        הרשמה התחברות
                        • פוסט ראשון
                          פוסט אחרון