uploader test
Browse files- App/Worker.py +38 -0
- Dockerfile +11 -2
App/Worker.py
CHANGED
@@ -2,6 +2,7 @@ from celery import Celery, chain
|
|
2 |
import os, shutil, subprocess
|
3 |
import uuid
|
4 |
from urllib.parse import urlparse
|
|
|
5 |
from App import celery_config, bot
|
6 |
from typing import List
|
7 |
from App.Editor.Schema import EditorRequest, LinkInfo, Assets, Constants
|
@@ -9,6 +10,18 @@ from celery.signals import worker_process_init
|
|
9 |
from asgiref.sync import async_to_sync
|
10 |
import json
|
11 |
import os
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
13 |
celery = Celery()
|
14 |
celery.config_from_object(celery_config)
|
@@ -83,6 +96,31 @@ def install_dependencies(directory: str):
|
|
83 |
os.system("npm install")
|
84 |
|
85 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
@celery.task(name="DownloadAssets")
|
87 |
def download_assets(links: List[LinkInfo], temp_dir: str):
|
88 |
public_dir = f"{temp_dir}/public"
|
|
|
2 |
import os, shutil, subprocess
|
3 |
import uuid
|
4 |
from urllib.parse import urlparse
|
5 |
+
from subprocess import run
|
6 |
from App import celery_config, bot
|
7 |
from typing import List
|
8 |
from App.Editor.Schema import EditorRequest, LinkInfo, Assets, Constants
|
|
|
10 |
from asgiref.sync import async_to_sync
|
11 |
import json
|
12 |
import os
|
13 |
+
from pydantic import BaseModel
|
14 |
+
|
15 |
+
class YouTubeUploadTask(BaseModel):
|
16 |
+
filename: str
|
17 |
+
title: str = "Default Title"
|
18 |
+
description: str = "Default Description"
|
19 |
+
category_id: str = "22" # Default to a generic category, update as needed
|
20 |
+
privacy: str = "private"
|
21 |
+
tags: str = ""
|
22 |
+
thumbnail: str = None
|
23 |
+
|
24 |
+
|
25 |
|
26 |
celery = Celery()
|
27 |
celery.config_from_object(celery_config)
|
|
|
96 |
os.system("npm install")
|
97 |
|
98 |
|
99 |
+
@celery.task(name="uploadTime")
|
100 |
+
def upload_video_to_youtube(task_data: dict):
|
101 |
+
# Convert dict to Pydantic model
|
102 |
+
task = YouTubeUploadTask(**task_data)
|
103 |
+
|
104 |
+
# Build the command
|
105 |
+
command = [
|
106 |
+
'/srv/youtube/youtubeuploader', # Adjust the path as needed
|
107 |
+
'-filename', task.filename,
|
108 |
+
'-title', task.title,
|
109 |
+
'-description', task.description,
|
110 |
+
'-categoryId', task.category_id,
|
111 |
+
'-privacy', task.privacy,
|
112 |
+
'-tags', task.tags
|
113 |
+
]
|
114 |
+
|
115 |
+
if task.thumbnail:
|
116 |
+
command.extend(['-thumbnail', task.thumbnail])
|
117 |
+
|
118 |
+
# Execute the command
|
119 |
+
result = run(command, capture_output=True, text=True)
|
120 |
+
|
121 |
+
return result.stdout
|
122 |
+
|
123 |
+
|
124 |
@celery.task(name="DownloadAssets")
|
125 |
def download_assets(links: List[LinkInfo], temp_dir: str):
|
126 |
public_dir = f"{temp_dir}/public"
|
Dockerfile
CHANGED
@@ -33,6 +33,17 @@ RUN apt-get install -y \
|
|
33 |
libxrandr2 \
|
34 |
xdg-utils
|
35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
# Copy the application code
|
37 |
COPY --chown=admin . /srv
|
38 |
|
@@ -47,8 +58,6 @@ RUN npm install npm@latest -g && \
|
|
47 |
|
48 |
|
49 |
|
50 |
-
RUN echo npm -v
|
51 |
-
RUN node -v
|
52 |
|
53 |
#install the stuff
|
54 |
# RUN cd /srv/Remotion-app && npm install
|
|
|
33 |
libxrandr2 \
|
34 |
xdg-utils
|
35 |
|
36 |
+
# Download youtubeuploader
|
37 |
+
ADD https://github.com/porjo/youtubeuploader/releases/download/23.06/youtubeuploader_23.06_Linux_x86_64.tar.gz youtubeuploader.tar.gz
|
38 |
+
|
39 |
+
|
40 |
+
# Create youtube directory and extract youtubeuploader there
|
41 |
+
RUN mkdir -p /srv/youtube && \
|
42 |
+
tar -zxvf youtubeuploader.tar.gz -C /srv/youtube && \
|
43 |
+
rm youtubeuploader.tar.gz && \
|
44 |
+
chmod +x /srv/youtube/youtubeuploader
|
45 |
+
|
46 |
+
|
47 |
# Copy the application code
|
48 |
COPY --chown=admin . /srv
|
49 |
|
|
|
58 |
|
59 |
|
60 |
|
|
|
|
|
61 |
|
62 |
#install the stuff
|
63 |
# RUN cd /srv/Remotion-app && npm install
|