├── .env.example ├── .github ├── FUNDING.yml ├── instructions │ └── project-details.instructions.md └── workflows │ ├── publish_dev.yml │ ├── publish_experimental.yml │ └── publish_master.yml ├── .gitignore ├── Dockerfile ├── README.md ├── docker-compose.yml ├── docker ├── check-hwaccel.sh ├── entrypoint.sh └── verify-hwaccel.sh ├── docs ├── ARCHITECTURE.md ├── AUTHENTICATION.md ├── EVENT_SYSTEM.md ├── FAILOVER_ARCHITECTURE.md ├── FAILOVER_QUICK_REF.md ├── FAILOVER_UPDATES.md ├── HARDWARE_ACCELERATION.md ├── METADATA.md ├── PROFILE_VARIABLES.md ├── REDIS_POOLING.md ├── STRICT_LIVE_TS_MODE.md └── TESTING.md ├── main.py ├── prometheus.yml ├── pytest.ini ├── requirements.txt ├── src ├── __init__.py ├── api.py ├── config.py ├── events.py ├── hwaccel.py ├── models.py ├── pooled_stream_manager.py ├── redis_config.py ├── redis_manager.py ├── stream_manager.py └── transcoding.py ├── static ├── favicon.ico ├── favicon.png ├── favicon.svg ├── logo.png └── logo.svg ├── tests ├── __init__.py ├── integration │ ├── __init__.py │ └── test_integration.py ├── test_api.py ├── test_auth.py ├── test_client_ip.py ├── test_event_system.py ├── test_failover.py ├── test_hls_cleanup.py ├── test_hls_gc.py ├── test_metadata.py ├── test_patterns_examples.py ├── test_redis_pooling.py ├── test_stream_manager.py ├── test_transcode_e2e.py ├── test_transcode_segment_e2e.py ├── test_transcoding_hls.py └── test_working_examples.py └── tools ├── README.md ├── auth_example.py ├── demo_events.py ├── hls.py ├── hls_debug.py ├── hwaccel_example.py ├── m3u_client.py ├── performance_test.py └── run_tests.py /.env.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/.env.example -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/.github/FUNDING.yml -------------------------------------------------------------------------------- /.github/instructions/project-details.instructions.md: -------------------------------------------------------------------------------- 1 | --- 2 | applyTo: '**' 3 | --- 4 | -------------------------------------------------------------------------------- /.github/workflows/publish_dev.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/.github/workflows/publish_dev.yml -------------------------------------------------------------------------------- /.github/workflows/publish_experimental.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/.github/workflows/publish_experimental.yml -------------------------------------------------------------------------------- /.github/workflows/publish_master.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/.github/workflows/publish_master.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/.gitignore -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/Dockerfile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/README.md -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docker-compose.yml -------------------------------------------------------------------------------- /docker/check-hwaccel.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docker/check-hwaccel.sh -------------------------------------------------------------------------------- /docker/entrypoint.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docker/entrypoint.sh -------------------------------------------------------------------------------- /docker/verify-hwaccel.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docker/verify-hwaccel.sh -------------------------------------------------------------------------------- /docs/ARCHITECTURE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docs/ARCHITECTURE.md -------------------------------------------------------------------------------- /docs/AUTHENTICATION.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docs/AUTHENTICATION.md -------------------------------------------------------------------------------- /docs/EVENT_SYSTEM.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docs/EVENT_SYSTEM.md -------------------------------------------------------------------------------- /docs/FAILOVER_ARCHITECTURE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docs/FAILOVER_ARCHITECTURE.md -------------------------------------------------------------------------------- /docs/FAILOVER_QUICK_REF.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docs/FAILOVER_QUICK_REF.md -------------------------------------------------------------------------------- /docs/FAILOVER_UPDATES.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docs/FAILOVER_UPDATES.md -------------------------------------------------------------------------------- /docs/HARDWARE_ACCELERATION.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docs/HARDWARE_ACCELERATION.md -------------------------------------------------------------------------------- /docs/METADATA.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docs/METADATA.md -------------------------------------------------------------------------------- /docs/PROFILE_VARIABLES.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docs/PROFILE_VARIABLES.md -------------------------------------------------------------------------------- /docs/REDIS_POOLING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docs/REDIS_POOLING.md -------------------------------------------------------------------------------- /docs/STRICT_LIVE_TS_MODE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docs/STRICT_LIVE_TS_MODE.md -------------------------------------------------------------------------------- /docs/TESTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/docs/TESTING.md -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/main.py -------------------------------------------------------------------------------- /prometheus.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/prometheus.yml -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/pytest.ini -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/requirements.txt -------------------------------------------------------------------------------- /src/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/src/__init__.py -------------------------------------------------------------------------------- /src/api.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/src/api.py -------------------------------------------------------------------------------- /src/config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/src/config.py -------------------------------------------------------------------------------- /src/events.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/src/events.py -------------------------------------------------------------------------------- /src/hwaccel.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/src/hwaccel.py -------------------------------------------------------------------------------- /src/models.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/src/models.py -------------------------------------------------------------------------------- /src/pooled_stream_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/src/pooled_stream_manager.py -------------------------------------------------------------------------------- /src/redis_config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/src/redis_config.py -------------------------------------------------------------------------------- /src/redis_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/src/redis_manager.py -------------------------------------------------------------------------------- /src/stream_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/src/stream_manager.py -------------------------------------------------------------------------------- /src/transcoding.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/src/transcoding.py -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/static/favicon.ico -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/static/favicon.png -------------------------------------------------------------------------------- /static/favicon.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/static/favicon.svg -------------------------------------------------------------------------------- /static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/static/logo.png -------------------------------------------------------------------------------- /static/logo.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/static/logo.svg -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | # Tests package 2 | -------------------------------------------------------------------------------- /tests/integration/__init__.py: -------------------------------------------------------------------------------- 1 | # Integration tests package 2 | -------------------------------------------------------------------------------- /tests/integration/test_integration.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/integration/test_integration.py -------------------------------------------------------------------------------- /tests/test_api.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_api.py -------------------------------------------------------------------------------- /tests/test_auth.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_auth.py -------------------------------------------------------------------------------- /tests/test_client_ip.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_client_ip.py -------------------------------------------------------------------------------- /tests/test_event_system.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_event_system.py -------------------------------------------------------------------------------- /tests/test_failover.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_failover.py -------------------------------------------------------------------------------- /tests/test_hls_cleanup.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_hls_cleanup.py -------------------------------------------------------------------------------- /tests/test_hls_gc.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_hls_gc.py -------------------------------------------------------------------------------- /tests/test_metadata.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_metadata.py -------------------------------------------------------------------------------- /tests/test_patterns_examples.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_patterns_examples.py -------------------------------------------------------------------------------- /tests/test_redis_pooling.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_redis_pooling.py -------------------------------------------------------------------------------- /tests/test_stream_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_stream_manager.py -------------------------------------------------------------------------------- /tests/test_transcode_e2e.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_transcode_e2e.py -------------------------------------------------------------------------------- /tests/test_transcode_segment_e2e.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_transcode_segment_e2e.py -------------------------------------------------------------------------------- /tests/test_transcoding_hls.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_transcoding_hls.py -------------------------------------------------------------------------------- /tests/test_working_examples.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tests/test_working_examples.py -------------------------------------------------------------------------------- /tools/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tools/README.md -------------------------------------------------------------------------------- /tools/auth_example.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tools/auth_example.py -------------------------------------------------------------------------------- /tools/demo_events.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tools/demo_events.py -------------------------------------------------------------------------------- /tools/hls.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tools/hls.py -------------------------------------------------------------------------------- /tools/hls_debug.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tools/hls_debug.py -------------------------------------------------------------------------------- /tools/hwaccel_example.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tools/hwaccel_example.py -------------------------------------------------------------------------------- /tools/m3u_client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tools/m3u_client.py -------------------------------------------------------------------------------- /tools/performance_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tools/performance_test.py -------------------------------------------------------------------------------- /tools/run_tests.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sparkison/m3u-proxy/HEAD/tools/run_tests.py --------------------------------------------------------------------------------