diff --git a/channels.json b/channels.json index 0088cda..1013a90 100644 --- a/channels.json +++ b/channels.json @@ -1,4 +1,5 @@ [ + { "name": "agraelus", "language": "cs" }, { "name": "czechcloud", "language": "cs" }, { "name": "arcadebulls", "language": "cs" }, @@ -66,6 +67,9 @@ { "name": "ntbees", "language": "en" }, { "name": "nmplol", "language": "en" }, { "name": "yabbe", "language": "en" }, + { "name": "cyr", "language": "en" }, + { "name": "rachtaz", "language": "en" }, + { "name": "khalamity", "language": "en" }, { "name": "papaplatte", "language": "de" }, { "name": "revedtv", "language": "de" }, diff --git a/docker-compose.yml b/docker-compose.yml index ecc8669..5dc183a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -65,7 +65,7 @@ services: - /shared/transcriptor/chat:/app/chat - /shared/transcriptor/models:/app/models - /shared/transcriptor/transcripts:/app/transcripts - transcriptor: + transcriptor_cs: deploy: resources: reservations: @@ -91,38 +91,83 @@ services: "language": "cs"}, {"name": "heddi2k", "language": "cs"}, {"name": "vvudy", "language": "cs"}, {"name": "himtheoldboy", "language": "cs"}, {"name": "fluffcz", "language": "cs"}, {"name": "tensterakdary", "language": "cs"}, {"name": "amfikcz", - "language": "cs"}, {"name": "tom__mm", "language": "cs"}, {"name": "pimpcsggo", - "language": "en"}, {"name": "dafran", "language": "en"}, {"name": "lexveldhuis", - "language": "en"}, {"name": "mrtweeday", "language": "en"}, {"name": "forsen", - "language": "en"}, {"name": "kuruhs", "language": "en"}, {"name": "quickgabi", - "language": "en"}, {"name": "paoloidolo", "language": "en"}, {"name": "39daph", - "language": "en"}, {"name": "sodapoppin", "language": "en"}, {"name": "nymn", - "language": "en"}, {"name": "knut", "language": "en"}, {"name": "nmplol", "language": - "en"}, {"name": "rachtaz", "language": "en"}, {"name": "delaney", "language": - "en"}, {"name": "hydervrsi", "language": "en"}, {"name": "flatz00", "language": - "en"}, {"name": "kharliito", "language": "en"}, {"name": "pawkt", "language": - "en"}, {"name": "stabitabi", "language": "en"}, {"name": "thehollowedknight", - "language": "en"}, {"name": "wakewilder", "language": "en"}, {"name": "vadikus007", - "language": "en"}, {"name": "jaystreazy", "language": "en"}, {"name": "mhyochi", - "language": "en"}, {"name": "esfandtv", "language": "en"}, {"name": "cooksux", - "language": "en"}, {"name": "vei", "language": "en"}, {"name": "ntbees", "language": - "en"}, {"name": "nmplol", "language": "en"}, {"name": "yabbe", "language": "en"}, - {"name": "cyr", "language": "en"}, {"name": "rachtaz", "language": "en"}, {"name": - "khalamity", "language": "en"}, {"name": "papaplatte", "language": "de"}, {"name": - "revedtv", "language": "de"}, {"name": "mirza_jahic", "language": "de"}, {"name": - "rewinside", "language": "de"}, {"name": "maxim", "language": "de"}, {"name": - "tolkinlol", "language": "de"}, {"name": "vlesk", "language": "de"}, {"name": - "kaydop", "language": "fr"}, {"name": "ponce", "language": "fr"}, {"name": "locklear", - "language": "fr"}, {"name": "alfacast", "language": "fr"}, {"name": "valouzz", - "language": "fr"}, {"name": "kamet0", "language": "fr"}, {"name": "shaunz", - "language": "fr"}, {"name": "jbzzed", "language": "fr"}, {"name": "nisqyy", - "language": "fr"}, {"name": "skyyart", "language": "fr"}, {"name": "jladz", - "language": "fr"}, {"name": "dye_live", "language": "fr"}, {"name": "chewbydslife", - "language": "fr"}, {"name": "aloonea", "language": "fr"}, {"name": "thomacky", - "language": "fr"}, {"name": "amobones", "language": "fr"}, {"name": "loupiote3", - "language": "fr"}, {"name": "nawk_", "language": "fr"}, {"name": "yoona", "language": - "fr"}, {"name": "adztv", "language": "fr"}, {"name": "helydia", "language": - "fr"}, {"name": "kaffworld", "language": "fr"}, {"name": "levraidoffy", "language": + "language": "cs"}, {"name": "tom__mm", "language": "cs"}]' + - TIMEDELTA_DAYS=11 + - TIMEDELTA_DAYS_EXACT=false + - CLIP_CREATE_FROM_CHAT=false + - TWITCH_CLIENT_ID=a0fuj6tm5ct79clvim9816orphqkov + - TWITCH_CLIENT_SECRET=h7whj3yspxgj1909sgcafx6iz1p1es + image: t0is/madmonq-transcriptor-image:cuda + volumes: + - /shared/transcriptor/clips:/app/clips + - /shared/transcriptor/vods:/app/vods + - /shared/transcriptor/audio:/app/audio + - /shared/transcriptor/chat:/app/chat + - /shared/transcriptor/models:/app/models + - /shared/transcriptor/transcripts:/app/transcripts + transcriptor_en: + deploy: + resources: + reservations: + devices: + - capabilities: [gpu] + count: all + driver: nvidia + environment: + - 'CHANNELS_JSON=[{"name": "pimpcsggo", "language": "en"}, {"name": "dafran", + "language": "en"}, {"name": "lexveldhuis", "language": "en"}, {"name": "mrtweeday", + "language": "en"}, {"name": "forsen", "language": "en"}, {"name": "kuruhs", + "language": "en"}, {"name": "quickgabi", "language": "en"}, {"name": "paoloidolo", + "language": "en"}, {"name": "39daph", "language": "en"}, {"name": "sodapoppin", + "language": "en"}, {"name": "nymn", "language": "en"}, {"name": "knut", "language": + "en"}, {"name": "nmplol", "language": "en"}, {"name": "rachtaz", "language": + "en"}, {"name": "delaney", "language": "en"}, {"name": "hydervrsi", "language": + "en"}, {"name": "flatz00", "language": "en"}, {"name": "kharliito", "language": + "en"}, {"name": "pawkt", "language": "en"}, {"name": "stabitabi", "language": + "en"}, {"name": "thehollowedknight", "language": "en"}, {"name": "wakewilder", + "language": "en"}, {"name": "vadikus007", "language": "en"}, {"name": "jaystreazy", + "language": "en"}, {"name": "mhyochi", "language": "en"}, {"name": "esfandtv", + "language": "en"}, {"name": "cooksux", "language": "en"}, {"name": "vei", "language": + "en"}, {"name": "ntbees", "language": "en"}, {"name": "nmplol", "language": + "en"}, {"name": "yabbe", "language": "en"}, {"name": "cyr", "language": "en"}, + {"name": "rachtaz", "language": "en"}, {"name": "khalamity", "language": "en"}]' + - TIMEDELTA_DAYS=11 + - TIMEDELTA_DAYS_EXACT=false + - CLIP_CREATE_FROM_CHAT=false + - TWITCH_CLIENT_ID=a0fuj6tm5ct79clvim9816orphqkov + - TWITCH_CLIENT_SECRET=h7whj3yspxgj1909sgcafx6iz1p1es + image: t0is/madmonq-transcriptor-image:cuda + volumes: + - /shared/transcriptor/clips:/app/clips + - /shared/transcriptor/vods:/app/vods + - /shared/transcriptor/audio:/app/audio + - /shared/transcriptor/chat:/app/chat + - /shared/transcriptor/models:/app/models + - /shared/transcriptor/transcripts:/app/transcripts + transcriptor_others: + deploy: + resources: + reservations: + devices: + - capabilities: [gpu] + count: all + driver: nvidia + environment: + - 'CHANNELS_JSON=[{"name": "papaplatte", "language": "de"}, {"name": "revedtv", + "language": "de"}, {"name": "mirza_jahic", "language": "de"}, {"name": "rewinside", + "language": "de"}, {"name": "maxim", "language": "de"}, {"name": "tolkinlol", + "language": "de"}, {"name": "vlesk", "language": "de"}, {"name": "kaydop", "language": + "fr"}, {"name": "ponce", "language": "fr"}, {"name": "locklear", "language": + "fr"}, {"name": "alfacast", "language": "fr"}, {"name": "valouzz", "language": + "fr"}, {"name": "kamet0", "language": "fr"}, {"name": "shaunz", "language": + "fr"}, {"name": "jbzzed", "language": "fr"}, {"name": "nisqyy", "language": + "fr"}, {"name": "skyyart", "language": "fr"}, {"name": "jladz", "language": + "fr"}, {"name": "dye_live", "language": "fr"}, {"name": "chewbydslife", "language": + "fr"}, {"name": "aloonea", "language": "fr"}, {"name": "thomacky", "language": + "fr"}, {"name": "amobones", "language": "fr"}, {"name": "loupiote3", "language": + "fr"}, {"name": "nawk_", "language": "fr"}, {"name": "yoona", "language": "fr"}, + {"name": "adztv", "language": "fr"}, {"name": "helydia", "language": "fr"}, + {"name": "kaffworld", "language": "fr"}, {"name": "levraidoffy", "language": "fr"}, {"name": "sniper_biscuit", "language": "fr"}, {"name": "azuma", "language": "fr"}]' - TIMEDELTA_DAYS=11 diff --git a/generate-docker-compose.py b/generate-docker-compose.py index 39d358e..5768cfa 100644 --- a/generate-docker-compose.py +++ b/generate-docker-compose.py @@ -14,15 +14,89 @@ yaml.add_representer(InlineList, inline_list_representer) with open("channels.json", "r") as f: channels = json.load(f) -# Instead of multiple services, pass all channels as a JSON string to one container +# Group channels by language +channels_cs = [ch for ch in channels if ch.get("language") == "cs" or ch.get("language") == "sk" ] +channels_en = [ch for ch in channels if ch.get("language") == "en"] +channels_others = [ch for ch in channels if ch.get("language") not in ["cs", "en"]] + +# Create JSON strings for each group +channels_cs_json_str = json.dumps(channels_cs) +channels_en_json_str = json.dumps(channels_en) +channels_others_json_str = json.dumps(channels_others) + +# Also, full channels for the download-only container channels_json_str = json.dumps(channels) compose = { "services": { - "transcriptor": { + "transcriptor_cs": { "image": "t0is/madmonq-transcriptor-image:cuda", "environment": [ - f"CHANNELS_JSON={channels_json_str}", + f"CHANNELS_JSON={channels_cs_json_str}", + "TIMEDELTA_DAYS=11", + "TIMEDELTA_DAYS_EXACT=false", + "CLIP_CREATE_FROM_CHAT=false", + "TWITCH_CLIENT_ID=a0fuj6tm5ct79clvim9816orphqkov", + "TWITCH_CLIENT_SECRET=h7whj3yspxgj1909sgcafx6iz1p1es" + ], + "volumes": [ + "/shared/transcriptor/clips:/app/clips", + "/shared/transcriptor/vods:/app/vods", + "/shared/transcriptor/audio:/app/audio", + "/shared/transcriptor/chat:/app/chat", + "/shared/transcriptor/models:/app/models", + "/shared/transcriptor/transcripts:/app/transcripts" + ], + "deploy": { + "resources": { + "reservations": { + "devices": [ + { + "driver": "nvidia", + "count": "all", + "capabilities": InlineList(["gpu"]) + } + ] + } + } + } + }, + "transcriptor_en": { + "image": "t0is/madmonq-transcriptor-image:cuda", + "environment": [ + f"CHANNELS_JSON={channels_en_json_str}", + "TIMEDELTA_DAYS=11", + "TIMEDELTA_DAYS_EXACT=false", + "CLIP_CREATE_FROM_CHAT=false", + "TWITCH_CLIENT_ID=a0fuj6tm5ct79clvim9816orphqkov", + "TWITCH_CLIENT_SECRET=h7whj3yspxgj1909sgcafx6iz1p1es" + ], + "volumes": [ + "/shared/transcriptor/clips:/app/clips", + "/shared/transcriptor/vods:/app/vods", + "/shared/transcriptor/audio:/app/audio", + "/shared/transcriptor/chat:/app/chat", + "/shared/transcriptor/models:/app/models", + "/shared/transcriptor/transcripts:/app/transcripts" + ], + "deploy": { + "resources": { + "reservations": { + "devices": [ + { + "driver": "nvidia", + "count": "all", + "capabilities": InlineList(["gpu"]) + } + ] + } + } + } + }, + "transcriptor_others": { + "image": "t0is/madmonq-transcriptor-image:cuda", + "environment": [ + f"CHANNELS_JSON={channels_others_json_str}", "TIMEDELTA_DAYS=11", "TIMEDELTA_DAYS_EXACT=false", "CLIP_CREATE_FROM_CHAT=false",