Скрипт на Python при работе выводит сообщения о ошибках
    
  ![]()  | 
Наши проекты:
 Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту  | 
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.5] | 
 
 | 
		
  | 
    Скрипт на Python при работе выводит сообщения о ошибках
    
  | 
         
         
         
          
           Сообщ.
           #1
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Здравствуйте. 
        
      Есть скрипт на питоне, который делает: - Оформление конспекта в разметку (формат) Notion. - Добавление в конспект изображений / скриншотов видео рядом с временными метками тезисов. Скрипт работает. Но при работе выводит сообщения о обшибках. На результат не влияет, но хотел бы убрать. Подскажите как сделать (или отредактируйте код)? ![]() ![]() ![]() import cv2 import requests import os import re # Функция для извлечения кадра из видео def extract_frame(video_path, timestamp, output_image_path):     cap = cv2.VideoCapture(video_path)     if not cap.isOpened():         raise Exception("Не удалось открыть видеофайл.")     fps = cap.get(cv2.CAP_PROP_FPS)     frame_number = int(fps * timestamp)     cap.set(cv2.CAP_PROP_POS_FRAMES, frame_number)     ret, frame = cap.read()     if ret:         cv2.imwrite(output_image_path, frame)         print(f"Изображение сохранено в {output_image_path}")     else:         raise Exception("Не удалось извлечь кадр из видео.")     cap.release() # Функция для добавления временной метки на изображение (в правый нижний угол) def add_timestamp_to_image(image_path, timestamp):     image = cv2.imread(image_path)     if image is None:         raise Exception(f"Не удалось загрузить изображение по пути: {image_path}")     # Форматирование временной метки (без миллисекунд)     formatted_timestamp = "{:02}:{:02}:{:02}".format(int(timestamp // 3600),                                                      int((timestamp % 3600) // 60),                                                      int(timestamp % 60))     # Параметры текста     font = cv2.FONT_HERSHEY_SIMPLEX     font_scale = 1     font_color = (0, 0, 0)  # Черный цвет текста     thickness = 2     line_type = cv2.LINE_AA     # Позиция текста в правом нижнем углу     (text_width, text_height), baseline = cv2.getTextSize(formatted_timestamp, font, font_scale, thickness)     position = (image.shape[1] - text_width - 10, image.shape[0] - text_height - 10)     # Нанесение текста на изображение     cv2.putText(image,                  formatted_timestamp,                  position,                  font,                  font_scale,                  font_color,                  thickness,                  line_type)     # Сохранение изображения с временной меткой     output_image_with_timestamp = image_path.replace(".jpg", "_with_timestamp.jpg")     cv2.imwrite(output_image_with_timestamp, image)     return output_image_with_timestamp # Функция для загрузки изображения на Imageban def upload_to_imageban(image_path, secret_key):     url = "https://api.imageban.ru/v1"     headers = {         'Authorization': f'Bearer {secret_key}'     }     with open(image_path, 'rb') as image_file:         files = {'image': image_file}         response = requests.post(url, headers=headers, files=files)         if response.status_code == 200:             data = response.json()             if data.get('success'):                 return data['data']['link']             else:                 raise Exception("Не удалось получить ссылку на изображение.")         else:             raise Exception(f"Ошибка при загрузке изображения: {response.status_code} - {response.text}") # Функция для преобразования временной метки в секунды def time_to_seconds(time_str):     hours, minutes, seconds_milliseconds = time_str.split(':')     minutes, seconds_milliseconds = minutes, seconds_milliseconds.replace(',', '.')     seconds, milliseconds = seconds_milliseconds.split('.')     total_seconds = int(hours) * 3600 + int(minutes) * 60 + float(seconds) + float(milliseconds) / 1000     return total_seconds # Текст конспекта text = """ <details><summary><strong>1. Введение</strong></summary> - **Запуск проекта**: Проект официально запущен, инициирующий документ составлен, подписан и опубликован. [00:00:00,000 --> 00:00:08,099] - **Назначение руководителя проекта**: Если вас назначили руководителем проекта, вам нужно принять эту роль и ответственность. [00:00:08,099 --> 00:00:13,140] </details> <details><summary><strong>2. Принятие ответственности</strong></summary> - **Роль руководителя проекта**: Теперь вы несете ответственность за весь проект. Важно осознать это и начать предпринимать конкретные действия по управлению проектом. [00:00:14,119 --> 00:00:20,980] - **Действия руководителя**:   - Определение круга заинтересованных лиц проекта. [00:00:20,980 --> 00:00:29,199] </details> <details><summary><strong>3. Определение заинтересованных лиц</strong></summary> - **Кто такие заинтересованные лица?**:   1. **Люди или организации, которые могут повлиять на результаты проекта или на проект в целом**.   2. **Люди или организации, на кого результаты проекта или сам проект могут повлиять**.   3. **Те, кто считает, что проект или его результаты могут на них повлиять**. [00:00:29,199 --> 00:01:09,599] - **Пример: Проект "Свадьба"**:   - Заинтересованные лица: жених, невеста, родители жениха и невесты. [00:01:18,459 --> 00:01:32,459] - **Задачи руководителя проекта**:   1. Встретиться с заинтересованными лицами и выяснить возможный круг всех заинтересованных сторон проекта. [00:01:38,900 --> 00:01:48,359]   2. В результате встречи можно выявить дополнительные заинтересованные стороны:      - Начальники жениха и невесты.      - Про бабушка жениха.      - Компания по прокату свадебных лимузинов.      - ЗАГС. [00:01:48,359 --> 00:02:39,520] </details> <details><summary><strong>4. Ключевые заинтересованные стороны в компании</strong></summary> - **Основные заинтересованные стороны проекта в организации**:   1. Руководитель проекта.   2. Куратор проекта.   3. Заказчик проекта.   4. Проектный офис.   5. Команда проекта.   6. Команда управления проектом. [00:02:39,520 --> 00:03:07,960] - **Значение влияния**:   - Влияние заинтересованных сторон на достижение результатов проекта.   - Определение требований заинтересованных сторон для нивелирования их негативного влияния на успешность проекта. [00:03:07,960 --> 00:03:34,200] </details> <details><summary><strong>5. Широкий круг заинтересованных сторон</strong></summary> - **Дополнительные заинтересованные стороны**:   - Пользователи продукта.   - Конкуренты.   - Управляющий комитет проекта. [00:04:00,259 --> 00:04:26,519] - **Итог**: Список заинтересованных сторон можно увидеть на соответствующем слайде. [00:04:23,899 --> 00:04:26,519] </details> """ # Регулярное выражение для извлечения временных меток pattern = r'\[(\d{2}:\d{2}:\d{2},\d{3}) --> (\d{2}:\d{2}:\d{2},\d{3})\]' matches = re.findall(pattern, text) # Создаем словарь временных меток и файлов изображений timestamps = {} image_counter = 1 for start, end in matches:     timestamp = f"{start} --> {end}"     image_filename = f"image{image_counter}.jpg"     timestamps[timestamp] = image_filename     image_counter += 1 # Путь к папке для сохранения изображений image_folder = '/content/images/' os.makedirs(image_folder, exist_ok=True) # Задаем параметры video_path = '/content/drive/My Drive/Google Colaboratory/Файлы для Whisper AI/1.4.1.1 Инициация проекта. Модуль Определение заинтересованных сторон проекта.mp4' secret_key = '2tNBojRYkW4Nbj588bZr8ZPGmY9dM7vUvY0' # Извлечение кадров, добавление меток и загрузка на Imageban image_links = {} for timestamp, image_filename in timestamps.items():     try:         start_time_str = timestamp.split(' --> ')[0]         total_seconds = time_to_seconds(start_time_str)         image_path = os.path.join(image_folder, image_filename)         extract_frame(video_path, total_seconds, image_path)         image_with_timestamp = add_timestamp_to_image(image_path, total_seconds)         image_link = upload_to_imageban(image_with_timestamp, secret_key)         image_links[timestamp] = image_link         # Отображение изображения с временной меткой         img = cv2.imread(image_with_timestamp)         cv2.imshow(f"Image with Timestamp: {timestamp}", img)         cv2.waitKey(0)         cv2.destroyAllWindows()     except Exception as e:         print(f"Ошибка для временной метки {timestamp}: {e}") # Замена временных меток на ссылки в тексте for timestamp, link in image_links.items():     formatted_link = f"[{timestamp}] "     text = text.replace(f"[{timestamp}]", formatted_link) print("Обновленный текст с ссылками на изображения:") print(text)  |