AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1510596
Accepted
somebadhat
somebadhat
Asked: 2019-12-17 21:57:29 +0800 CST2019-12-17 21:57:29 +0800 CST 2019-12-17 21:57:29 +0800 CST

Como capturar/gravar/baixar vários URLs de streaming de áudio com um script cmd ou PowerShell?

  • 772

Windows 10 64 bits.

Como capturar/gravar/baixar vários URLs de streaming de áudio com um script cmd ou PowerShell?

Eu capturo 15 fluxos de áudio .mp3 de 15 servidores por uma hora todas as noites usando um lote cmd. Eu passei por wget, ffmpeg, vlc e curl. Meu script produz resultados não confiáveis, apenas um dia em sete todos os 15 fluxos são capturados por uma hora. Curl é o mais confiável. Eu abro uma instância de curl para cada fluxo.

start "" /min %windir%\curl.exe.lnk http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_q -o "%temp%\bbc1.mp3" 

Eu tentei powershell hoje à noite e falhou. Lentamente, metade das 15 instâncias do powershell se fecharam e a outra metade não capturou por uma hora.

start "" /min "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe.lnk" -Command "(new-object net.webclient).DownloadFile('http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_q', '%temp%\bbc1.mp3')"

Achei que capturar 15 fluxos em uma instância do powershell poderia ser melhor, mas o segundo fluxo nunca é iniciado porque o primeiro fluxo nunca termina.

$Urls = @()
$Urls += "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_q"  
$Urls += "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio3_mf_q"

$OutPath = "$env:temp\"

ForEach ( $item in $Urls) {
$file = $OutPath +  ($item).split('/')[-1] + ".mp3"
(New-Object System.Net.WebClient).DownloadFile($item, $file)
}

Quatro horas de bing e google não produziram resposta.

Como capturar/gravar/baixar streaming de áudio na linha de comando?

Não estou preso no powershell ou no curl. Os únicos requisitos são que ele seja executado no Windows 10 de 64 bits, capture todos os 15 fluxos de forma confiável e possa ser executado sem interação do usuário.

audio cmd.exe
  • 2 2 respostas
  • 1756 Views

2 respostas

  • Voted
  1. somebadhat
    2019-12-30T07:44:34+08:002019-12-30T07:44:34+08:00

    Windows 10 64 bits. Não requer privilégios de administrador.

    Como capturar/gravar/baixar vários URLs de streaming de áudio com um script cmd ou PowerShell usando streamripper v1.64.6, sleep , PowerShell 5.1 ( System.Net.WebClient DownloadFileAsync ), curl v.7.55.1 e ffmpeg v.3.4. Os fluxos de áudio são servidos de várias maneiras, não é uma boa ideia confiar em um método de captura.

    Estou tendo muito sucesso com cmd, streamripper v.1.64.6 e ffmpeg v.3.4.

    Stop-process é usado para matar ffmpeg e curl para gravar o download no arquivo.

    Você pode ouvir os streams enquanto eles baixam com o Windows Media Player. O comprimento dos metadados nem sempre será exibido corretamente.

    O ffmpeg pode ser usado para fazer muito pós-processamento, como escrever metadados e aparar. Altere o caminho para ffmpeg e curl. streamripper, System.Net.WebClient e curl overwrite por padrão. Eu configurei o ffmpeg para sobrescrever.

    Esses scripts baixam por 30 segundos.

    Usando cmd, streamripper e ffmpeg: Quando o streamripper perde sua conexão, ele renomeia o arquivo original e inicia a captura novamente. Este lote concatena os arquivos. O Streamripper capturará iheart, tunein, streamguys, streamtheworld, radiojar, abacast e streams de destaque, pelo menos. Como sempre, escreva seus comandos start "" streamripper.exe.lnkpara evitar pausas.

    URLs de transmissão mudam. Escrevi uma página que pode ajudar a encontrar um URL de transmissão. Como encontrar um URL de transmissão iheart.

    # How to simultaneously, concurrently, in one instance of cmd capture / record / download multiple audio streams
    # Windows 10 64-bit. cmd, sleep, streamripper v.1.64.6 and ffmpeg v.3.4. 
    # https://superuser.com/posts/1510596/how-to-simultaneously-concurrently-in-one-instance-of-powershell-capture-multi 
    # Streamripper overwrites by default. I set ffmpeg to overwrite.
    START "" /min "streamripper.exe.lnk" https://ample.revma.ihrhls.com/zc1269 -A -a ALICE3 -d "%cd%" -l 30 -u "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11" --quiet
    sleep 5
    START "" /min "streamripper.exe.lnk" http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_q -A -a BBC13 -d "%cd%" -l 30 -u "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11" --quiet
    sleep 1
    title DELAY WHILE  STREAMRIPPER COMPLETES IT'S TASKS. 
    echo. 
    echo    DELAY WHILE STREAMRIPPER COMPLETES IT'S TASKS. 
    echo. 
    :delaystreamripper
    echo    %time%
    SET errorlevel=
    TASKLIST|FIND /I "streamripper.exe"> nul
    IF not ERRORLEVEL 1 (
    ping 8.8.8.8> nul
    rem change next line. I use 180.
    sleep 10 
    GOTO :delaystreamripper
    )
    :concatenate 
    dir *).*> NUL 2>&1
    IF NOT ERRORLEVEL 1 (
    SETLOCAL ENABLEDELAYEDEXPANSION
    echo. 
    echo    DEL *.CUE
    del /q *.cue
    echo. 
    echo    dir /b *^).*
    dir /b *^).* 
    echo. 
    sleep 1 
    for /f %%g in ('dir "*).*" ^| find "File(s)"') do SET zcnt1=%%g
    rem in different2 (1).aac    g="different2"    h=(1)    and    i=aac    w/o the quotes
    for /f "tokens=1,2,3 delims=. " %%g in ('dir /b "*).*"') do (
    copy /b /y "%%g (*).%%i" + "%%g.%%i" "%%g.%%i.tmp" 
    del /q %%g*.%%i 
    ) 
    for /f %%g in ('dir "*.tmp" ^| find "File(s)"') do SET zcnt2=%%g
    for /f "tokens=1,2,3 delims=. " %%g in ('dir /b "*.tmp"') do (
    ren %%g.%%h.%%i %%g.%%h 
    )
    echo. &echo    Concatenate !zcnt1! files with !zcnt2! files: 
    SETLOCAL DISABLEDELAYEDEXPANSION    
    )
    :ffmpeg
    sleep 1 
    TITLE FFMPEG 
    ECHO. 
    ECHO    FFMPEG
    start "" /min "%windir%\ffmpeg.exe.lnk" -y -i "%cd%\bbc13.mp3" -metadata title="BBC RADIO 1" -metadata artist="HITS. NEW MUSIC." -metadata album="bbc.co.uk/sounds" -metadata album_artist="HITS. NEW MUSIC." -ss 00:01:15 -c copy "%cd%\bbc1.mp3" 
    sleep 1 
    start "" /min "%windir%\ffmpeg.exe.lnk" -y -i "%cd%\alice3.aac" -acodec libmp3lame -metadata title="ALICE 95.5FM" -metadata artist="alice95.5FM.iheart.com" -metadata album_artist="alice95.5FM.iheart.com" "%cd%\alice.mp3"
    rem
    

    Usando Powershell, curl e ffmpeg:

    # How to simultaneously, concurrently, in one instance of powershell capture / record / download multiple audio streams? 
    # Windows 10 64-bit. Powershell 5.1, curl v.7.55.1 and ffmpeg v.3.4
    # https://superuser.com/posts/1510596/how-to-simultaneously-concurrently-in-one-instance-of-powershell-capture-multi 
    # System.Net.WebClient and curl overwrite by default. I set ffmpeg to overwrite.
    $host.ui.rawui.WindowTitle = $CurrentUser.Name +  "     " +  $(get-date) + "      " +$MyInvocation.MyCommand.Path
    #echo. 
    write-host "
    Capture for 30 seconds. 
    $(get-date)
    "
    write-host "   "$MyInvocation.MyCommand.Path 
    $wc = New-Object System.Net.WebClient 
    $url = "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_q" 
    $output = "$env:userprofile\desktop\bbc1.mp3" 
    $wc.DownloadFileAsync($url, $output) 
    $wc = New-Object System.Net.WebClient 
    $url = "http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio3_mf_q" 
    $output = "$env:userprofile\desktop\bbc3.mp3" 
    $wc.DownloadFileAsync($url, $output)
    # overwrite 
    & "$env:windir\ffmpeg.exe.lnk" -y -i "http://bbcwssc.ic.llnwd.net/stream/bbcwssc_mp1_ws-einws" -c copy "$env:userprofile\desktop\bbc4.mp3"  
    & "$env:windir\curl.exe.lnk" http://bbcmedia.ic.llnwd.net/stream/bbcmedia_6music_mf_p -o "$env:userprofile\desktop\bbc62.mp3" 
    # set capture time for 30 seconds
    start-sleep 30 
    # set capture time for 2 minutes
    # start-sleep (60*2)
    # set capture time for 3 hours
    # start-sleep (3600*3)
    stop-process -force -name curl 
    stop-process -force -name ffmpeg 
    # set tags and trim.
    Write-Host "
    Trim first 15 seconds of bbc62.mp3 is next. Listen to it then press any key to continue. Trimmed file is saved as bbc6.mp3"
    cmd /c pause | out-null
    & "$env:windir\ffmpeg.exe" -y -i "$env:userprofile\desktop\bbc62.mp3" -metadata title="BBC RADIO 1" -metadata artist="HITS. NEW MUSIC." -metadata album="bbc.co.uk/sounds" -metadata album_artist="HITS. NEW MUSIC." -ss 00:00:15 -c copy "$env:userprofile\desktop\bbc6.mp3" 
    remove-item "$env:userprofile\desktop\bbc62.mp3"
    exit
    #
    

    Pesquisa do Google - Use curl para baixar streams de áudio

    Pesquisa do Google - Use ffmpeg para baixar streams de áudio

    Pesquisa do Google - Use ffmpeg para gravar metadados

    Alternativas para System.Net.WebClient: Powershell pode executar comandos em paralelo no stackoverflow

    como capturar streaming de áudio como salvar streaming de áudio como produzir streaming de áudio como gravar streaming de áudio

    • 2
  2. Best Answer
    somebadhat
    2021-04-01T13:38:36+08:002021-04-01T13:38:36+08:00

    Windows 10 de 64 bits, script PowerShell 5 para ripar/capturar/gravar/salvar/baixar streaming de áudio para flash drive como .mp3 com streamripper, wget, curl, ffmpeg, sistema operacional exclui arquivos suspeitos, bloqueia a área de trabalho se não houver mouse ou atividade do teclado por X segundos, proíbe o uso de scripts, o usuário é limitado a direitos padrão / de usuário e faz logoff em uma hora. Corte os primeiros 3 minutos.

    Mata com força todas as instâncias de ffmpeg, wget, curl e streamripper sem perguntar.

    O padrão é a captura de 10 segundos de quatro fluxos. Consulte $zsegundos.

    Tente ffmpeg, wget ou curl se o streamripper não for bem-sucedido com o seu stream.

    <# BEGIN COMMENTS
    
    **This script is written to run at a Window 10 64-bit PC that no one is sitting at. 
    Automated keyboard and mouse events to keep PC awake / unlocked. 
    See  KEEP PC AWAKE / UNLOCKED**
    
    Windows 10 64-bit, PowerShell 5 script to Rip / Capture / Record / Save / Download 
    streaming audio to flash drive as .mp3 with streamripper, wget, curl, ffmpeg, OS 
    deletes suspicious files, locks the desktop if there is no mouse or keyboard activity 
    for X seconds, prohibits the use of scripts, user is limited to standard / user rights 
    and logs you off in one hour. Cut first 3 minutes.
    
    **Forcefully kills every instance of ffmpeg, wget, curl, and streamripper w/o asking.**
    
    **The default is 10 second capture of four streams. See $zseconds**
    
    Try ffmpeg, wget or curl if streamripper does not succeed with your stream.
    
    ~2GB of free space on flash drive. Streams are saved to $env:userprofile\
    downloads\$ztimestamp and written to flash drive that has 
    flashDrive:\DoNotDeleteFlash4291phIr_Wn.txt to directory flashDrive:\downloads\radio 
    by ffmpeg. The time to write to flash drive depends on the quality of the system and 
    flash drive.
    
    Dependencies:
    
    flashDrive:\DoNotDeleteFlash4291phIr_Wn.txt. Used to find flash drive.
    flashDrive:\downloads with 4.txt, 4.txt(FlashDriveLetter).lnk, curl, wget, ffmpeg,
    xxmklink, and streamripper. Create shortcuts on the command line with xxmklink.exe 
    http://www.xxcopy.com/download/xxmklink.zip.
    Copy streamripper files to flashDrive:\downloads\streamripper
    
    If scripts prohibited:
    Create shortcut with name: 
    
    4.txt(FlashDriveLetter) i.e. 4.txt(K)     Script creates shortcuts for 23 drive letter.
    
    Target: 
    
    powershell.exe $z=Get-Date -f 'ddhhmmss'; copy 4.txt 4.txt.$z.txt; gc 4.txt|powershell
    
    Run shortcut.
    
    Kill with CMD:
    
    taskkill /f /im ffmpeg.exe& taskkill /f /im wget.exe& taskkill /f /im curl.exe& taskkill /f /im streamripper.exe
    
    Kill with PowerShell:
    
    taskkill /f /im ffmpeg.exe; taskkill /f /im wget.exe; taskkill /f /im curl.exe; taskkill /f /im streamripper.exe
    
    END COMMENTS #>
    
    
    
    
    
    
    $zseconds=3060 ; # Rip / Capture / Record / Save / Download     51 minutes all streams.
    $zseconds=240 ; # 4 minutes all streams.
    $zseconds=10 ; $zdebug=0 ; # 10 seconds 4 streams.
    
    # BEGIN Store script block in variable
    $zblock= {
    # If not online exit
    ping -n 1 8.8.8.8|out-null; 
    # if not errorlevel 1 
    # if false 
    IF (-not $?){Write-Output "
    ddhhmmss is $ztimestamp1  Unable to get online.  Terminating script."|out-file $zdrive\downloads\documents\4txtDailyLog.txt -append;
    Write-Output "
    ddhhmmss is $ztimestamp1  Unable to get online.  Terminating script and exiting in 5 seconds.
    ";
    Start-Sleep 5 ;
    exit;
    }
    
    # BEGIN Rip / Capture / Record / Save / Download streaming audio
    
    if($zdebug -eq '0'){
    # if in debug mode do the following
    Write-output "
    The time is $((get-date $ztimestamp0 -f 'hh:mm:sstt') -replace ' ','')`n
    Recording for $($zseconds/60) minutes     Recording stop $((get-date $ztimestamp0.AddSeconds($zseconds) -f 'hh:mm:sstt') -replace ' ','')      Processing stop ~$((get-date $ztimestamp0.AddSeconds($zseconds+(gc $zdrive\downloads\documents\4txtFFmpegLastTimeTook.txt)) -f hh:mm:sstt) -replace ' ','';)`n 
    This is $zdrive\downloads\4.txt`n
    Loading ffmpeg, wget, curl and streamripper.`n
    The current directory is $pwd";
    & $zdrive\downloads\ffmpeg.exe.lnk -y -i "http://listen.xray.fm/stream" -metadata title='KXRY 107.1FM PORTLAND,OR' -metadata artist='xray.fm' -metadata album='PORTLAND, OR' -metadata album_artist='xray.fm' -c copy "$zdrive\downloads\radio\xray2.mp3" ;
    start-sleep 1 ;
    & $zdrive\downloads\wget.exe.lnk http://listen.xray.fm/stream -O "$env:userprofile\downloads\$ztimestamp1\XRAY3.mp3" ;
    start-sleep 1 ;
    & $zdrive\downloads\curl.exe.lnk http://stream.live.vc.bbcmedia.co.uk/bbc_6music -o "$env:userprofile\downloads\$ztimestamp1\BBC63.mp3" ;
    start-sleep 1 ;
    & $zdrive\downloads\streamripper\streamripper.exe.lnk http://ample.revma.ihrhls.com/zc1269 -A -a ALICE3 -d $env:userprofile\downloads\$ztimestamp1\ -l $zseconds -u "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0" ;
    
    } else {
    
    
    # YOUR STREAMS HERE 
    
    
    # Capture and process with ffmpeg
    $zcut='00:03:00' ;
    & $zdrive\downloads\ffmpeg.exe.lnk -y -i "http://listen.xray.fm/stream" -af volume='2.367188' -metadata title='KXRY 107.1FM PORTLAND,OR' -metadata artist='xray.fm' -metadata album='PORTLAND, OR' -metadata album_artist='xray.fm' -ss $zcut "$zdrive\downloads\radio\xray2.mp3" ;
    start-sleep 1 ;
    & $zdrive\downloads\wget.exe.lnk http://listen.xray.fm/stream -O "$env:userprofile\downloads\$ztimestamp1\XRAY3.mp3" ;
    start-sleep 1 ;
    & $zdrive\downloads\streamripper\streamripper.exe.lnk http://ample.revma.ihrhls.com/zc1269 -A -a ALICE3 -d $env:userprofile\downloads\$ztimestamp1\ -l $zseconds -u "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0" ;
    start-sleep 1 ;
    & $zdrive\downloads\curl.exe.lnk http://stream.live.vc.bbcmedia.co.uk/bbc_6music -o "$env:userprofile\downloads\$ztimestamp1\BBC63.mp3" ;
    start-sleep 1 ;
    }
    #    END Rip / Capture / Record / Save / Download streaming audio
    
    # BEGIN Wait for sleep $zseconds and streamripper to finish
    start-sleep $zseconds ;
    $ProcessList = @("streamripper") ; Do {$ProcessesFound = Get-Process | ? {$ProcessList -contains $_.Name} | Select-Object -ExpandProperty Name ; IF ($ProcessesFound) {Start-Sleep 1}}Until (!$ProcessesFound)
    stop-process -name wget -ErrorAction SilentlyContinue ;
    stop-process -name curl -ErrorAction SilentlyContinue ;
    stop-process -name ffmpeg -ErrorAction SilentlyContinue ;
    start-sleep 1 ;
    #   END  Wait for sleep $zseconds and streamripper to finish
    
    # BEGIN CONCATENATE. If multiple files of one stream with ( in file name, concatenate them. 
    $Files = @(gci "$env:userprofile\downloads\$ztimestamp1\*`(*") ;
    IF (!($Files.length -eq 0)) {
    Write-Output "Files concatenated..." ;
    Write-Output "Files concatenated."|out-file $zdrive\downloads\documents\4txtDailyLog.txt -append ;
    gci "$env:userprofile\downloads\$ztimestamp1\*`(*" | foreach-object {
    $z="$_" -replace ' \(.\)','' ;
    cmd /c copy /b $z + $_ "$z.tmp" ;
    remove-item $z ;
    rename-item "$z.tmp" $z ;
    }
    ri "$env:userprofile\downloads\$ztimestamp1\*`(*" ;
    start-sleep 1 ;
    }
    #    END CONCATENATE. If multiple files of one stream with ( in file name, concatenate them. 
    
    # BEGIN FFMPEG
    $zprocess = get-date ;
    Write-Output "
    FFmpeg began at $((Get-Date -f 'hh:mm:sstt') -replace ' : ',':')
    " ;
    Write-Output "    $((Get-Date -f 'hh:mm:sstt') -replace ' : ',':') FFmpeg begins."|out-file "$zdrive\downloads\documents\4txtDailyLog.txt" -append ;
    
    if($zdebug -eq '0'){
    $zcut='00:00:00' ;
    & "$zdrive\downloads\ffmpeg.exe.lnk" -y -i "$env:userprofile\downloads\$ztimestamp1\xray3.mp3" -af volume='2.367188' -metadata title='KXRY 107.1FM PORTLAND,OR' -metadata artist='xray.fm' -metadata album='PORTLAND, OR' -metadata album_artist='xray.fm' -ss $zcut "$zdrive\downloads\radio\xray.mp3" ;
    start-sleep 1 ; 
    & "$zdrive\downloads\ffmpeg.exe.lnk" -y -i "$env:userprofile\downloads\$ztimestamp1\alice3.aac" -acodec libmp3lame -metadata album='IHEARTRADIO.COM' -metadata title='ALICE 95.5FM' -metadata artist='alice95.5FM.iheart.com' -metadata album_artist='alice95.5FM.iheart.com' -ss $zcut "$zdrive\downloads\radio\alice.mp3" ;
    start-sleep 1 ; 
    & "$zdrive\downloads\ffmpeg.exe.lnk" -y -i "$env:userprofile\downloads\$ztimestamp1\bbc63.mp3" -metadata title='BBC RADIO 6' -metadata artist='ALTERNATIVE.' -metadata album='bbc.co.uk/sounds' -metadata album_artist='ALTERNATIVE.' -ss $zcut -c copy "$zdrive\downloads\radio\bbc6.mp3" ;
    start-sleep 1 ; 
    
    } else {
    
    $zcut='00:03:00' ;
    
    
    # YOUR PROCESSING HERE 
    
    
    & "$zdrive\downloads\ffmpeg.exe.lnk" -y -i "$env:userprofile\downloads\$ztimestamp1\xray3.mp3" -metadata title='KXRY 107.1FM PORTLAND,OR' -metadata artist='xray.fm' -metadata album='PORTLAND, OR' -metadata album_artist='xray.fm' -ss $zcut -af volume='2.367188' "$zdrive\downloads\radio\xray.mp3" ;
    start-sleep 1 ; 
    & "$zdrive\downloads\ffmpeg.exe.lnk" -y -i "$env:userprofile\downloads\$ztimestamp1\alice3.aac" -metadata album='IHEARTRADIO.COM' -metadata title='ALICE 95.5FM' -metadata artist='alice95.5FM.iheart.com' -metadata album_artist='alice95.5FM.iheart.com' -ss $zcut -acodec libmp3lame "$zdrive\downloads\radio\alice.mp3" ;
    start-sleep 1 ; 
    & "$zdrive\downloads\ffmpeg.exe.lnk" -y -i "$env:userprofile\downloads\$ztimestamp1\bbc63.mp3" -metadata title='BBC RADIO 6' -metadata artist='ALTERNATIVE.' -metadata album='bbc.co.uk/sounds' -metadata album_artist='ALTERNATIVE.' -ss $zcut -c copy "$zdrive\downloads\radio\bbc6.mp3" ;
    start-sleep 1 ; 
    }
    #    END FFMPEG
    
    # BEGIN WAIT FOR WRITING TO FLASH DRIVE TO FINISH
    write "    Past last FFmpeg. Waiting for all instances of FFmpeg to finish." ;
    $ProcessList = @("ffmpeg") ; Do {$ProcessesFound = Get-Process | ? {$ProcessList -contains $_.Name} | Select-Object -ExpandProperty Name ; IF ($ProcessesFound) {Start-Sleep 1}}Until (!$ProcessesFound)
    $z=(get-date -f 'hh:mm:ss tt') -replace ' ','' ;
    Write-Output "    $z FFmpeg finishes."|out-file $zdrive\downloads\documents\4txtDailyLog.txt -append ;
    write "
    All instances of FFmpeg have finished. Have all files finished being written to flash drive?
    " ;
    #    END WAIT FOR WRITING TO FLASH DRIVE TO FINISH
    
    # BEGIN TIME IT TOOK FFMPEG TO PROCESS, COUNT AND FILE SIZE TO LOG
    $zprocess = (get-date) - $zprocess ;
    [math]::ceiling(($zprocess.totalseconds))|out-file "$zdrive\downloads\documents\4txtFFmpegLastTimeTook.txt" ;
    # how to run a command in Write-Output 
    Write-Output "    FFmpeg took: $($zprocess.minutes) minutes and $($zprocess.seconds) seconds." | out-file $zdrive\downloads\documents\4txtDailyLog.txt -append ;
    $z=gci $zdrive\downloads\radio|measure -property length -sum ;
    Write-output "    $($z.Count) streams for $(FileSize $z.Sum)" | out-file "$zdrive\downloads\documents\4txtDailyLog.txt" -append ;
    #    END TIME IT TOOK FFMPEG TO PROCESS, COUNT AND FILE SIZE TO LOG
    
    # BEGIN REVERSE APPEND PERMANENT LOGFILE
    Write-Output "
    Reverse append logfile." ; 
    (gc $zdrive\downloads\documents\4txtDailyLog.txt , $zdrive\downloads\documents\4txtPermanentLog.txt) | sc $zdrive\downloads\documents\4txtPermanentLog.txt ; 
    Write-Output " " ; # double space between Write-Output and Stop-Transcript in 4.txt.transcript.txt
                         
    #    END REVERSE APPEND PERMANENT LOGFILE
    
    Stop-Transcript | out-null ;
    #    END START TRANSCRIPT
    
    # BEGIN REVERSE APPEND PERMANENT TRANSCRIPT
    Write-Output "
    Reverse append transcript." ; 
    (gc $zdrive\downloads\4.txt.transcript.txt , $zdrive\downloads\padding.txt , $zdrive\downloads\4.txt.log2.txt) | sc $zdrive\downloads\4.txt.log2.txt ; 
    Write-Output " " ; 
    #    END REVERSE APPEND PERMANENT TRANSCRIPT
    
    # BEGIN CLEAN UP
    stop-process -name cmd -ErrorAction SilentlyContinue ;
    # Remove-Variable -name zdebug -ErrorAction SilentlyContinue;
    # Clear-Item variable:zdebug -ErrorAction SilentlyContinue;
    $z57 | remove-job -force ; # Kill $zblock2: KEEP PC AWAKE / UNLOCKED.
    # if(test-path "$env:temp\tmp.txt"){ ri "$env:temp\tmp.txt" } ;
    # if(test-path "$env:userprofile\downloads\$ztimestamp1"){ ri "$env:userprofile\downloads\$ztimestamp1" -force -recurse } ;
                                                           
    #    END CLEAN UP
    
    explorer $zdrive\downloads\radio\ ; 
    POPD ; 
    
    EXIT ;
    }
    #    END Store script block in variable
    
    
    
    
    
    
    
    
    
    
    # BEGIN Kill every instance of wget, curl, ffmpeg and streamripper w/o asking.
    stop-process -name wget -ErrorAction SilentlyContinue ;
    stop-process -name curl -ErrorAction SilentlyContinue ;
    stop-process -name ffmpeg -ErrorAction SilentlyContinue ;
    stop-process -name streamripper -ErrorAction SilentlyContinue ;
    #    END Kill every instance of wget, curl, ffmpeg and streamripper w/o asking.
    
    # BEGIN define functions
    Function FileSize() {[cmdletbinding()]Param ([long]$Type);If ($Type -ge 1TB) {[string]::Format("{0:0.00} TB", $Type / 1TB)}ElseIf ($Type -ge 1GB) {[string]::Format("{0:0.00} GB", $Type / 1GB)}ElseIf ($Type -ge 1MB) {[string]::Format("{0:0.00} MB", $Type / 1MB)}ElseIf ($Type -ge 1KB) {[string]::Format("{0:0.00} KB", $Type / 1KB)}ElseIf ($Type -gt 0) {[string]::Format("{0:0.00} Bytes", $Type)}}; <# End of function #>
    #   END define functions
    
    # BEGIN Flash drive letter to variable i.e. K:
    $z=@('D:','E:','F:','G:','H:','i:','J:','K:','L:','M:','N:','O:','P:','Q:','R:','S:','T:','U:','V:','W:','X:','Y:','Z:') ;  
    $z|foreach-object{if(test-path $_'\DoNotDeleteFlash4291phIr_Wn.txt'){$zdrive="$_"}} ;
    # $zdrive2=$zdrive.trim(':') ; # REMOVE COLON
    #   END Flash drive letter to variable i.e. K:
    
    # BEGIN Create shortcut to this file for 23 drive letter one time. 
    # Target: powershell.exe $z=Get-Date -f 'ddhhmmss'; copy $zMyCommandName $zMyCommandName.`$z.txt; gc $zMyCommandName|powershell
    # Start in: flashdrive:\downloads 
    # Run: Minimized
    IF(!(test-path "$zdrive\Downloads\4.txt(Z).lnk")) {
    $zMyCommandName=$myinvocation.mycommand.name ; # scripts not prohibited
    $zMyCommandName='4.txt' ; # scripts prohibited
    $z=@('D:','E:','F:','G:','H:','i:','J:','K:','L:','M:','N:','O:','P:','Q:','R:','S:','T:','U:','V:','W:','X:','Y:','Z:') ;  
    $z|foreach-object{
    $z=$_.trim(':');
    $SourceFileLocation = "$env:systemroot\System32\WindowsPowerShell\v1.0\powershell.exe" ;
    $ShortcutLocation = "$zdrive\downloads\$zMyCommandName($z).lnk" ;
    $WScriptShell = New-Object -ComObject WScript.Shell ;
    $Shortcut = $WScriptShell.CreateShortcut($ShortcutLocation) ;
    $shortcut.WindowStyle="7" ;
    $shortcut.WorkingDirectory="$_\downloads" ;
    $Shortcut.TargetPath = "$SourceFileLocation" ;
    $Shortcut.IconLocation = "$env:systemroot\System32\WindowsPowerShell\v1.0\powershell.exe,0" ;
    $Shortcut.Arguments = "`$z=Get-Date -f 'ddhhmmss'; copy $zMyCommandName $zMyCommandName.`$z.txt; gc $zMyCommandName|powershell" ;
    $shortcut;
    $shortcut.Save();
    }
    }
    #   END Create shortcut to this file for 23 drive letter one time.
    
    # BEGIN Create timestamp / directory / file
    $ztimestamp0=Get-Date ;
    $ztimestamp1=Get-Date -f  'ddhhmmss' ;
    IF(!(test-path "$zdrive\Downloads\documents")) {ni -ItemType Directory "$zdrive\Downloads\documents" > $null} ;
    IF(!(test-path "$zdrive\Downloads\radio")) {ni -ItemType Directory "$zdrive\Downloads\radio" > $null} ;
    IF(!(test-path "$zdrive\Downloads\DoNotDelete")) {ni -ItemType Directory "$zdrive\Downloads\DoNotDelete" > $null} ;
    IF(!(test-path "$env:userprofile\downloads\$ztimestamp1")) {ni -ItemType Directory "$env:userprofile\downloads\$ztimestamp1" > $null} ;
    IF(![System.IO.File]::Exists("$zdrive\downloads\documents\4txtFFmpegLastTimeTook.txt")) {ni -Path "$zdrive\downloads\documents\" -Name "4txtFFmpegLastTimeTook.txt" -ItemType "file" -Value "100" > $null } ;
    $zseconds|out-file "$zdrive\downloads\DoNotDelete\6.ps1.DoNotDelete.txt" ; # used by flashdrive:\downloads\6.ps1     Keep PC Awake
    #    END Create directory / file 
    
    # BEGIN Possible script prohibited triggers
    
    
    #    END Possible script prohibited triggers   
    
    # BEGIN WINDOW TITLE
    # $MyInvocation does not work with get-content piped to powershell
    # https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables
    $host.ui.rawui.WindowTitle ="This is 4.txt     Recording for $($zseconds/60) minutes.     Recording stop $((get-date $ztimestamp0.AddSeconds($zseconds) -f 'hh:mm:sstt') -replace ' ','')      Processing stop ~$((get-date $ztimestamp0.AddSeconds($zseconds+(gc $zdrive\downloads\documents\4txtFFmpegLastTimeTook.txt)) -f 'hh:mm:sstt') -replace ' ','')      This is $zdrive\downloads\4.txt" ;
    #   END WINDOW TITLE
    
    # CREATE SHORTCUTS
    & "$zdrive\downloads\xxmklink" $zdrive\downloads\ffmpeg.exe.lnk "$zdrive\downloads\ffmpeg.exe" `"`" "$zdrive\downloads" `"`" "7" `"`" ;
    & "$zdrive\downloads\xxmklink" $zdrive\downloads\wget.exe.lnk "$zdrive\downloads\wget.exe" `"`" "$zdrive\downloads" `"`" "7" `"`" ;
    & "$zdrive\downloads\xxmklink" $zdrive\downloads\curl.exe.lnk "$zdrive\downloads\curl.exe" `"`" "$zdrive\downloads" `"`" "7" `"`" ;
    & "$zdrive\downloads\xxmklink" $zdrive\downloads\streamripper\streamripper.exe.lnk "$zdrive\downloads\streamripper\streamripper.exe" `"`" "$zdrive\downloads\streamripper" `"`" "7" `"`" ;
    # BEGIN works. I have not found a use for it yet
    # & "$zdrive\downloads\xxmklink" $zdrive\downloads\6.ps1`($zdrive2`)KeepAwake.lnk "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe $z=Get-Date -f 'ddhhmmss'; copy 6.ps1 6.ps1.$z.txt; gc 6.ps1|powershell" `"`" "$zdrive\downloads" `"`" "7" `"`" ;
    #    END works. I have not found a use for it yet
    
    # Initialize 4txtDailyLog.txt
    Write-Output "$((Get-Date -f 'ddd MM/dd/yy')) $(((Get-Date -f 'hh:mm:sstt') -replace ' ',''))
    This is $env:userprofile on $env:computername running $zdrive\downloads\4.txt
    Capturing audio streams with ffmpeg, wget, curl and streamripper.
    Recording for $($zseconds/60) minutes.
    Recording will end around $((get-date $ztimestamp0.AddSeconds($zseconds) -f 'hh:mm:sstt') -replace ' ','') 
    Processing will end around $((get-date $ztimestamp0.AddSeconds($zseconds+(gc $zdrive\downloads\documents\4txtFFmpegLastTimeTook.txt)) -f hh:mm:sstt) -replace ' ','')"|out-file $zdrive\downloads\documents\4txtDailyLog.txt ;
    
     # BEGIN MINIMIZE ALL WINDOWS minimize window
    ((New-Object -ComObject Shell.Application).MinimizeAll()) ;
    #   END MINIMIZE ALL WINDOWS minimize window                 
    
    # BEGIN KEEP PC AWAKE / UNLOCKED. Sleep, move mouse, write-host, SendKeys.
    $zblock2={
    $myshell = New-Object -com "Wscript.Shell" ;
    while ($true)
    {
    Start-Sleep -s (Get-Random -Maximum 5 -Minimum 1) ;
    $Pos = [System.Windows.Forms.Cursor]::Position ;
    [System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point((($Pos.X) + 1) , $Pos.Y) ;
    $Pos = [System.Windows.Forms.Cursor]::Position ;
    [System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point((($Pos.X) - 1) , $Pos.Y) ;
    $word = -join ((65..90) + (97..122) | Get-Random -Count (Get-Random -Maximum 8 -Minimum 5) | % {[char]$_})
    Write-Host "$word" ;
    $myshell.sendkeys(".") ;
    } ;
    } ; # END ZBLOCK2
    
    $z57=start-job -scriptblock $zblock2 ; 
    # write-output "The job parameter id is $($z57.id)";
    # $z57|wait-job ;
    # $z57|stop-job ;
    # $z57|remove-job -force ;
    
    #    END KEEP PC AWAKE / UNLOCKED. Sleep, move mouse, write-host, SendKeys.
    
    
    # BEGIN START TRANSCRIPT
    $ErrorActionPreference="SilentlyContinue" ;
    Stop-Transcript | out-null ;
    $ErrorActionPreference = "Continue" ;
    Start-Transcript -path $zdrive\downloads\4.txt.transcript.txt ;
    Write-Output "See 4txtDailyLog.txt and 4txtPermanentLog.txt" ;
    #    END START TRANSCRIPT    
      
    # Invoke script: Start capturing streams with ffmpeg, wget, curl, streamripper, and ....
    & $zblock ; 
    
    # a blank line must follow '& $zblock' 
    
    • 0

relate perguntas

  • Como criar um script que ouça as alterações de conteúdo e toque nas pastas pai até o fim?

  • Qual é o comando para redefinir uma instalação do Windows sem excluir nenhum arquivo

  • Codec e configuração para saída ffmpeg de taxa de bits mais baixa

  • O Windows 2016 não executa o arquivo .bat

  • O fone de ouvido bluetooth Sony WH-1000XMX2 não consegue se conectar corretamente automaticamente

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    Serviço do Windows 10 chamado AarSvc_70f961. O que é e como posso desativá-lo?

    • 2 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Marko Smith

    ssl.SSLCertVerificationError: falha na verificação do certificado [SSL: CERTIFICATE_VERIFY_FAILED]: não foi possível obter o certificado do emissor local (_ssl.c:1056)

    • 4 respostas
  • Marko Smith

    Como posso saber em qual unidade o Windows está instalado?

    • 6 respostas
  • Martin Hope
    Albin Como faço para ativar o WindowsXP agora que o suporte acabou? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch O Windows 10 exclui muitos arquivos minúsculos muito lentamente. Algo pode ser feito para agilizar? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Como Ctrl+C e Ctrl+V funcionam? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve