feat: support disable progress bar
This commit is contained in:
parent
dba4c50437
commit
4761e59871
@ -21,5 +21,5 @@ ENV BLREC_DEFAULT_OUT_DIR=/rec
|
||||
ENV TZ="Asia/Shanghai"
|
||||
|
||||
EXPOSE 2233
|
||||
ENTRYPOINT ["blrec", "--host", "0.0.0.0"]
|
||||
ENTRYPOINT ["blrec", "--host", "0.0.0.0", "--no-progress"]
|
||||
CMD []
|
||||
|
@ -23,5 +23,5 @@ ENV BLREC_DEFAULT_OUT_DIR=/rec
|
||||
ENV TZ="Asia/Shanghai"
|
||||
|
||||
EXPOSE 2233
|
||||
ENTRYPOINT ["blrec", "--host", "0.0.0.0"]
|
||||
ENTRYPOINT ["blrec", "--host", "0.0.0.0", "--no-progress"]
|
||||
CMD []
|
||||
|
@ -1,5 +1,6 @@
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
from copy import deepcopy
|
||||
from typing import Optional
|
||||
|
||||
@ -44,6 +45,7 @@ def cli_main(
|
||||
'--log-dir',
|
||||
help='path of directory to store log files (overwrite setting)',
|
||||
),
|
||||
progress: bool = typer.Option(True, help='display progress'),
|
||||
host: str = typer.Option('localhost', help='webapp host bind'),
|
||||
port: int = typer.Option(2233, help='webapp port bind'),
|
||||
open: bool = typer.Option(False, help='open webapp in default browser'),
|
||||
@ -62,6 +64,13 @@ def cli_main(
|
||||
if log_dir is not None:
|
||||
os.environ['BLREC_LOG_DIR'] = log_dir
|
||||
|
||||
if not sys.stderr.isatty():
|
||||
progress = False
|
||||
if progress:
|
||||
os.environ['BLREC_PROGRESS'] = '1'
|
||||
else:
|
||||
os.environ['BLREC_PROGRESS'] = ''
|
||||
|
||||
if root_path:
|
||||
if not root_path.startswith('/'):
|
||||
root_path = '/' + root_path
|
||||
@ -71,9 +80,11 @@ def cli_main(
|
||||
if open:
|
||||
typer.launch(f'http://localhost:{port}')
|
||||
|
||||
logging_config = deepcopy(LOGGING_CONFIG)
|
||||
logging_config['handlers']['default']['stream'] = TqdmOutputStream
|
||||
logging_config['handlers']['access']['stream'] = TqdmOutputStream
|
||||
if not progress:
|
||||
logging_config = LOGGING_CONFIG
|
||||
else:
|
||||
logging_config = deepcopy(LOGGING_CONFIG)
|
||||
logging_config['handlers']['default']['stream'] = TqdmOutputStream()
|
||||
|
||||
uvicorn.run(
|
||||
'blrec.web:app',
|
||||
|
@ -1,6 +1,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import os
|
||||
from typing import Optional
|
||||
|
||||
from reactivex import Observable, abc
|
||||
@ -13,6 +14,8 @@ from blrec.flv.operators.typing import FLVStream, FLVStreamItem
|
||||
__all__ = ('ProgressBar',)
|
||||
|
||||
|
||||
DISPLAY_PROGRESS = bool(os.environ.get('BLREC_PROGRESS'))
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@ -41,6 +44,7 @@ class ProgressBar:
|
||||
unit_scale=True,
|
||||
unit_divisor=1024,
|
||||
postfix=self._make_pbar_postfix(),
|
||||
disable=not DISPLAY_PROGRESS,
|
||||
)
|
||||
|
||||
def on_next(item: FLVStreamItem) -> None:
|
||||
|
@ -23,7 +23,7 @@ class AnalysingProgress:
|
||||
|
||||
|
||||
def analyse_metadata(
|
||||
path: str, *, show_progress: bool = False
|
||||
path: str, *, display_progress: bool = False
|
||||
) -> Observable[AnalysingProgress]:
|
||||
filesize = os.path.getsize(path)
|
||||
filename = os.path.basename(path)
|
||||
@ -47,7 +47,7 @@ def analyse_metadata(
|
||||
desc='Analysing',
|
||||
postfix=filename,
|
||||
total=filesize,
|
||||
disable=not show_progress,
|
||||
disable=not display_progress,
|
||||
),
|
||||
ops.map(lambda i: len(i)), # type: ignore
|
||||
ops.scan(lambda acc, x: acc + x, 0), # type: ignore
|
||||
|
@ -26,7 +26,7 @@ class InjectingProgress:
|
||||
|
||||
|
||||
def inject_metadata(
|
||||
path: str, metadata: Dict[str, Any], *, show_progress: bool = False
|
||||
path: str, metadata: Dict[str, Any], *, display_progress: bool = False
|
||||
) -> Observable[InjectingProgress]:
|
||||
filesize = os.path.getsize(path)
|
||||
|
||||
@ -51,7 +51,7 @@ def inject_metadata(
|
||||
desc='Injecting',
|
||||
postfix=filename,
|
||||
total=filesize,
|
||||
disable=not show_progress,
|
||||
disable=not display_progress,
|
||||
),
|
||||
ops.map(lambda i: len(i)), # type: ignore
|
||||
ops.scan(lambda acc, x: acc + x, 0), # type: ignore
|
||||
|
@ -16,6 +16,9 @@ from .typing import LOG_LEVEL
|
||||
__all__ = 'configure_logger', 'ConsoleHandler', 'TqdmOutputStream'
|
||||
|
||||
|
||||
DISPLAY_PROGRESS = bool(os.environ.get('BLREC_PROGRESS'))
|
||||
|
||||
|
||||
class TqdmOutputStream:
|
||||
def write(self, string: str = '') -> None:
|
||||
tqdm.write(string, end='')
|
||||
@ -95,7 +98,10 @@ def configure_logger(
|
||||
)
|
||||
|
||||
# logging to console
|
||||
console_handler = ConsoleHandler(TqdmOutputStream())
|
||||
if DISPLAY_PROGRESS:
|
||||
console_handler = ConsoleHandler(TqdmOutputStream())
|
||||
else:
|
||||
console_handler = ConsoleHandler()
|
||||
console_handler.setLevel(logging.getLevelName(console_log_level))
|
||||
console_handler.setFormatter(formatter)
|
||||
logger.addHandler(console_handler)
|
||||
|
@ -33,6 +33,8 @@ __all__ = (
|
||||
)
|
||||
|
||||
|
||||
DISPLAY_PROGRESS = bool(os.environ.get('BLREC_PROGRESS'))
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@ -259,7 +261,9 @@ class Postprocessor(
|
||||
future: asyncio.Future[None] = asyncio.Future()
|
||||
self._postprocessing_path = path
|
||||
|
||||
subscription = analyse_metadata(path, show_progress=True).subscribe(
|
||||
subscription = analyse_metadata(
|
||||
path, display_progress=DISPLAY_PROGRESS
|
||||
).subscribe(
|
||||
on_error=lambda e: future.set_exception(e),
|
||||
on_completed=lambda: future.set_result(None),
|
||||
scheduler=self._scheduler,
|
||||
@ -275,7 +279,9 @@ class Postprocessor(
|
||||
def on_next(value: InjectingProgress) -> None:
|
||||
self._postprocessing_progress = value
|
||||
|
||||
subscription = inject_metadata(path, metadata, show_progress=True).subscribe(
|
||||
subscription = inject_metadata(
|
||||
path, metadata, display_progress=DISPLAY_PROGRESS
|
||||
).subscribe(
|
||||
on_next=on_next,
|
||||
on_error=lambda e: future.set_exception(e),
|
||||
on_completed=lambda: future.set_result(None),
|
||||
@ -301,7 +307,7 @@ class Postprocessor(
|
||||
in_path,
|
||||
out_path,
|
||||
metadata_path,
|
||||
show_progress=True,
|
||||
display_progress=DISPLAY_PROGRESS,
|
||||
remove_filler_data=True,
|
||||
).subscribe(
|
||||
on_next=on_next,
|
||||
|
@ -58,7 +58,7 @@ def remux_video(
|
||||
out_path: str,
|
||||
metadata_path: Optional[str] = None,
|
||||
*,
|
||||
show_progress: bool = False,
|
||||
display_progress: bool = False,
|
||||
remove_filler_data: bool = False,
|
||||
) -> Observable[Union[RemuxingProgress, RemuxingResult]]:
|
||||
SIZE_PATTERN: Final = re.compile(r'size=\s*(?P<number>\d+)(?P<unit>[a-zA-Z]?B)')
|
||||
@ -125,7 +125,7 @@ def remux_video(
|
||||
unit_scale=True,
|
||||
unit_divisor=1024,
|
||||
postfix=postfix,
|
||||
disable=not show_progress,
|
||||
disable=not display_progress,
|
||||
) as pbar:
|
||||
cmd = f'ffmpeg -i "{in_path}"'
|
||||
if metadata_path is not None:
|
||||
|
Loading…
Reference in New Issue
Block a user