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

    ⏪ אופציית שליטה על הדילוג בין הקבצים בשלוחת השמעת קבצים.

    מתוזמן נעוץ נעול הועבר טיפים עצות והדגמות מהמשתמשים
    1 פוסטים 1 כותבים 11 צפיות 1 עוקבים
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • תגובה כנושא
    התחברו כדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • י מנותק
      יהודה צ. כ.
      נערך לאחרונה על ידי יהודה צ. כ.

      תגובה: הצעת ייעול: שליטה על כמות הדילוג במקש 8 במהלך השמעה 🎧⏩ (לניווט מהיר בשלוחות עמוסות!)

      בהמשך למה שביקשו פה אני משתף קוד php להגדרה מראש של שמות הקבצים אליהם יועברו, (מכיוון שעדיין אין לי גמח שרתים חינמיים, אז אני רק משתף את הקוד ואולי בהמשך אני גם אעלה שיתוף של קישור לשימוש בו.)

      להלן הקוד:

      <?php
      
      header('Content-Type: text/plain; charset=utf-8');
      
      $apiCallId = $_REQUEST['ApiCallId'] ?? '';
      $apiExtension = $_REQUEST['ApiExtension'] ?? '';
      $hangup = $_REQUEST['hangup'] ?? '';
      $what = $_REQUEST['what'] ?? '';
      
      if ($apiCallId === '') {
          exit('Missing ApiCallId');
      }
      
      if ($apiExtension === '') {
          exit('Missing ApiExtension');
      }
      
      if ($hangup === 'yes') {
      
          foreach (glob(__DIR__ . '/counter_*.txt') as $counterFile) {
      
              $counters = json_decode(file_get_contents($counterFile), true);
      
              if (!is_array($counters)) {
                  continue;
              }
      
              unset($counters[$apiCallId]);
      
              file_put_contents(
                  $counterFile,
                  json_encode($counters),
                  LOCK_EX
              );
          }
      
          exit('hangup_ok');
      }
      
      $extensionKey = trim($apiExtension, '/');
      $extensionKey = str_replace('/', '_', $extensionKey);
      
      if ($extensionKey === '') {
          exit('Invalid ApiExtension');
      }
      
      $configFile = __DIR__ . "/settings_{$extensionKey}.txt";
      $dataFile = __DIR__ . "/counter_{$extensionKey}.txt";
      
      if (!file_exists($configFile)) {
          exit('Missing settings file');
      }
      
      if (!file_exists($dataFile)) {
          file_put_contents(
              $dataFile,
              json_encode([]),
              LOCK_EX
          );
      }
      
      $counters = json_decode(file_get_contents($dataFile), true);
      
      if (!is_array($counters)) {
          $counters = [];
      }
      
      $steps = [];
      $offset = null;
      
      foreach (file($configFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
      
          $line = trim($line);
      
          if ($line === '') {
              continue;
          }
      
          if (preg_match('/^offset\s*=\s*(-?\d+)$/i', $line, $match)) {
              $offset = (int)$match[1];
              continue;
          }
      
          if (!str_contains($line, '=')) {
              continue;
          }
      
          [$index, $value] = explode('=', $line, 2);
      
          if (!is_numeric($index)) {
              continue;
          }
      
          $steps[(int)$index] = trim($value);
      }
      
      if ($offset !== null) {
      
          if ($what === '') {
              exit('Missing what');
          }
      
          $fileName = basename($what);
      
          $dotPos = strrpos($fileName, '.');
      
          if ($dotPos !== false) {
              $fileName = substr($fileName, 0, $dotPos);
          }
      
          if (!ctype_digit($fileName)) {
              exit('Invalid filename in what');
          }
      
          $originalLength = strlen($fileName);
      
          $targetNumber = ((int)$fileName + $offset);
      
          $target = str_pad(
              (string)$targetNumber,
              $originalLength,
              '0',
              STR_PAD_LEFT
          );
      
          echo 'go_to_folder_and_play=' . $apiExtension . ',' . $target;
          exit;
      }
      
      ksort($steps);
      
      if (empty($steps)) {
          exit('No steps configured');
      }
      
      $currentStep = $counters[$apiCallId] ?? 0;
      
      if (isset($steps[$currentStep])) {
          $target = $steps[$currentStep];
      } else {
          $target = end($steps);
      }
      
      $counters[$apiCallId] = $currentStep + 1;
      
      file_put_contents(
          $dataFile,
          json_encode($counters),
          LOCK_EX
      );
      
      echo 'go_to_folder_and_play=' . $apiExtension . ',' . $target;
      

      מצב כניסה לפי מונה

      עובר כל פעם למספר קובץ הבא המוגדר.
      יש ליצור קבצים בשם:
      settings_שם השלוחה
      יש להחליף סלשים ב '_' לדוגמא, לשלוחה 1/1/1 יש לקרוא לקובץ:
      settings_1_1_1.txt

      בתוך הקבצים יש להכניס ככה במספרים עוקבים:
      0=שם הקובץ
      1=שם הקובץ

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

      מצב דילוג בקצב מוגדר מראש

      יש להכניס לקובץ הטקסט, (עם אותו שם כמו שהוסבר לעיל.) offset=כמות ההודעות לדילוג בכל פעם.

      • שימו לב, הקוד יצור קבצי מונה שבודקים כמה כניסות בוצעו, ניתן להתעלם לגמרי מהקבצים הללו.
      תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • פוסט ראשון
        פוסט אחרון