示例#1
0
def run_ffmpeg(progress_filename, uploaded_file_path, params, output_name):
    # If running locally, change this to the correct path.
    ffmpeg_path = '/home/h/bin/ffmpeg'

    progress_file_path = os.path.join('ffmpeg-progress', progress_filename)
    log.info(f'Conversion progress will be saved to: {progress_file_path}')
    # Split params into a list as I want to use subprocess.run() with an array of arguments.
    params = params.split(' ')
    params.append(output_name)
    log.info(params)
    log.info(f'Converting {uploaded_file_path}...')
    start_time = time()
    try:
        subprocess.run([
            ffmpeg_path, '-hide_banner', '-progress', progress_file_path, '-y',
            '-i', uploaded_file_path, '-metadata',
            'comment=Transcoded using free-av-tools.com', '-metadata',
            'encoded_by=free-av-tools.com', '-id3v2_version', '3',
            '-write_id3v1', 'true'
        ] + params)
        end_time = time()
        time_taken = round((end_time - start_time), 2)
        log.info(f'File converted. Conversion took {time_taken} seconds.')
    except Exception as error:
        log.error(f'Unable to convert file: \n{error}')
示例#2
0
def return_world_record():
    current_datetime = (datetime.now() +
                        timedelta(hours=1)).strftime('%d-%m-%y at %H:%M:%S')
    user = request.environ.get("HTTP_X_REAL_IP").split(',')[0]
    user_agent = request.headers.get('User-Agent')
    score = request.form['score']
    times_missed = request.form['times_missed']
    canvas_width = request.form['canvas_width']
    canvas_height = request.form['canvas_height']
    try:
        int(score)
        int(times_missed)
        int(canvas_width)
        int(canvas_width)
    except ValueError:
        log.error("GAME 1: The user changed something to a non-int.")
    else:
        with open("Game Scores/HighScores.txt", "a") as f:
            f.write(
                f'{score} | {times_missed} | {user} | {user_agent} | {canvas_width}'
                f'x{canvas_height} | {current_datetime}\n')
    finally:
        just_scores = []
        with open('Game Scores/HighScores.txt', 'r') as f:
            lines = f.readlines()
            for line in lines:
                just_scores.append(line.split('|')[0].strip())

        valid_scores = [x for x in just_scores if int(x) < 100]
        world_record = max(valid_scores, key=lambda x: int(x))
        return world_record
def trim_file():

    if request.form["request_type"] == "upload_complete":

        chosen_file = request.files["chosen_file"]
        # Make the filename safe
        filename_secure = secure_filename(chosen_file.filename)
        # Save the uploaded file to the uploads folder.
        chosen_file.save(os.path.join("uploads", filename_secure))
        return ''

    if request.form["request_type"] == "trim":

        filename = request.form["filename"]
        log_this(f'wants to trim: {filename}')
        uploaded_file_path = os.path.join("uploads", secure_filename(filename))
        start_time = request.form["start_time"]
        log.info(f'START TIME: {start_time}')
        end_time = request.form["end_time"]
        log.info(f'END TIME: {end_time}')
        ext = "." + filename.split(".")[-1]
        just_name = filename.split(".")[0]
        output_name = just_name + " [trimmed]" + ext
        output_file_path = os.path.join('trims', output_name)

        try:
            subprocess.run([
                'ffmpeg', '-y', '-i', uploaded_file_path, '-ss', start_time,
                '-to', end_time, '-map', '0', '-c', 'copy', output_file_path
            ],
                           shell=False)
        except Exception as error:
            log.error(f'Unable to trim file: \n{error}')

        return output_file_path
示例#4
0
def return_world_record():
    current_datetime = datetime.now().strftime('%d-%m-%y at %H:%M:%S')
    user = request.environ.get("HTTP_X_REAL_IP").split(',')[0]
    user_agent = request.headers.get('User-Agent')
    score = request.form['score']
    times_missed = request.form['times_missed']
    canvas_width = request.form['canvas_width']
    canvas_height = request.form['canvas_height']
    try:
        int(score)
        int(times_missed)
        int(canvas_width)
        int(canvas_height)
    except ValueError:
        log.error("[Game 1] The user changed something to a non-int.")
    else:
        os.makedirs('GameScores', exist_ok=True)
        with open("GameScores/HighScores.txt", "a") as f:
            f.write(
                f'{score} | {times_missed} | {user} | {user_agent} | {canvas_width}'
                f'x{canvas_height} | {current_datetime}\n')
    finally:
        just_scores = []
        with open('GameScores/HighScores.txt', 'r') as f:
            lines = f.readlines()
            for line in lines:
                just_scores.append(line.split('|')[0].strip())
        return ''
示例#5
0
def download_file(filename):
    log.info(f'https://free-av-tools.com/trims/{filename}')
    mimetype_value = 'audio/mp4' if os.path.splitext(filename)[1] == ".m4a" else ''
    try:
        return send_from_directory('trims', filename, mimetype=mimetype_value, as_attachment=True)
    except Exception as error:
        log.error(f'Unable to send file. Error: \n{error}')
def send_file(filename):
    time_now = datetime.now().strftime('%H:%M:%S')
    log.info(f'[{time_now}] https://free-av-tools.com/downloads/{filename}')
    mimetype_value = 'audio/mp4' if os.path.splitext(filename)[1] == ".m4a" else ''
    try:
        return send_from_directory(download_dir, filename, mimetype=mimetype_value, as_attachment=True)
    except Exception as error:
        log.error(f'Unable to send file. Error: \n{error}')
示例#7
0
 def sum(self, var):
     i = self.axes()[var]
     info = self.infoCopy()
     if var not in self.variables():
         log.error('Summing out variable %s that hasn\'t been multiplied in!', var)
     else:
         info[-1]['variables'] = info[-1]['variables'].replace(var, '') 
     info.pop(i)
     return Factor(super(Factor, self).sum(axis=(i,)), info=info)
示例#8
0
 def sum(self, var):
     i = self.axes()[var]
     info = self.infoCopy()
     if var not in self.variables():
         log.error(
             'Summing out variable %s that hasn\'t been multiplied in!',
             var)
     else:
         info[-1]['variables'] = info[-1]['variables'].replace(var, '')
     info.pop(i)
     return Factor(super(Factor, self).sum(axis=(i, )), info=info)
示例#9
0
def send_file(filename):
    log.info(f'https://freeaudioconverter.net/conversions/{filename}')
    mimetype_value = 'audio/mp4' if os.path.splitext(
        filename)[1] == ".m4a" else ''
    try:
        return send_from_directory('conversions',
                                   filename,
                                   mimetype=mimetype_value,
                                   as_attachment=True)
    except Exception as error:
        log.error(f'Unable to send file. Error: \n{error}')
示例#10
0
def run_youtube_dl(video_link, options):
    with YoutubeDL(options) as ydl:
        info = ydl.extract_info(video_link, download=False)

    session['filename_stem'] = Path(ydl.prepare_filename(info)).stem
    
    try:
        ydl.download([video_link])
    except Exception as error:
        log.error(f'Error downloading {session["filename_stem"]}:\n{str(error)}')
        session['youtube_dl_error'] = str(error)
    else:
        log_downloads_per_day()
示例#11
0
def run_youtube_dl(download_type, args):
    download_start_time = time()
    try:
        # Using subprocess.run() this way allows the stdout to be written to a file.
        with open(session['progress_file_path'], 'w') as f:
            subprocess.run(args, stdout=f)
    except Exception as error:
        log.error(f'Unable to download video: \n{error}')

    download_complete_time = time()
    log.info(
        f'{download_type} was chosen. Download took: {round((download_complete_time - download_start_time), 1)}s'
    )
示例#12
0
def run_youtube_dl(video_link, options):
    is_downloading = True
    download_start_time = time()
    try:
        with YoutubeDL(options) as ydl:
            ydl.download(video_link)
    except Exception as error:
        log.error(f'Error downloading file:\n{error}')
        session['youtube_dl_error'] = str(error)
    else:
        download_complete_time = time()
        log.info(f'Download took {round((download_complete_time - download_start_time), 1)}s')
        log_downloads_per_day()
    finally:
        is_downloading = False
示例#13
0
def send_file(filename):
    log.info(
        f'[{datetime.now().strftime("[%H:%M:%S]")}] https://free-av-tools.com/downloads/{filename}'
    )
    mimetype_value = 'audio/mp4' if os.path.splitext(
        filename)[1] == ".m4a" else ''
    try:
        return send_from_directory(download_dir,
                                   filename,
                                   mimetype=mimetype_value,
                                   as_attachment=True)
    except Exception as error:
        log.error(f'Unable to send downloads/{filename}. Error: \n{error}')
    finally:
        os.remove(f'downloads/{session["new_filename"]}')
示例#14
0
def run_youtube_dl(video_link, options):
    try:
        with YoutubeDL(options) as ydl:
            info = ydl.extract_info(video_link, download=False)
        global filename
        # Remove the file extension and the 'downloads/' at the start.
        filename = os.path.splitext(ydl.prepare_filename(info))[0][10:]
        download_start_time = time()
        ydl.download([video_link])
    except Exception as error:
        log.error(f'Error downloading file:\n{error}')
        session['youtube_dl_error'] = str(error)
    else:
        download_complete_time = time()
        log.info(
            f'Download took {round((download_complete_time - download_start_time), 1)}s'
        )
        log_downloads_per_day()
示例#15
0
def save_game2_stats():
    current_datetime = datetime.now().strftime('%d-%m-%y at %H:%M:%S')
    user = request.environ.get("HTTP_X_REAL_IP").split(',')[0]
    user_agent = request.headers.get('User-Agent')
    reaction_time = request.form['reaction_time']
    try:
        int(reaction_time)
    except ValueError:
        log.error("[Game 2] The user changed reaction_time to a non-int.")
    else:
        os.makedirs('GameScores', exist_ok=True)
        with open("GameScores/ReactionTimes.txt", "a") as f:
            f.write(f'{reaction_time} ms | {user} | {user_agent} | {current_datetime}\n')
    finally:
        reaction_times = []
        with open('GameScores/ReactionTimes.txt', 'r') as f:
            lines = f.readlines()
            for line in lines:
                reaction_times.append(line.split('|')[0][:-3].strip())
        return ''
示例#16
0
def save_game2_stats():
    current_datetime = (datetime.now() + timedelta(hours=1)).strftime('%d-%m-%y at %H:%M:%S')
    user = request.environ.get("HTTP_X_REAL_IP").split(',')[0]
    user_agent = request.headers.get('User-Agent')
    reaction_time = request.form['reaction_time']
    try:
        int(reaction_time)
    except ValueError:
        log.error("GAME 2: The user changed reaction_time to a non-int.")
    else:
        with open("Game Scores/ReactionTimes.txt", "a") as f:
            f.write(f'{reaction_time} ms | {user} | {user_agent} | {current_datetime}\n')
    finally:
        reaction_times = []
        with open('Game Scores/ReactionTimes.txt', 'r') as f:
            lines = f.readlines()
            for line in lines:
                reaction_times.append(line.split('|')[0][:-3].strip())

        # reaction_record = min(reaction_times, key=lambda x: int(x))
        return ''
示例#17
0
def trim_file():

    if request.form["request_type"] == "upload_complete":

        uploaded_file = request.files["chosen_file"]
        # Make the filename safe
        filename_secure = secure_filename(uploaded_file.filename)
        # Save the uploaded file to the trims folder.
        uploaded_file.save(os.path.join('uploads', filename_secure))

        # Empty the trims folder to ensure that there will be enough storage space for the trimmed file.
        if os.path.exists('trims'):
            for file in os.listdir('trims'):
                os.remove(os.path.join('trims', file))
                log.info(f'Deleted trims/{file}')
        return ''

    if request.form["request_type"] == "trim":

        filename = request.form["filename"]
        log_this(f'wants to trim: {filename}')
        uploaded_file_path = os.path.join("uploads", secure_filename(filename))
        start_time = request.form["start_time"]
        log.info(f'Start: {start_time}')
        end_time = request.form["end_time"]
        log.info(f'End: {end_time}')
        just_name = os.path.splitext(filename)[0]
        extension = os.path.splitext(filename)[1]
        output_name = f'{just_name} [trimmed]{extension}'
        output_file_path = os.path.join('trims', output_name)

        try:
            subprocess.run([
                'ffmpeg', '-y', '-i', uploaded_file_path, '-ss', start_time,
                '-to', end_time, '-map', '0', '-c', 'copy', output_file_path
            ])
        except Exception as error:
            log.error(f'Unable to trim file: \n{error}')

        return output_file_path