برنامه نویسی

نکات برجسته بازی NCAA – Community Dev

این پروژه از RapidAPI برای به دست آوردن نکات برجسته بازی NCAA با استفاده از یک ظرف Docker استفاده می کند و از AWS Media Convert برای تبدیل یا تقویت پرونده رسانه استفاده می کند.

بررسی اجمالی پرونده

  • config.py: این اسکریپت متغیرهای محیط لازم را وارد می کند و آنها را به متغیرهای پایتون اختصاص می دهد و مقادیر پیش فرض را در صورت لزوم ارائه می دهد. این رویکرد امکان مدیریت پیکربندی انعطاف پذیر را فراهم می کند ، امکان تنظیم تنظیمات مختلف برای محیط های مختلف (به عنوان مثال ، توسعه ، مرحله بندی ، تولید) را بدون تغییر کد منبع فراهم می کند.

  • fetch.py: تاریخ و لیگ را که برای یافتن نکات برجسته استفاده می شود ، تعیین می کند. من در این پروژه از NCAA استفاده می کنم زیرا در نسخه رایگان گنجانده شده است. این موارد برجسته را از API واگذار می کند و آنها را در یک سطل S3 به عنوان یک پرونده JSON ذخیره می کند (بسکتبال_هیگلایت. json)

  • process_one_video.py: به سطل S3 متصل می شود و پرونده JSON را بازیابی می کند. اولین URL ویدیویی را از درون پرونده JSON استخراج می کند. فایل ویدیویی را از طریق اینترنت با استفاده از کتابخانه درخواست ها بارگیری می کند. این فیلم را به عنوان یک فایل جدید در سطل S3 تحت یک پوشه متفاوت ذخیره می کند (فیلم ها/) وضعیت هر مرحله را ثبت می کند.

  • MediaConvert_process.py: ایجاد و ارسال یک کار MediaConvert از MediaConvert برای پردازش یک فایل ویدیویی استفاده می کند – کدک ویدیویی ، وضوح و بیت را پیکربندی می کند. همچنین تنظیمات صوتی ویدیوی پردازش شده را دوباره به یک سطل S3 ذخیره می کند.

  • run_all.py: اسکریپت ها را به ترتیب زمانی اجرا می کند و زمان بافر را برای ایجاد وظایف فراهم می کند.

  • پرونده .env: تمام متغیرهای محیط را ذخیره می کند ، این متغیرهایی هستند که ما نمی خواهیم به اسکریپت خود کدگذاری کنیم.

  • dockerfile: رویکرد گام به گام برای ساخت تصویر را فراهم می کند.

  • اسکریپت های Terraform: این اسکریپت ها برای ایجاد منابع در AWS به روشی مقیاس پذیر و قابل تکرار استفاده می شوند (در این پروژه گنجانده نشده است)

پیش نیازهای

قبل از اجرای اسکریپت ها ، اطمینان حاصل کنید که موارد زیر را دارید:

نمودار معماری

شرح تصویر

ساختار پروژه

src/
├── Dockerfile
├── config.py
├── fetch.py
├── mediaconvert_process.py
├── process_one_video.py
├── requirements.txt
├── run_all.py
├── .env
├── .gitignore
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

دستورالعمل راه اندازی

کلون مخزن

git clone https://github.com/ameh0429/NCAA-Game-Highlights.git
cd NCAA-Game-Highlights
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

کلید API را به AWS Secrets Manager اضافه کنید

aws secretsmanager create-secret \
    --name my-api-key \
    --description "API key for accessing the Sport Highlights API" \
    --secret-string '{"api_key":"YOUR_ACTUAL_API_KEY"}' \
    --region us-east-1
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

یک نقش یا کاربر IAM ایجاد کنید

این امر به کاربر یا نقش لازم برای تعامل با خدمات مورد استفاده در پروژه می دهد. خط مشی رانش باید به روز شود:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "ec2.amazonaws.com",
          "ecs-tasks.amazonaws.com",
          "mediaconvert.amazonaws.com"
        ],
        "AWS": "arn:aws:iam::<"your-account-id">:user/<"your-iam-user">"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سطل S3 ایجاد کنید

aws s3api create-bucket --bucket ameh-video721 --region us-east-1
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

شرح تصویر

پرونده .env را به روز کنید

این جایی است که ما جزئیات حساس خود را به گونه ای قرار می دهیم که آنها در مخزن سخت نشوند. همچنین با دویدن آن را ایمن کنید chmod 600 .env برای جلوگیری از دسترسی غیرمجاز به پرونده .env. همچنین پرونده را به .gitignore اضافه کنید تا از انجام آن به کنترل نسخه جلوگیری شود.

  • RapidAPI_KEY: اطمینان حاصل کنید که حساب را با موفقیت ایجاد کرده اید و “مشترک برای تست” را در سمت چپ بالا از API برجسته های ورزشی انتخاب کرده اید
  • AWS_ACCESS_KEY_ID = your_aws_access_key_id_here
  • AWS_SECRET_ACCESS_KEY = your_aws_secret_access_key_here
  • s3_bucket_name = your_s3_bucket_name_here
  • medisconvert_endpoint = https: //your_mediaconvert_endpoint_here.amazonaws.com
aws mediaconvert describe-endpoints
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • MediaConvert_Role_arn = ARN: AWS: IAM :: your_account_id: نقش/برجسته پردازش

به صورت محلی ظرف Docker را بسازید و اجرا کنید

docker build -t highlight-processor
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

شرح تصویر

docker run --env-file .env highlight-processor
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

شرح تصویر

با این کار fetch.py ​​، process_one_video.py و mediaconvert_process.py اجرا می شود و پرونده های زیر باید در سطل S3 شما ذخیره شوند:

آپلود ویدیو را در S3 تأیید کنید

شرح تصویر

پوشه json را برجسته بسکتبال باز کنید

شرح تصویر

پوشه ویدیویی پردازش شده را باز کنید

این کیفیت فیلم توسط AWS Media Convert افزایش یافته است.

شرح تصویر

آنچه یاد گرفتیم

  • کار با خدمات Docker و AWS
  • مدیریت دسترسی به هویت (IAM) و کمترین امتیاز
  • نحوه افزایش کیفیت رسانه

پیشرفت های آینده

  • استفاده از terraform برای تقویت زیرساخت ها به عنوان کد (IAC)
  • افزایش میزان فرایند فیلم ها و تبدیل به AWS Media Convert.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا