From 5b330ad3109d7eecf25f13800d7317dda123d7ca Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 11 Jul 2024 09:32:30 +0200 Subject: [PATCH] `ultralytics 8.2.54` resolve YouTube bug with switch to `pytubefix` (#14354) Signed-off-by: Glenn Jocher --- .github/workflows/publish.yml | 19 +++++++------------ ultralytics/__init__.py | 2 +- ultralytics/data/loaders.py | 5 +++-- ultralytics/utils/downloads.py | 2 +- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d94b8952..0f183aba 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -109,14 +109,13 @@ jobs: response = requests.get(url, headers=headers) diff = response.text if response.status_code == 200 else f"Failed to get diff: {response.content}" - # Set up OpenAI client + # Set up client client = openai.AzureOpenAI( api_key=OPENAI_AZURE_API_KEY, api_version=OPENAI_AZURE_API_VERSION, azure_endpoint=OPENAI_AZURE_ENDPOINT ) - # Prepare messages for OpenAI completion messages = [ { "role": "system", @@ -125,19 +124,15 @@ jobs: { "role": "user", "content": f"Summarize the updates made in the [Ultralytics](https://ultralytics.com) '{latest_tag}' tag, focusing on major changes, their purpose, and potential impact. Keep the summary clear and suitable for a broad audience. Add emojis to enliven the summary. Reply directly with a summary along these example guidelines, though feel free to adjust as appropriate:\n\n" - f"### 🌟 Summary (single-line synopsis)\n" - f"### 📊 Key Changes (bullet points highlighting any major changes)\n" - f"### 🎯 Purpose & Impact (bullet points explaining any benefits and potential impact to users)\n" - f"\n\nHere's the release diff:\n\n{diff[:96000]}", + f"## 🌟 Summary (single-line synopsis)\n" + f"## 📊 Key Changes (bullet points highlighting any major changes)\n" + f"## 🎯 Purpose & Impact (bullet points explaining any benefits and potential impact to users)\n" + f"\n\nHere's the release diff:\n\n{diff[:300000]}", } ] - try: - completion = client.chat.completions.create(model="gpt-4o-2024-05-13", messages=messages) - summary = completion.choices[0].message.content.strip() - except openai.error.OpenAIError as e: - print(f"Failed to generate summary: {e}") - raise + completion = client.chat.completions.create(model="gpt-4o-2024-05-13", messages=messages) + summary = completion.choices[0].message.content.strip() # Get the latest commit message commit_message = subprocess.run(['git', 'log', '-1', '--pretty=%B'], check=True, text=True, capture_output=True).stdout.split("\n")[0].strip() diff --git a/ultralytics/__init__.py b/ultralytics/__init__.py index 51f802ab..9caf6128 100644 --- a/ultralytics/__init__.py +++ b/ultralytics/__init__.py @@ -1,6 +1,6 @@ # Ultralytics YOLO 🚀, AGPL-3.0 license -__version__ = "8.2.53" +__version__ = "8.2.54" import os diff --git a/ultralytics/data/loaders.py b/ultralytics/data/loaders.py index cd03850c..2cc67d2c 100644 --- a/ultralytics/data/loaders.py +++ b/ultralytics/data/loaders.py @@ -544,8 +544,9 @@ def get_best_youtube_url(url, method="pytube"): (str): The URL of the best quality MP4 video stream, or None if no suitable stream is found. """ if method == "pytube": - check_requirements("pytube") - from pytube import YouTube + # Switched from pytube to pytubefix to resolve https://github.com/pytube/pytube/issues/1954 + check_requirements("pytubefix") + from pytubefix import YouTube streams = YouTube(url).streams.filter(file_extension="mp4", only_video=True) streams = sorted(streams, key=lambda s: s.resolution, reverse=True) # sort streams by resolution diff --git a/ultralytics/utils/downloads.py b/ultralytics/utils/downloads.py index a13a6f0a..f2cd5e58 100644 --- a/ultralytics/utils/downloads.py +++ b/ultralytics/utils/downloads.py @@ -17,7 +17,7 @@ from ultralytics.utils import LOGGER, TQDM, checks, clean_url, emojis, is_online # Define Ultralytics GitHub assets maintained at https://github.com/ultralytics/assets GITHUB_ASSETS_REPO = "ultralytics/assets" GITHUB_ASSETS_NAMES = ( - [f"yolov8{k}{suffix}.pt" for k in "nsmlx" for suffix in ("", "-cls", "-seg", "-pose", "-obb")] + [f"yolov8{k}{suffix}.pt" for k in "nsmlx" for suffix in ("", "-cls", "-seg", "-pose", "-obb", "-oiv7")] + [f"yolov5{k}{resolution}u.pt" for k in "nsmlx" for resolution in ("", "6")] + [f"yolov3{k}u.pt" for k in ("", "-spp", "-tiny")] + [f"yolov8{k}-world.pt" for k in "smlx"]