Upload files to ''
This commit is contained in:
14
all_together_now.py
Normal file
14
all_together_now.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
from subprocess import call
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
rc = call("./destreamer.sh -k -i", sys.argv[1])
|
||||||
|
|
||||||
|
if rc == 0:
|
||||||
|
rc = call("./rename.py"
|
||||||
|
|
||||||
|
if rc == 0:
|
||||||
|
for entry in os.scandir('./vidoes'):
|
||||||
|
if os.path.isdir(entry.path) and entry.name not contains 'out':
|
||||||
|
rc = call("./process_audio.py"
|
||||||
|
print(rc)
|
||||||
123
process_audio.py
Normal file
123
process_audio.py
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""Tests the audacity pipe.
|
||||||
|
|
||||||
|
Keep pipe_test.py short!!
|
||||||
|
You can make more complicated longer tests to test other functionality
|
||||||
|
or to generate screenshots etc in other scripts.
|
||||||
|
|
||||||
|
Make sure Audacity is running first and that mod-script-pipe is enabled
|
||||||
|
before running this script.
|
||||||
|
|
||||||
|
Requires Python 2.7 or later. Python 3 is strongly recommended.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from subprocess import call
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
# Platform specific file name and file path.
|
||||||
|
# PATH is the location of files to be imported / exported.
|
||||||
|
|
||||||
|
#PATH = './'
|
||||||
|
PATH = sys.argv[1]
|
||||||
|
|
||||||
|
|
||||||
|
# Platform specific constants
|
||||||
|
if sys.platform == 'win32':
|
||||||
|
print("recording-test.py, running on windows")
|
||||||
|
PIPE_TO_AUDACITY = '\\\\.\\pipe\\ToSrvPipe'
|
||||||
|
PIPE_FROM_AUDACITY = '\\\\.\\pipe\\FromSrvPipe'
|
||||||
|
EOL = '\r\n\0'
|
||||||
|
else:
|
||||||
|
print("recording-test.py, running on linux or mac")
|
||||||
|
PIPE_TO_AUDACITY = '/tmp/audacity_script_pipe.to.' + str(os.getuid())
|
||||||
|
PIPE_FROM_AUDACITY = '/tmp/audacity_script_pipe.from.' + str(os.getuid())
|
||||||
|
EOL = '\n'
|
||||||
|
|
||||||
|
|
||||||
|
print("Write to \"" + PIPE_TO_AUDACITY +"\"")
|
||||||
|
if not os.path.exists(PIPE_TO_AUDACITY):
|
||||||
|
print(""" ..does not exist.
|
||||||
|
Ensure Audacity is running with mod-script-pipe.""")
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
print("Read from \"" + PIPE_FROM_AUDACITY +"\"")
|
||||||
|
if not os.path.exists(PIPE_FROM_AUDACITY):
|
||||||
|
print(""" ..does not exist.
|
||||||
|
Ensure Audacity is running with mod-script-pipe.""")
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
print("-- Both pipes exist. Good.")
|
||||||
|
|
||||||
|
TOPIPE = open(PIPE_TO_AUDACITY, 'w')
|
||||||
|
print("-- File to write to has been opened")
|
||||||
|
FROMPIPE = open(PIPE_FROM_AUDACITY, 'r')
|
||||||
|
print("-- File to read from has now been opened too\r\n")
|
||||||
|
|
||||||
|
|
||||||
|
def send_command(command):
|
||||||
|
"""Send a command to Audacity."""
|
||||||
|
print("Send: >>> "+command)
|
||||||
|
TOPIPE.write(command + EOL)
|
||||||
|
TOPIPE.flush()
|
||||||
|
|
||||||
|
|
||||||
|
def get_response():
|
||||||
|
"""Get response from Audacity."""
|
||||||
|
line = FROMPIPE.readline()
|
||||||
|
result = ""
|
||||||
|
while True:
|
||||||
|
result += line
|
||||||
|
line = FROMPIPE.readline()
|
||||||
|
# print(f"Line read: [{line}]")
|
||||||
|
if line == '\n':
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def do_command(command):
|
||||||
|
"""Do the command. Return the response."""
|
||||||
|
send_command(command)
|
||||||
|
# time.sleep(0.1) # may be required on slow machines
|
||||||
|
response = get_response()
|
||||||
|
print("Rcvd: <<< " + response)
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
def export(filename):
|
||||||
|
"""Export the new track, and deleted both tracks."""
|
||||||
|
do_command("Select: Track=1 mode=Set")
|
||||||
|
do_command("SelTrackStartToEnd")
|
||||||
|
do_command(f"Export2: Filename={os.path.join(PATH, filename)} NumChannels=1.0")
|
||||||
|
do_command("SelectAll")
|
||||||
|
do_command("RemoveTracks")
|
||||||
|
|
||||||
|
|
||||||
|
def do_command(command):
|
||||||
|
"""Send one command, and return the response."""
|
||||||
|
send_command(command)
|
||||||
|
response = get_response()
|
||||||
|
print("Rcvd: <<< \n" + response)
|
||||||
|
return response
|
||||||
|
|
||||||
|
def process():
|
||||||
|
for entry in os.scandir(sys.argv[1]):
|
||||||
|
if entry.path.endswith(".mkv"):
|
||||||
|
do_command('New:')
|
||||||
|
video_in = os.path.abspath(entry.path)
|
||||||
|
processed_audio = '{}-out.wav'.format(entry.path.split('.')[0])
|
||||||
|
final_output_name = "out/{}".format(entry.name)
|
||||||
|
do_command("Import2: Filename={}".format(video_in))
|
||||||
|
do_command('Popmute:')
|
||||||
|
do_command('Amplify:')
|
||||||
|
export(processed_audio)
|
||||||
|
do_command('Close:')
|
||||||
|
# TODO Move to different script?
|
||||||
|
final_output_name = "output-" + video
|
||||||
|
rc = call('ffmpeg -i {} -i {} -acodec copy -vcodec copy -f mkv {}'.format(video, processed_audio, final_output_name))
|
||||||
|
print(rc)
|
||||||
|
|
||||||
|
process()
|
||||||
34
rename.py
Normal file
34
rename.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import dateutil.parser as dparser
|
||||||
|
import re
|
||||||
|
|
||||||
|
target = sys.argv[1]
|
||||||
|
|
||||||
|
if not os.path.isdir(target):
|
||||||
|
print('Invalid path. Try again.')
|
||||||
|
|
||||||
|
for entry in os.scandir(target):
|
||||||
|
# Put file extension to one side for safekeeping
|
||||||
|
split = entry.name.split('.')
|
||||||
|
extension = split[1]
|
||||||
|
name = split[0].replace(',', '').split('#')[0] # Discard all commas, and unique id doodad
|
||||||
|
head, sep, tail = name.partition(' ') # Discard leading date
|
||||||
|
split2 = tail.split()
|
||||||
|
date = dparser.parse(split2[-1], fuzzy=True) # Parse the date
|
||||||
|
folder_path = split2[0] + split2[1] # TODO Fragile
|
||||||
|
title = re.search(r'\d+-\d+\s[\d\w\s]*', tail)
|
||||||
|
if re.match:
|
||||||
|
title = title.group(0).strip().replace(' ', '_')
|
||||||
|
# Add date back
|
||||||
|
if date is not None:
|
||||||
|
title += "_" + date.strftime('%Y-%m-%d')
|
||||||
|
# Rename file
|
||||||
|
source = entry.path
|
||||||
|
actual_folder_path = '{}/{}'.format(target, folder_path)
|
||||||
|
dest = "{}/{}.{}".format(actual_folder_path, title, extension)
|
||||||
|
print ("Source: " + source)
|
||||||
|
print ("Dest: " + dest)
|
||||||
|
if not os.path.isdir(actual_folder_path):
|
||||||
|
os.mkdir(actual_folder_path)
|
||||||
|
os.rename(source, dest)
|
||||||
Reference in New Issue
Block a user