From 876ed87bce7c5bec7609bbe7fa3dbc8380c36857 Mon Sep 17 00:00:00 2001 From: MohammadReza Mashhadi <92037547+Mohammadrezamsd@users.noreply.github.com> Date: Sun, 20 Feb 2022 18:52:10 +0330 Subject: [PATCH 1/6] Multi-encoding FFMPEG --- main.bat | 140 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 77 insertions(+), 63 deletions(-) diff --git a/main.bat b/main.bat index ea02ead..2a0bea8 100644 --- a/main.bat +++ b/main.bat @@ -1,4 +1,3 @@ - @echo off color 02 setLocal EnableDelayedExpansion @@ -30,82 +29,97 @@ endLocal timeout 5 color 07 +echo @echo off>>encoder.bat -for %%a in ("*.mp4" "*.m4v") do ( -mkdir "%cd%\%%~na" -) +echo for %%%%a in ("*.mp4" "*.m4v") do (>>encoder.bat -echo enc.key>> temp.keyinfo -echo enc.key>> temp.keyinfo + echo call:sslrand>>encoder.bat + ( + echo ffmpeg -i "%%%%a" -hls_key_info_file temp.keyinfo -filter_complex "[v:0]split=4[vtemp001][vtemp002][vtemp003][vtemp004];[vtemp001]scale=w=640:h=360[vout001];[vtemp002]scale=w=960:h=540[vout002];[vtemp003]scale=w=1280:h=720[vout003];[vtemp004]scale=w=1920:h=1080[vout004]" -preset veryfast -crf 16 -r 24 -sc_threshold 0 -map [vout001] -c:v:0 libx264 -map [vout002] -c:v:1 libx264 -map [vout003] -c:v:2 libx264 -map [vout004] -c:v:3 libx264 -map a:0 -map a:0 -map a:0 -map a:0 -f hls -hls_time 10 -hls_playlist_type vod -master_pl_name playlist.m3u8 -hls_segment_filename stream_%%%%v/data%%%%06d.ts -var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2 v:3,a:3" stream_%%%%v.m3u8 + echo powershell -command "(gc stream_0.m3u8) -replace 'stream_0/', '' | Out-File lq.m3u8 -encoding utf8" + echo powershell -command "(gc lq.m3u8) -replace 'enc.key', '../enc.key' | Out-File lq.m3u8 -encoding utf8" -for %%a in ("*.mp4" "*.m4v") do ( - call:sslrand -ffmpeg -i "%cd%\%%a" -hls_key_info_file temp.keyinfo -filter_complex "[v:0]split=4[vtemp001][vtemp002][vtemp003][vtemp004];[vtemp001]scale=w=640:h=360[vout001];[vtemp002]scale=w=960:h=540[vout002];[vtemp003]scale=w=1280:h=720[vout003];[vtemp004]scale=w=1920:h=1080[vout004]" -preset veryfast -crf 16 -r 24 -sc_threshold 0 -map [vout001] -c:v:0 libx264 -map [vout002] -c:v:1 libx264 -map [vout003] -c:v:2 libx264 -map [vout004] -c:v:3 libx264 -map a:0 -map a:0 -map a:0 -map a:0 -f hls -hls_time 10 -hls_playlist_type vod -master_pl_name playlist.m3u8 -hls_segment_filename stream_%%v/data%%06d.ts -var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2 v:3,a:3" stream_%%v.m3u8 - + echo powershell -command "(gc stream_1.m3u8) -replace 'stream_1/', '' | Out-File mq.m3u8 -encoding utf8" + echo powershell -command "(gc mq.m3u8) -replace 'enc.key', '../enc.key' | Out-File mq.m3u8 -encoding utf8" - powershell -command "(gc stream_0.m3u8) -replace 'stream_0/', '' | Out-File lq.m3u8 -encoding utf8" - powershell -command "(gc lq.m3u8) -replace 'enc.key', '../enc.key' | Out-File lq.m3u8 -encoding utf8" + echo powershell -command "(gc stream_2.m3u8) -replace 'stream_2/', '' | Out-File hq.m3u8 -encoding utf8" + echo powershell -command "(gc hq.m3u8) -replace 'enc.key', '../enc.key' | Out-File hq.m3u8 -encoding utf8" - powershell -command "(gc stream_1.m3u8) -replace 'stream_1/', '' | Out-File mq.m3u8 -encoding utf8" - powershell -command "(gc mq.m3u8) -replace 'enc.key', '../enc.key' | Out-File mq.m3u8 -encoding utf8" + echo powershell -command "(gc stream_3.m3u8) -replace 'stream_3/', '' | Out-File hd.m3u8 -encoding utf8" + echo powershell -command "(gc hd.m3u8) -replace 'enc.key', '../enc.key' | Out-File hd.m3u8 -encoding utf8" - powershell -command "(gc stream_2.m3u8) -replace 'stream_2/', '' | Out-File hq.m3u8 -encoding utf8" - powershell -command "(gc hq.m3u8) -replace 'enc.key', '../enc.key' | Out-File hq.m3u8 -encoding utf8" + echo powershell -command "(gc playlist.m3u8) -replace 'stream_0', 'lq/playlist' | Out-File playlist.m3u8 -encoding utf8" + echo powershell -command "(gc playlist.m3u8) -replace 'stream_1', 'mq/playlist' | Out-File playlist.m3u8 -encoding utf8" + echo powershell -command "(gc playlist.m3u8) -replace 'stream_2', 'hq/playlist' | Out-File playlist.m3u8 -encoding utf8" + echo powershell -command "(gc playlist.m3u8) -replace 'stream_3', 'hd/playlist' | Out-File playlist.m3u8 -encoding utf8" + + echo ren playlist.m3u8 haji.m3u8 + + echo ren lq.m3u8 playlist.m3u8 + echo ren stream_0 lq + echo move playlist.m3u8 "%%cd%%"/lq + echo del stream_0.m3u8 + + echo ren mq.m3u8 playlist.m3u8 + echo ren stream_1 mq + echo move playlist.m3u8 "%%cd%%"/mq + echo del stream_1.m3u8 + + echo ren hq.m3u8 playlist.m3u8 + echo ren stream_2 hq + echo move playlist.m3u8 "%%cd%%"/hq + echo del stream_2.m3u8 + + echo ren hd.m3u8 playlist.m3u8 + echo ren stream_3 hd + echo move playlist.m3u8 "%%cd%%"/hd + echo del stream_3.m3u8 + + echo ren haji.m3u8 playlist.m3u8 + ) >>encoder.bat + + echo ) >>encoder.bat + +( +echo move *.mp4 ../done +echo move *.m4v ../done +echo echo: +echo echo: +echo powershell write-host -fore Green Rendering Completed +echo echo: +)>>encoder.bat +echo del temp.keyinfo>>encoder.bat +powershell -command "Add-Content encoder.bat 'del encoder.bat & exit'" + + +echo :sslrand>>encoder.bat +echo setlocal>>encoder.bat +echo for /f "tokens=* USEBACKQ" %%%%f in (`openssl rand -out enc.key 16`) do (set var=%%%%f)>>encoder.bat +( +echo EXIT /B 0 +)>>encoder.bat - powershell -command "(gc stream_3.m3u8) -replace 'stream_3/', '' | Out-File hd.m3u8 -encoding utf8" - powershell -command "(gc hd.m3u8) -replace 'enc.key', '../enc.key' | Out-File hd.m3u8 -encoding utf8" +echo enc.key>> temp.keyinfo +echo enc.key>> temp.keyinfo - powershell -command "(gc playlist.m3u8) -replace 'stream_0', 'lq/playlist' | Out-File playlist.m3u8 -encoding utf8" - powershell -command "(gc playlist.m3u8) -replace 'stream_1', 'mq/playlist' | Out-File playlist.m3u8 -encoding utf8" - powershell -command "(gc playlist.m3u8) -replace 'stream_2', 'hq/playlist' | Out-File playlist.m3u8 -encoding utf8" - powershell -command "(gc playlist.m3u8) -replace 'stream_3', 'hd/playlist' | Out-File playlist.m3u8 -encoding utf8" - - ren playlist.m3u8 haji.m3u8 - - ren lq.m3u8 playlist.m3u8 - move stream_0 "%cd%/%%~na" - ren "%cd%/%%~na"/stream_0 lq - move playlist.m3u8 "%cd%/%%~na"/lq - del stream_0.m3u8 - - ren mq.m3u8 playlist.m3u8 - move stream_1 "%cd%/%%~na" - ren "%cd%/%%~na"/stream_1 mq - move playlist.m3u8 "%cd%/%%~na"/mq - del stream_1.m3u8 - - ren hq.m3u8 playlist.m3u8 - move stream_2 "%cd%/%%~na" - ren "%cd%/%%~na"/stream_2 hq - move playlist.m3u8 "%cd%/%%~na"/hq - del stream_2.m3u8 - - ren hd.m3u8 playlist.m3u8 - move stream_3 "%cd%/%%~na" - ren "%cd%/%%~na"/stream_3 hd - move playlist.m3u8 "%cd%/%%~na"/hd - del stream_3.m3u8 - - ren haji.m3u8 playlist.m3u8 - move playlist.m3u8 "%cd%/%%~na" - move enc.key "%cd%/%%~na" +mkdir done +for %%a in ("*.mp4" "*.m4v") do ( +mkdir "%cd%\%%~na" +move "%%a" "%cd%\%%~na" +xcopy encoder.bat "%cd%\%%~na" +xcopy temp.keyinfo "%cd%\%%~na" +echo "%%~na" +cd "%%~na" +start call encoder.bat +cd .. ) +del encoder.bat del temp.keyinfo -echo: -echo: -powershell write-host -fore Green Rendering Completed -echo: -pause -exit - -:sslrand -setlocal -for /f "tokens=* USEBACKQ" %%f in (`openssl rand -out enc.key 16`) do (set var=%%f) -EXIT /B 0 + From 87e2049d9fce85f5dddbb5e6359b558b5e0ebe5e Mon Sep 17 00:00:00 2001 From: MohammadReza Mashhadi <92037547+Mohammadrezamsd@users.noreply.github.com> Date: Mon, 21 Feb 2022 14:41:55 +0330 Subject: [PATCH 2/6] Multi-rendering including limit --- main.bat | 59 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/main.bat b/main.bat index 2a0bea8..db681e2 100644 --- a/main.bat +++ b/main.bat @@ -29,8 +29,14 @@ endLocal timeout 5 color 07 +powershell -command "set-content handler.txt '0'" + +set /a var = 0 + echo @echo off>>encoder.bat +echo powershell -command "$p = get-content ../handler.txt; $m = [int]$p; $m = $m + 1; set-content ../handler.txt $m">>encoder.bat + echo for %%%%a in ("*.mp4" "*.m4v") do (>>encoder.bat echo call:sslrand>>encoder.bat @@ -83,19 +89,22 @@ echo for %%%%a in ("*.mp4" "*.m4v") do (>>encoder.bat echo ) >>encoder.bat ( -echo move *.mp4 ../done -echo move *.m4v ../done +echo move *.mp4 ../Completed +echo move *.m4v ../Completed echo echo: echo echo: echo powershell write-host -fore Green Rendering Completed echo echo: )>>encoder.bat echo del temp.keyinfo>>encoder.bat +( +echo set /a var = %%var%% + 1 +)>>encoder.bat +echo powershell -command "$p = get-content ../handler.txt; $m = [int]$p; $m = $m - 1; set-content ../handler.txt $m">>encoder.bat powershell -command "Add-Content encoder.bat 'del encoder.bat & exit'" echo :sslrand>>encoder.bat -echo setlocal>>encoder.bat echo for /f "tokens=* USEBACKQ" %%%%f in (`openssl rand -out enc.key 16`) do (set var=%%%%f)>>encoder.bat ( echo EXIT /B 0 @@ -104,23 +113,37 @@ echo EXIT /B 0 echo enc.key>> temp.keyinfo echo enc.key>> temp.keyinfo -mkdir done +mkdir Completed + +for %%a in ("*.mp4" "*.m4v") do ( -for %%a in ("*.mp4" "*.m4v") do ( -mkdir "%cd%\%%~na" -move "%%a" "%cd%\%%~na" -xcopy encoder.bat "%cd%\%%~na" -xcopy temp.keyinfo "%cd%\%%~na" echo "%%~na" -cd "%%~na" -start call encoder.bat -cd .. +call:current_process "%%~na" "%%a" ) - del encoder.bat del temp.keyinfo - - - - - +del handler.txt +echo %var% +pause +exit + +:current_process +:pointer +SET /A timerand=%RANDOM% * 5 / 32768 + 1 +timeout %timerand% +for /f %%i IN (handler.txt) do set /a c=%%i +if %c% GEQ 3 ( + sleep 1 + powershell write-host -fore Green "waiting for queue" + goto :pointer +) +else ( + mkdir "%cd%\%~1" + move "%~2" "%cd%\%~1" + xcopy encoder.bat "%cd%\%~1" + xcopy temp.keyinfo "%cd%\%~1" + cd "%~1" + start call encoder.bat + cd .. +) +exit /b 0 From 444941e858beafddbc015fc5c56d8d157fcc90eb Mon Sep 17 00:00:00 2001 From: MohammadReza Mashhadi <92037547+Mohammadrezamsd@users.noreply.github.com> Date: Mon, 21 Feb 2022 15:30:56 +0330 Subject: [PATCH 3/6] Deleting temporary files --- main.bat | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/main.bat b/main.bat index db681e2..b777c49 100644 --- a/main.bat +++ b/main.bat @@ -35,8 +35,6 @@ set /a var = 0 echo @echo off>>encoder.bat -echo powershell -command "$p = get-content ../handler.txt; $m = [int]$p; $m = $m + 1; set-content ../handler.txt $m">>encoder.bat - echo for %%%%a in ("*.mp4" "*.m4v") do (>>encoder.bat echo call:sslrand>>encoder.bat @@ -44,6 +42,8 @@ echo for %%%%a in ("*.mp4" "*.m4v") do (>>encoder.bat ( echo ffmpeg -i "%%%%a" -hls_key_info_file temp.keyinfo -filter_complex "[v:0]split=4[vtemp001][vtemp002][vtemp003][vtemp004];[vtemp001]scale=w=640:h=360[vout001];[vtemp002]scale=w=960:h=540[vout002];[vtemp003]scale=w=1280:h=720[vout003];[vtemp004]scale=w=1920:h=1080[vout004]" -preset veryfast -crf 16 -r 24 -sc_threshold 0 -map [vout001] -c:v:0 libx264 -map [vout002] -c:v:1 libx264 -map [vout003] -c:v:2 libx264 -map [vout004] -c:v:3 libx264 -map a:0 -map a:0 -map a:0 -map a:0 -f hls -hls_time 10 -hls_playlist_type vod -master_pl_name playlist.m3u8 -hls_segment_filename stream_%%%%v/data%%%%06d.ts -var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2 v:3,a:3" stream_%%%%v.m3u8 + echo if exist ../handler.txt powershell -command "$p = get-content ../handler.txt; $m = [int]$p; $m = $m - 1; set-content ../handler.txt $m" + echo powershell -command "(gc stream_0.m3u8) -replace 'stream_0/', '' | Out-File lq.m3u8 -encoding utf8" echo powershell -command "(gc lq.m3u8) -replace 'enc.key', '../enc.key' | Out-File lq.m3u8 -encoding utf8" @@ -100,7 +100,6 @@ echo del temp.keyinfo>>encoder.bat ( echo set /a var = %%var%% + 1 )>>encoder.bat -echo powershell -command "$p = get-content ../handler.txt; $m = [int]$p; $m = $m - 1; set-content ../handler.txt $m">>encoder.bat powershell -command "Add-Content encoder.bat 'del encoder.bat & exit'" @@ -121,20 +120,18 @@ echo "%%~na" call:current_process "%%~na" "%%a" ) del encoder.bat -del temp.keyinfo +powershell write-host -fore Green "RENDERING COMPLETED" del handler.txt -echo %var% -pause +del temp.keyinfo exit :current_process :pointer SET /A timerand=%RANDOM% * 5 / 32768 + 1 -timeout %timerand% for /f %%i IN (handler.txt) do set /a c=%%i if %c% GEQ 3 ( - sleep 1 - powershell write-host -fore Green "waiting for queue" + timeout 1 + powershell write-host -fore Green "WAITING FOR CURRENT STACK TO FINISH" goto :pointer ) else ( @@ -143,6 +140,8 @@ else ( xcopy encoder.bat "%cd%\%~1" xcopy temp.keyinfo "%cd%\%~1" cd "%~1" + powershell write-host -fore Green "NEW VIDEO IS ADDING TO STACK" + powershell -command "$p = get-content ../handler.txt; $m = [int]$p; $m = $m + 1; set-content ../handler.txt $m" start call encoder.bat cd .. ) From b603b61ae783292c4cd4ca7147cf090c010d679f Mon Sep 17 00:00:00 2001 From: MohammadReza Mashhadi <92037547+Mohammadrezamsd@users.noreply.github.com> Date: Mon, 21 Feb 2022 17:38:30 +0330 Subject: [PATCH 4/6] Hash folder structure --- main.bat | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/main.bat b/main.bat index b777c49..bc72f9c 100644 --- a/main.bat +++ b/main.bat @@ -84,6 +84,7 @@ echo for %%%%a in ("*.mp4" "*.m4v") do (>>encoder.bat echo del stream_3.m3u8 echo ren haji.m3u8 playlist.m3u8 + ) >>encoder.bat echo ) >>encoder.bat @@ -130,19 +131,12 @@ exit SET /A timerand=%RANDOM% * 5 / 32768 + 1 for /f %%i IN (handler.txt) do set /a c=%%i if %c% GEQ 3 ( - timeout 1 + timeout 5 powershell write-host -fore Green "WAITING FOR CURRENT STACK TO FINISH" goto :pointer ) -else ( + set directory_name=%~1 + set file_name=%~2 mkdir "%cd%\%~1" - move "%~2" "%cd%\%~1" - xcopy encoder.bat "%cd%\%~1" - xcopy temp.keyinfo "%cd%\%~1" - cd "%~1" - powershell write-host -fore Green "NEW VIDEO IS ADDING TO STACK" - powershell -command "$p = get-content ../handler.txt; $m = [int]$p; $m = $m + 1; set-content ../handler.txt $m" - start call encoder.bat - cd .. -) + powershell -command "$d = $env:directory_name ; $f = $env:file_name ; $c = ' - ' + -join ((48..57) + (65..90) + (97..122) | get-random -Count 10 | %%%{[char]$_}) ; rename-item $d $d$c ; move-item $f $d$c ; copy-item encoder.bat $d$c ; copy-item temp.keyinfo $d$c ; cd $d$c ; $p = get-content ../handler.txt; $m = [int]$p; $m = $m + 1; set-content ../handler.txt $m ; start-process encoder.bat" exit /b 0 From 279e3439677985246093c87c5130f0972ff606fe Mon Sep 17 00:00:00 2001 From: MohammadReza Mashhadi <92037547+Mohammadrezamsd@users.noreply.github.com> Date: Tue, 22 Feb 2022 11:44:30 +0330 Subject: [PATCH 5/6] Automatic Directory Make and Uploader --- main.bat | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 113 insertions(+), 5 deletions(-) diff --git a/main.bat b/main.bat index bc72f9c..ce6831e 100644 --- a/main.bat +++ b/main.bat @@ -26,9 +26,11 @@ call echo %%stars:~0,%SIZE%%% endLocal -timeout 5 color 07 +set /p course="Enter Course Directory Name: " +set /p multiencode="Number of Simultaneous Encoding: " + powershell -command "set-content handler.txt '0'" set /a var = 0 @@ -94,13 +96,14 @@ echo move *.mp4 ../Completed echo move *.m4v ../Completed echo echo: echo echo: -echo powershell write-host -fore Green Rendering Completed +echo powershell write-host -fore Green RENDER COMPLETED echo echo: )>>encoder.bat echo del temp.keyinfo>>encoder.bat ( echo set /a var = %%var%% + 1 )>>encoder.bat +echo powershell -executionpolicy remotesigned -File uploader.ps1>>encoder.bat powershell -command "Add-Content encoder.bat 'del encoder.bat & exit'" @@ -110,6 +113,109 @@ echo for /f "tokens=* USEBACKQ" %%%%f in (`openssl rand -out enc.key 16`) do (se echo EXIT /B 0 )>>encoder.bat + +echo $directoryname = Split-Path -Path (Get-Location) -Leaf>>uploader.ps1 +echo $currentdirectory = get-location ^| foreach-object { $_.path }>>uploader.ps1 +echo $newFolder1 = "ftp://130.185.79.126/public_html/media/$env:course">>uploader.ps1 +echo $newFolder2 = "ftp://130.185.79.126/public_html/media/$env:course/$directoryname">>uploader.ps1 +echo $ftpuname = "*********">>uploader.ps1 +echo $ftppassword = "********">>uploader.ps1 + +echo try>>uploader.ps1 +echo {>>uploader.ps1 +echo $makeDirectory = [System.Net.WebRequest]::Create($newFolder1);>>uploader.ps1 +echo $makeDirectory.Credentials = New-Object System.Net.NetworkCredential($ftpuname,$ftppassword);>>uploader.ps1 +echo $makeDirectory.Method = [System.Net.WebRequestMethods+FTP]::MakeDirectory;>>uploader.ps1 +echo $makeDirectory.GetResponse();>>uploader.ps1 +echo }catch [Net.WebException]>>uploader.ps1 +echo {>>uploader.ps1 +echo try {>>uploader.ps1 + +echo #if there was an error returned, check if folder already existed on server>>uploader.ps1 +echo $checkDirectory = [System.Net.WebRequest]::Create($newFolder1);>>uploader.ps1 +echo $checkDirectory.Credentials = New-Object System.Net.NetworkCredential($ftpuname,$ftppassword);>>uploader.ps1 +echo $checkDirectory.Method = [System.Net.WebRequestMethods+FTP]::PrintWorkingDirectory;>>uploader.ps1 +echo $response = $checkDirectory.GetResponse();>>uploader.ps1 +echo }>>uploader.ps1 +echo catch [Net.WebException] {>>uploader.ps1 +echo #if the folder didn't exist, then it's probably a file perms issue, incorrect credentials, dodgy server name etc>>uploader.ps1 +echo }>>uploader.ps1 +echo }>>uploader.ps1 + +echo try>>uploader.ps1 +echo {>>uploader.ps1 +echo $makeDirectory = [System.Net.WebRequest]::Create($newFolder2);>>uploader.ps1 +echo $makeDirectory.Credentials = New-Object System.Net.NetworkCredential($ftpuname,$ftppassword);>>uploader.ps1 +echo $makeDirectory.Method = [System.Net.WebRequestMethods+FTP]::MakeDirectory;>>uploader.ps1 +echo $makeDirectory.GetResponse();>>uploader.ps1 +echo }catch [Net.WebException]>>uploader.ps1 +echo {>>uploader.ps1 +echo try {>>uploader.ps1 + +echo #if there was an error returned, check if folder already existed on server>>uploader.ps1 +echo $checkDirectory = [System.Net.WebRequest]::Create($newFolder2);>>uploader.ps1 +echo $checkDirectory.Credentials = New-Object System.Net.NetworkCredential($ftpuname,$ftppassword);>>uploader.ps1 +echo $checkDirectory.Method = [System.Net.WebRequestMethods+FTP]::PrintWorkingDirectory;>>uploader.ps1 +echo $response = $checkDirectory.GetResponse();>>uploader.ps1 +echo }>>uploader.ps1 +echo catch [Net.WebException] {>>uploader.ps1 +echo #if the folder didn't exist, then it's probably a file perms issue, incorrect credentials, dodgy server name etc>>uploader.ps1 +echo }>>uploader.ps1 +echo }>>uploader.ps1 + +echo $FTPHost = "ftp://130.185.79.126/public_html/media/$env:course/$directoryname">>uploader.ps1 + +echo $uploaderFolder = "$currentdirectory">>uploader.ps1 + +echo $webclient = New-Object System.Net.WebClient>>uploader.ps1 +echo $webclient.Credentials = New-Object System.Net.NetworkCredential($ftpuname,$ftppassword)>>uploader.ps1 + +echo $SrcEntries = Get-ChildItem $uploaderFolder -Recurse>>uploader.ps1 + +echo $Srcfolders = $SrcEntries ^| Where-Object{$_.PSIsContainer}>>uploader.ps1 +echo $SrcFiles = $SrcEntries ^| Where-Object{!$_.PSIsContainer}>>uploader.ps1 + +echo foreach($folder in $Srcfolders)>>uploader.ps1 +echo {>>uploader.ps1 +echo $SrcFolderPath = $uploaderFolder -replace "\\","\\" -replace "\:","\:" >>uploader.ps1 +echo $DesFolder = $folder.Fullname -replace $SrcFolderPath,$FTPHost>>uploader.ps1 +echo $DesFolder = $DesFolder -replace "\\", "/">>uploader.ps1 + +echo try>>uploader.ps1 +echo {>>uploader.ps1 +echo $makeDirectory = [System.Net.WebRequest]::Create($DesFolder);>>uploader.ps1 +echo $makeDirectory.Credentials = New-Object System.Net.NetworkCredential($ftpuname,$ftppassword);>>uploader.ps1 +echo $makeDirectory.Method = [System.Net.WebRequestMethods+FTP]::MakeDirectory;>>uploader.ps1 +echo $makeDirectory.GetResponse();>>uploader.ps1 +echo }>>uploader.ps1 +echo catch [Net.WebException]>>uploader.ps1 +echo {>>uploader.ps1 +echo try {>>uploader.ps1 +echo $checkDirectory = [System.Net.WebRequest]::Create($DesFolder);>>uploader.ps1 +echo $checkDirectory.Credentials = New-Object System.Net.NetworkCredential($ftpuname,$ftppassword);>>uploader.ps1 +echo $checkDirectory.Method = [System.Net.WebRequestMethods+FTP]::PrintWorkingDirectory;>>uploader.ps1 +echo $response = $checkDirectory.GetResponse();>>uploader.ps1 +echo }>>uploader.ps1 +echo catch [Net.WebException] { }>>uploader.ps1 +echo }>>uploader.ps1 +echo }>>uploader.ps1 + +echo foreach($entry in $SrcFiles)>>uploader.ps1 +echo {>>uploader.ps1 +echo $SrcFullname = $entry.fullname>>uploader.ps1 +echo $SrcName = $entry.Name>>uploader.ps1 +echo write-output $SrcFullName>>uploader.ps1 +echo if($SrcName -ne "encoder.bat" -And $SrcName -ne "uploader.ps1"){>>uploader.ps1 +echo $SrcFilePath = $uploaderFolder -replace "\\","\\" -replace "\:","\:">>uploader.ps1 +echo $DesFile = $SrcFullname -replace $SrcFilePath,$FTPHost>>uploader.ps1 +echo $DesFile = $DesFile -replace "\\", "/">>uploader.ps1 +echo $uri = New-Object System.Uri($DesFile)>>uploader.ps1 +echo $webclient.uploadFile($uri, $SrcFullname)>>uploader.ps1 +echo }>>uploader.ps1 +echo }>>uploader.ps1 +echo powershell write-host -fore Green "UPLOAD COMPLETED">>uploader.ps1 +echo pause>>uploader.ps1 + echo enc.key>> temp.keyinfo echo enc.key>> temp.keyinfo @@ -121,22 +227,24 @@ echo "%%~na" call:current_process "%%~na" "%%a" ) del encoder.bat -powershell write-host -fore Green "RENDERING COMPLETED" +powershell write-host -fore Green "ENCODE COMPLETED" del handler.txt del temp.keyinfo +del uploader.ps1 exit :current_process :pointer SET /A timerand=%RANDOM% * 5 / 32768 + 1 for /f %%i IN (handler.txt) do set /a c=%%i -if %c% GEQ 3 ( +if %c% GEQ %multiencode% ( timeout 5 powershell write-host -fore Green "WAITING FOR CURRENT STACK TO FINISH" goto :pointer ) + set folder=uploaderbax set directory_name=%~1 set file_name=%~2 mkdir "%cd%\%~1" - powershell -command "$d = $env:directory_name ; $f = $env:file_name ; $c = ' - ' + -join ((48..57) + (65..90) + (97..122) | get-random -Count 10 | %%%{[char]$_}) ; rename-item $d $d$c ; move-item $f $d$c ; copy-item encoder.bat $d$c ; copy-item temp.keyinfo $d$c ; cd $d$c ; $p = get-content ../handler.txt; $m = [int]$p; $m = $m + 1; set-content ../handler.txt $m ; start-process encoder.bat" + powershell -command "$d = $env:directory_name ; $f = $env:file_name ; $c = ' - ' + -join ((48..57) + (65..90) + (97..122) | get-random -Count 10 | %%%{[char]$_}) ; rename-item $d $d$c ; move-item $f $d$c ; copy-item encoder.bat $d$c ; copy-item uploader.ps1 $d$c ; copy-item temp.keyinfo $d$c ; cd $d$c ; $p = get-content ../handler.txt; $m = [int]$p; $m = $m + 1; set-content ../handler.txt $m ; start-process encoder.bat" exit /b 0 From 66cd9e8170dec05dc10d759678568eac5b8c3a1c Mon Sep 17 00:00:00 2001 From: MohammadReza Mashhadi <92037547+Mohammadrezamsd@users.noreply.github.com> Date: Wed, 23 Feb 2022 20:06:48 +0330 Subject: [PATCH 6/6] CPU-Utilization --- main.bat | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/main.bat b/main.bat index ce6831e..cd39de4 100644 --- a/main.bat +++ b/main.bat @@ -5,7 +5,7 @@ set "STR=WELCOME TO HAJI ENCODER^!" set "SIZE=80" set "STR2=BY MOHAMMADREZA AND EGHBAL" set "SIZE=50" -set "STR3=VERSION 1.3" +set "STR3=VERSION 2.7" set "SIZE=50" set "LEN=0" @@ -23,13 +23,12 @@ call echo %%spaces:~0,%pref_len%%%%%STR%%%%spaces:~0,%suf_len%%% call echo %%spaces:~0,%pref_len%%%%%STR2%%%%spaces:~0,%suf_len%%% call echo %%spaces:~0,%pref_len%%%%%STR3%%%%spaces:~0,%suf_len%%% call echo %%stars:~0,%SIZE%%% - endLocal color 07 -set /p course="Enter Course Directory Name: " -set /p multiencode="Number of Simultaneous Encoding: " +set /p upload="Do You Want to Upload the Files? [y/n] " +if /i "%upload%" equ "y" set /p course="Enter Course Directory Name: " powershell -command "set-content handler.txt '0'" @@ -103,7 +102,8 @@ echo del temp.keyinfo>>encoder.bat ( echo set /a var = %%var%% + 1 )>>encoder.bat -echo powershell -executionpolicy remotesigned -File uploader.ps1>>encoder.bat +echo powershell if($env:upload -eq 'y') { powershell -executionpolicy remotesigned -File uploader.ps1 }>>encoder.bat +echo if /i "%upload%" equ "n" del uploader.ps1>>encoder.bat powershell -command "Add-Content encoder.bat 'del encoder.bat & exit'" @@ -214,6 +214,8 @@ echo $webclient.uploadFile($uri, $SrcFullname)>>uploader.ps1 echo }>>uploader.ps1 echo }>>uploader.ps1 echo powershell write-host -fore Green "UPLOAD COMPLETED">>uploader.ps1 +echo del uploader.ps1>>uploader.ps1 +echo del encoder.bat>>uploader.ps1 echo pause>>uploader.ps1 echo enc.key>> temp.keyinfo @@ -236,9 +238,9 @@ exit :current_process :pointer SET /A timerand=%RANDOM% * 5 / 32768 + 1 -for /f %%i IN (handler.txt) do set /a c=%%i -if %c% GEQ %multiencode% ( - timeout 5 +for /f "skip=1" %%p in ('wmic cpu get loadpercentage') do set /a usage=%%p +if %usage% geq 95 ( + timeout 10 powershell write-host -fore Green "WAITING FOR CURRENT STACK TO FINISH" goto :pointer )