| 135 | |
| 136 | |
| 137 | def parse_args() -> argparse.Namespace: |
| 138 | p = argparse.ArgumentParser(description="Console YouTube player (HD via reverse-engineered SABR)") |
| 139 | p.add_argument("url", help="YouTube watch URL") |
| 140 | p.add_argument("--force-bootstrap", action="store_true", |
| 141 | help="Re-run Chromium bootstrap even if cached") |
| 142 | p.add_argument("--force-download", action="store_true", |
| 143 | help="Re-run SABR download even if buffers cached") |
| 144 | p.add_argument("--no-play", action="store_true", |
| 145 | help="Stop after muxing; don't launch mpv") |
| 146 | return p.parse_args() |
| 147 | |
| 148 | |
| 149 | def main() -> int: |