Enhance HLS proxy functionality and improve caching mechanism
- Updated AGENTS.md to clarify dlp.py module usage and segment handling. - Modified README.md to include ALLOW_LOCAL configuration for testing. - Refactored app.py to streamline HLS proxy logic and improve error handling. - Enhanced dlp.py to optimize caching and segment retrieval processes. - Updated player.html to ensure proper JSON formatting for proxy URLs. - Improved test_integration.py to validate HLS segment proxying and added test for Pornhub HLS extraction. - Adjusted test_proxy.py to reflect changes in caching functions and data structure.
This commit is contained in:
@@ -56,27 +56,27 @@ def hls_proxy():
|
||||
if not url_param:
|
||||
abort(400, description="Missing url parameter")
|
||||
|
||||
from urllib.parse import urlparse, unquote
|
||||
from urllib.parse import unquote
|
||||
|
||||
path = request.args.get("path", "")
|
||||
|
||||
if ".m3u8" in url_param and not path:
|
||||
video_url = url_param
|
||||
elif ".m3u8" in url_param and path:
|
||||
video_url = url_param
|
||||
else:
|
||||
video_url = url_param
|
||||
|
||||
video_url = unquote(video_url)
|
||||
video_url = unquote(url_param)
|
||||
|
||||
if not is_valid_url(video_url):
|
||||
abort(400, description="Invalid URL")
|
||||
|
||||
if path.endswith(".m3u8") or not path:
|
||||
# Main playlist request - get from yt-dlp and rewrite URLs
|
||||
if path == "index.m3u8" or path == "":
|
||||
playlist = dlp.get_hls_playlist(video_url)
|
||||
return Response(playlist, mimetype="application/vnd.apple.mpegurl")
|
||||
|
||||
# Sub-playlist or segment request - path is the absolute URL
|
||||
segment_data = dlp.get_hls_segment(video_url, path)
|
||||
|
||||
if segment_data is None:
|
||||
abort(500, description="Failed to fetch segment")
|
||||
|
||||
if path.endswith(".m3u8"):
|
||||
return Response(segment_data, mimetype="application/vnd.apple.mpegurl")
|
||||
return Response(segment_data, mimetype="video/mp2t")
|
||||
|
||||
except HTTPException:
|
||||
|
||||
Reference in New Issue
Block a user