Merge branch 'Lovi-0:main' into main

This commit is contained in:
Francesco Grazioso 2024-06-06 16:55:13 +02:00 committed by GitHub
commit 5c458df894
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
41 changed files with 1799 additions and 937 deletions

View File

@ -1,15 +1,12 @@
# 26.05.24
import re
import os
import sys
import time
import logging
import subprocess
# External libraries
from Src.Lib.Request import requests
import requests
from bs4 import BeautifulSoup

View File

@ -6,7 +6,7 @@ import logging
# External libraries
from Src.Lib.Request import requests
import requests
from bs4 import BeautifulSoup
from unidecode import unidecode

View File

@ -5,8 +5,8 @@ import threading
import logging
# Internal libraries
from Src.Lib.Request import requests
# External libraries
import requests
# Internal utilities

View File

@ -1,16 +1,18 @@
# 01.03.24
import sys
import logging
from urllib.parse import urljoin, urlparse, parse_qs, urlencode, urlunparse
# External libraries
from Src.Lib.Request import requests
import requests
from bs4 import BeautifulSoup
# Internal utilities
from Src.Util.headers import get_headers
from Src.Util.console import console
from Src.Util._jsonConfig import config_manager
@ -204,4 +206,4 @@ class VideoSource:
new_url = m._replace(query=new_query) # Replace the old query string with the new one
final_url = urlunparse(new_url) # Construct the final URL from the modified parts
return final_url
return final_url

View File

@ -2,4 +2,4 @@
ANIME_FOLDER = "animeunity"
SERIES_FOLDER= "Serie"
MOVIE_FOLDER = "Movie"
MOVIE_FOLDER = "Movie"

View File

@ -5,7 +5,7 @@ import logging
# External libraries
from Src.Lib.Request import requests
import requests
from bs4 import BeautifulSoup
from unidecode import unidecode

View File

@ -5,8 +5,11 @@ import threading
import logging
# External library
import requests
# Internal utilities
from Src.Lib.Request import requests
from Src.Lib.Google import search as google_search

View File

@ -6,7 +6,7 @@ from urllib.parse import urljoin, urlparse, parse_qs, urlencode, urlunparse
# External libraries
from Src.Lib.Request import requests
import requests
from bs4 import BeautifulSoup
@ -202,7 +202,6 @@ class VideoSource:
logging.error(f"Error getting content: {e}")
raise
def get_playlist(self) -> str:
"""
Get playlist.
@ -239,5 +238,5 @@ class VideoSource:
new_query = urlencode(final_params) # Encode final_params into a query string
new_url = m._replace(query=new_query) # Replace the old query string with the new one
final_url = urlunparse(new_url) # Construct the final URL from the modified parts
return final_url
return final_url

View File

@ -4,4 +4,4 @@ STREAMING_FOLDER = "streamingcommunity"
MOVIE_FOLDER = "Movie"
SERIES_FOLDER = "Serie"
SERVER_IP = ['162.19.231.20', '162.19.255.224', '162.19.254.232', '162.19.254.230', '51.195.107.230', '162.19.255.36', '162.19.228.128', '51.195.107.7', '162.19.253.242', '141.95.0.248', '57.129.4.77', '57.129.7.85']
STATIC_IP_SERVER = ['57.129.7.85', '57.129.7.188', '57.129.7.174', '57.129.4.77', '57.129.16.196', '57.129.16.156', '57.129.16.139', '57.129.16.135', '57.129.13.175', '57.129.13.157', '51.38.112.237', '51.195.107.7', '51.195.107.230', '162.19.255.78', '162.19.255.36', '162.19.255.224', '162.19.255.223', '162.19.254.244', '162.19.254.232', '162.19.254.230', '162.19.253.242', '162.19.249.48', '162.19.245.142', '162.19.231.20', '162.19.229.177', '162.19.228.128', '162.19.228.127', '162.19.228.105', '141.95.1.32', '141.95.1.196', '141.95.1.102', '141.95.0.50', '141.95.0.248', '135.125.237.84', '135.125.233.236']

View File

@ -18,7 +18,7 @@ from .Core.Vix_player.player import VideoSource
# Config
ROOT_PATH = config_manager.get('DEFAULT', 'root_path')
from .costant import STREAMING_FOLDER, MOVIE_FOLDER, SERVER_IP
from .costant import STREAMING_FOLDER, MOVIE_FOLDER, STATIC_IP_SERVER
# Variable
@ -59,4 +59,4 @@ def download_film(id_film: str, title_name: str, domain: str):
Downloader(
m3u8_playlist = master_playlist,
output_filename = os.path.join(mp4_path, mp4_format)
).start(SERVER_IP)
).start(STATIC_IP_SERVER)

View File

@ -20,7 +20,7 @@ from .Core.Util import manage_selection, map_episode_title
# Config
ROOT_PATH = config_manager.get('DEFAULT', 'root_path')
from .costant import STREAMING_FOLDER, SERIES_FOLDER, SERVER_IP
from .costant import STREAMING_FOLDER, SERIES_FOLDER, STATIC_IP_SERVER
# Variable
@ -96,7 +96,7 @@ def donwload_video(tv_name: str, index_season_selected: int, index_episode_selec
Downloader(
m3u8_playlist = master_playlist,
output_filename = os.path.join(mp4_path, mp4_name)
).start(SERVER_IP)
).start(STATIC_IP_SERVER)
def donwload_episode(tv_name: str, index_season_selected: int, donwload_all: bool = False) -> None:

View File

@ -8,12 +8,12 @@ from typing import Tuple
# External libraries
import requests
from bs4 import BeautifulSoup
from unidecode import unidecode
# Internal utilities
from Src.Lib.Request import requests
from Src.Util.headers import get_headers
from Src.Util._jsonConfig import config_manager
from Src.Util.console import console

View File

@ -40,6 +40,10 @@ def capture_output(process: subprocess.Popen, description: str) -> None:
logging.info(f"FFMPEG line: {line}")
# Capture only error
if "rror" in str(line):
console.log(f"[red]FFMPEG: {str(line).strip()}")
# Check if termination is requested
if terminate_flag.is_set():
break

View File

@ -19,14 +19,18 @@ except: pass
from Src.Util._jsonConfig import config_manager
from Src.Util.os import check_file_existence, suppress_output
from Src.Util.console import console
from .util import has_audio_stream, need_to_force_to_ts, check_ffmpeg_input
from .util import has_audio_stream, need_to_force_to_ts, check_ffmpeg_input, check_duration_v_a
from .capture import capture_ffmpeg_real_time
from ..M3U8.parser import M3U8_Codec
# Config
DEBUG_MODE = config_manager.get_bool("DEFAULT", "debug")
DEBUG_FFMPEG = "debug" if DEBUG_MODE else "error"
USE_CODECS = config_manager.get_bool("M3U8_CONVERSION", "use_codec")
USE_CODEC = config_manager.get_bool("M3U8_CONVERSION", "use_codec")
USE_VCODEC = config_manager.get_bool("M3U8_CONVERSION", "use_vcodec")
USE_ACODEC = config_manager.get_bool("M3U8_CONVERSION", "use_acodec")
USE_BITRATE = config_manager.get_bool("M3U8_CONVERSION", "use_bitrate")
USE_GPU = config_manager.get_bool("M3U8_CONVERSION", "use_gpu")
FFMPEG_DEFAULT_PRESET = config_manager.get("M3U8_CONVERSION", "default_preset")
CHECK_OUTPUT_CONVERSION = config_manager.get_bool("M3U8_CONVERSION", "check_output_after_ffmpeg")
@ -263,7 +267,7 @@ def __transcode_with_subtitles(video: str, subtitles_list: List[Dict[str, str]],
# --> v 1.1 (new)
def join_video(video_path: str, out_path: str, vcodec: str = None, acodec: str = None, bitrate: str = None):
def join_video(video_path: str, out_path: str, codec: M3U8_Codec = None):
"""
Joins single ts video file to mp4
@ -281,12 +285,12 @@ def join_video(video_path: str, out_path: str, vcodec: str = None, acodec: str =
logging.error("Missing input video for ffmpeg conversion.")
sys.exit(0)
# Start command
ffmpeg_cmd = ['ffmpeg']
# Enabled the use of gpu
ffmpeg_cmd.extend(['-hwaccel', 'cuda', '-hwaccel_output_format', 'cuda'])
if USE_GPU:
ffmpeg_cmd.extend(['-hwaccel', 'cuda', '-hwaccel_output_format', 'cuda'])
# Add mpegts to force to detect input file as ts file
if need_to_force_to_ts(video_path):
@ -294,15 +298,30 @@ def join_video(video_path: str, out_path: str, vcodec: str = None, acodec: str =
ffmpeg_cmd.extend(['-f', 'mpegts'])
vcodec = "libx264"
# Insert input video path
ffmpeg_cmd.extend(['-i', video_path])
# Add output args
if USE_CODECS:
if vcodec: ffmpeg_cmd.extend(['-c:v', vcodec])
if acodec: ffmpeg_cmd.extend(['-c:a', acodec])
if bitrate: ffmpeg_cmd.extend(['-b:a', str(bitrate)])
if USE_CODEC:
if USE_VCODEC:
if codec.video_codec_name:
if not USE_GPU:
ffmpeg_cmd.extend(['-c:v', codec.video_codec_name])
else:
ffmpeg_cmd.extend(['-c:v', 'h264_nvenc'])
else:
console.log("[red]Cant find vcodec for 'join_audios'")
if USE_ACODEC:
if codec.audio_codec_name:
ffmpeg_cmd.extend(['-c:a', codec.audio_codec_name])
else:
console.log("[red]Cant find acodec for 'join_audios'")
if USE_BITRATE:
ffmpeg_cmd.extend(['-b:v', f'{codec.video_bitrate // 1000}k'])
ffmpeg_cmd.extend(['-b:a', f'{codec.audio_bitrate // 1000}k'])
else:
ffmpeg_cmd.extend(['-c', 'copy'])
@ -312,12 +331,10 @@ def join_video(video_path: str, out_path: str, vcodec: str = None, acodec: str =
else:
ffmpeg_cmd.extend(['-preset', 'fast'])
# Overwrite
ffmpeg_cmd += [out_path, "-y"]
logging.info(f"FFmpeg command: {ffmpeg_cmd}")
# Run join
if DEBUG_MODE:
subprocess.run(ffmpeg_cmd, check=True)
@ -333,8 +350,6 @@ def join_video(video_path: str, out_path: str, vcodec: str = None, acodec: str =
capture_ffmpeg_real_time(ffmpeg_cmd, "[cyan]Join video")
print()
# Check file output
if CHECK_OUTPUT_CONVERSION:
console.log("[red]Check output ffmpeg")
@ -347,7 +362,7 @@ def join_video(video_path: str, out_path: str, vcodec: str = None, acodec: str =
sys.exit(0)
def join_audios(video_path: str, audio_tracks: List[Dict[str, str]], out_path: str):
def join_audios(video_path: str, audio_tracks: List[Dict[str, str]], out_path: str, codec: M3U8_Codec = None):
"""
Joins audio tracks with a video file using FFmpeg.
@ -362,9 +377,17 @@ def join_audios(video_path: str, audio_tracks: List[Dict[str, str]], out_path: s
logging.error("Missing input video for ffmpeg conversion.")
sys.exit(0)
video_audio_same_duration = check_duration_v_a(video_path, audio_tracks[0].get('path'))
# Start command
ffmpeg_cmd = ['ffmpeg', '-i', video_path]
ffmpeg_cmd = ['ffmpeg']
# Enabled the use of gpu
if USE_GPU:
ffmpeg_cmd.extend(['-hwaccel', 'cuda', '-hwaccel_output_format', 'cuda'])
# Insert input video path
ffmpeg_cmd.extend(['-i', video_path])
# Add audio tracks as input
for i, audio_track in enumerate(audio_tracks):
@ -373,7 +396,6 @@ def join_audios(video_path: str, audio_tracks: List[Dict[str, str]], out_path: s
else:
logging.error(f"Skip audio join: {audio_track.get('path')} dont exist")
# Map the video and audio streams
ffmpeg_cmd.append('-map')
ffmpeg_cmd.append('0:v') # Map video stream from the first input (video_path)
@ -382,18 +404,45 @@ def join_audios(video_path: str, audio_tracks: List[Dict[str, str]], out_path: s
ffmpeg_cmd.append('-map')
ffmpeg_cmd.append(f'{i}:a') # Map audio streams from subsequent inputs
# Add output args
if USE_CODECS:
ffmpeg_cmd.extend(['-c:v', 'copy', '-c:a', 'copy'])
if USE_CODEC:
if USE_VCODEC:
if codec.video_codec_name:
if not USE_GPU:
ffmpeg_cmd.extend(['-c:v', codec.video_codec_name])
else:
ffmpeg_cmd.extend(['-c:v', 'h264_nvenc'])
else:
console.log("[red]Cant find vcodec for 'join_audios'")
if USE_ACODEC:
if codec.audio_codec_name:
ffmpeg_cmd.extend(['-c:a', codec.audio_codec_name])
else:
console.log("[red]Cant find acodec for 'join_audios'")
if USE_BITRATE:
ffmpeg_cmd.extend(['-b:v', f'{codec.video_bitrate // 1000}k'])
ffmpeg_cmd.extend(['-b:a', f'{codec.audio_bitrate // 1000}k'])
else:
ffmpeg_cmd.extend(['-c', 'copy'])
# Ultrafast preset always or fast for gpu
if not USE_GPU:
ffmpeg_cmd.extend(['-preset', FFMPEG_DEFAULT_PRESET])
else:
ffmpeg_cmd.extend(['-preset', 'fast'])
# Use shortest input path for video and audios
if not video_audio_same_duration:
console.log("[red]Use shortest input.")
ffmpeg_cmd.extend(['-shortest', '-strict', 'experimental'])
# Overwrite
ffmpeg_cmd += [out_path, "-y"]
logging.info(f"FFmpeg command: {ffmpeg_cmd}")
# Run join
if DEBUG_MODE:
subprocess.run(ffmpeg_cmd, check=True)
@ -409,7 +458,6 @@ def join_audios(video_path: str, audio_tracks: List[Dict[str, str]], out_path: s
capture_ffmpeg_real_time(ffmpeg_cmd, "[cyan]Join audio")
print()
# Check file output
if CHECK_OUTPUT_CONVERSION:
console.log("[red]Check output ffmpeg")
@ -456,7 +504,7 @@ def join_subtitle(video_path: str, subtitles_list: List[Dict[str, str]], out_pat
ffmpeg_cmd += ["-metadata:s:s:{}".format(idx), "title={}".format(subtitle['name'])]
# Add output args
if USE_CODECS:
if USE_CODEC:
ffmpeg_cmd.extend(['-c:v', 'copy', '-c:a', 'copy', '-c:s', 'mov_text'])
else:
ffmpeg_cmd.extend(['-c', 'copy', '-c:s', 'mov_text'])

View File

@ -71,8 +71,8 @@ def get_video_duration(file_path: str) -> float:
return float(probe_result['format']['duration'])
except Exception as e:
logging.error(f"Error: {e}")
return None
logging.error(f"Error get video duration: {e}")
sys.exit(0)
def format_duration(seconds: float) -> Tuple[int, int, int]:
@ -92,7 +92,7 @@ def format_duration(seconds: float) -> Tuple[int, int, int]:
return int(hours), int(minutes), int(seconds)
def print_duration_table(file_path: str) -> None:
def print_duration_table(file_path: str, show = True) -> None:
"""
Print duration of a video file in hours, minutes, and seconds.
@ -104,7 +104,10 @@ def print_duration_table(file_path: str) -> None:
if video_duration is not None:
hours, minutes, seconds = format_duration(video_duration)
console.log(f"[cyan]Duration for [white]([green]{os.path.basename(file_path)}[white]): [yellow]{int(hours)}[red]h [yellow]{int(minutes)}[red]m [yellow]{int(seconds)}[red]s")
if show:
console.print(f"[cyan]Duration for [white]([green]{os.path.basename(file_path)}[white]): [yellow]{int(hours)}[red]h [yellow]{int(minutes)}[red]m [yellow]{int(seconds)}[red]s")
else:
return f"[yellow]{int(hours)}[red]h [yellow]{int(minutes)}[red]m [yellow]{int(seconds)}[red]s"
def get_ffprobe_info(file_path):
@ -210,3 +213,24 @@ def check_ffmpeg_input(input_file):
except Exception as e:
logging.error(f"An unexpected error occurred: {e}")
return False
def check_duration_v_a(video_path, audio_path):
"""
Check if the duration of the video and audio matches.
Args:
- video_path (str): Path to the video file.
- audio_path (str): Path to the audio file.
Returns:
- bool: True if the duration of the video and audio matches, False otherwise.
"""
# Ottieni la durata del video
video_duration = get_video_duration(video_path)
# Ottieni la durata dell'audio
audio_duration = get_video_duration(audio_path)
# Verifica se le durate corrispondono
return video_duration == audio_duration

View File

@ -8,7 +8,7 @@ from typing import Generator, Optional
# External libraries
from Src.Lib.Request import requests
import requests
from bs4 import BeautifulSoup

View File

@ -8,7 +8,7 @@ from concurrent.futures import ThreadPoolExecutor
# External libraries
from Src.Lib.Request import requests
import requests
from unidecode import unidecode
@ -178,7 +178,7 @@ class Downloader():
# Check if there is some audios, else disable download
if self.list_available_audio != None:
console.log(f"[cyan]Find audios [white]=> [red]{[obj_audio.get('language') for obj_audio in self.list_available_audio]}")
console.print(f"[cyan]Find audios [white]=> [red]{[obj_audio.get('language') for obj_audio in self.list_available_audio]}")
else:
console.log("[red]Cant find a list of audios")
@ -191,7 +191,7 @@ class Downloader():
# Check if there is some subtitles, else disable download
if self.list_available_subtitles != None:
console.log(f"[cyan]Find subtitles [white]=> [red]{[obj_sub.get('language') for obj_sub in self.list_available_subtitles]}")
console.print(f"[cyan]Find subtitles [white]=> [red]{[obj_sub.get('language') for obj_sub in self.list_available_subtitles]}")
else:
console.log("[red]Cant find a list of audios")
@ -208,7 +208,7 @@ class Downloader():
logging.info(f"M3U8 index select: {self.m3u8_index}, with resolution: {video_res}")
# Get URI of the best quality and codecs parameters
console.log(f"[cyan]Find resolution [white]=> [red]{sorted(list_available_resolution, reverse=True)}")
console.print(f"[cyan]Find resolution [white]=> [red]{sorted(list_available_resolution, reverse=True)}")
# Fix URL if it is not complete with http:\\site_name.domain\...
if "http" not in self.m3u8_index:
@ -219,7 +219,7 @@ class Downloader():
# Check if a valid HTTPS URL is obtained
if self.m3u8_index is not None and "https" in self.m3u8_index:
console.log(f"[cyan]Found m3u8 index [white]=> [red]{self.m3u8_index}")
console.print(f"[cyan]Found m3u8 index [white]=> [red]{self.m3u8_index}")
else:
logging.error("[download_m3u8] Can't find a valid m3u8 index")
raise
@ -229,7 +229,8 @@ class Downloader():
logging.info(f"Find codec: {self.codec}")
if self.codec is not None:
console.log(f"[cyan]Find codec [white]=> ([green]'v'[white]: [yellow]{self.codec.video_codec_name}[white], [green]'a'[white]: [yellow]{self.codec.audio_codec_name}[white], [green]'b'[white]: [yellow]{self.codec.bandwidth})")
console.print(f"[cyan]Find codec [white]=> ([green]'v'[white]: [yellow]{self.codec.video_codec_name}[white] ([green]b[white]: [yellow]{self.codec.video_bitrate // 1000}k[white]), [green]'a'[white]: [yellow]{self.codec.audio_codec_name}[white] ([green]b[white]: [yellow]{self.codec.audio_bitrate // 1000}k[white]))")
def __donwload_video__(self, server_ip: list = None):
"""
@ -263,6 +264,9 @@ class Downloader():
# Download the video segments
video_m3u8.download_streams(f"{Colors.MAGENTA}video")
# Get time of output file
print_duration_table(os.path.join(full_path_video, "0.ts"))
else:
console.log("[cyan]Video [red]already exists.")
@ -309,6 +313,9 @@ class Downloader():
# Download the audio segments
audio_m3u8.download_streams(f"{Colors.MAGENTA}audio {Colors.RED}{obj_audio.get('language')}")
# Get time of output file
print_duration_table(os.path.join(full_path_audio, "0.ts"))
else:
console.log(f"[cyan]Audio [white]([green]{obj_audio.get('language')}[white]) [red]already exists.")
@ -373,14 +380,14 @@ class Downloader():
)
# Initiate the download of the subtitle content
console.log(f"[cyan]Downloading subtitle: [red]{sub_language.lower()}")
console.print(f"[cyan]Downloading subtitle: [red]{sub_language.lower()}")
futures.append(executor.submit(self.__save_subtitle_content, m3u8_sub_parser.subtitle[-1], sub_full_path))
# Wait for all downloads to finish
for future in futures:
future.result()
def __join_video__(self, vcodec = 'copy') -> str:
def __join_video__(self) -> str:
"""
Join downloaded video segments into a single video file.
@ -397,10 +404,9 @@ class Downloader():
join_video(
video_path = self.downloaded_video[0].get('path'),
out_path = path_join_video,
vcodec = vcodec
codec = self.codec
)
print_duration_table(path_join_video)
return path_join_video
def __join_video_audio__(self) -> str:
@ -420,10 +426,10 @@ class Downloader():
join_audios(
video_path = self.downloaded_video[0].get('path'),
audio_tracks = self.downloaded_audio,
out_path = path_join_video_audio
out_path = path_join_video_audio,
codec = self.codec
)
print_duration_table(path_join_video_audio)
return path_join_video_audio
def __join_video_subtitles__(self, input_path: str) -> str:
@ -449,7 +455,6 @@ class Downloader():
path_join_video_subtitle
)
print_duration_table(path_join_video_subtitle)
return path_join_video_subtitle
def __clean__(self, out_path: str) -> None:
@ -473,7 +478,11 @@ class Downloader():
os.rename(out_path, self.output_filename)
# Print size of the file
console.print(Panel(f"[bold green]Download completed![/bold green]\nFile size: [bold red]{format_size(os.path.getsize(self.output_filename))}[/bold red]", title=f"{os.path.basename(self.output_filename.replace('.mp4', ''))}", border_style="green"))
console.print(Panel(
f"[bold green]Download completed![/bold green]\n"
f"File size: [bold red]{format_size(os.path.getsize(self.output_filename))}[/bold red]\n"
f"Duration: [bold]{print_duration_table(self.output_filename, show=False)}[/bold]",
title=f"{os.path.basename(self.output_filename.replace('.mp4', ''))}", border_style="green"))
# Delete all files except the output file
delete_files_except_one(self.base_path, os.path.basename(self.output_filename))
@ -535,7 +544,7 @@ class Downloader():
there_is_video: bool = (len(self.downloaded_video) > 0)
there_is_audio: bool = (len(self.downloaded_audio) > 0)
there_is_subtitle: bool = (len(self.downloaded_subtitle) > 0)
console.log(f"[cyan]Conversion [white]=> ([green]Audio: [yellow]{there_is_audio}[white], [green]Subtitle: [yellow]{there_is_subtitle}[white])")
console.print(f"[cyan]Conversion [white]=> ([green]Audio: [yellow]{there_is_audio}[white], [green]Subtitle: [yellow]{there_is_subtitle}[white])")
# Join audio and video

View File

@ -5,7 +5,6 @@ import sys
import time
import queue
import threading
import signal
import logging
import binascii
from concurrent.futures import ThreadPoolExecutor
@ -13,7 +12,7 @@ from urllib.parse import urljoin, urlparse, urlunparse
# External libraries
from Src.Lib.Request import requests
import requests
from tqdm import tqdm
@ -23,6 +22,7 @@ from Src.Util.headers import get_headers
from Src.Util.color import Colors
from Src.Util._jsonConfig import config_manager
# Logic class
from ..M3U8 import (
M3U8_Decryption,
@ -32,11 +32,14 @@ from ..M3U8 import (
)
# Warning
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# Config
TQDM_MAX_WORKER = config_manager.get_int('M3U8_DOWNLOAD', 'tdqm_workers')
TQDM_USE_LARGE_BAR = config_manager.get_int('M3U8_DOWNLOAD', 'tqdm_use_large_bar')
REQUEST_VERIFY_SSL = config_manager.get_bool('REQUESTS', 'verify_ssl')
REQUEST_DISABLE_ERROR = config_manager.get_bool('REQUESTS', 'disable_error')
# Variable
@ -55,18 +58,20 @@ class M3U8_Segments:
- tmp_folder (str): The temporary folder to store downloaded segments.
"""
self.url = url
self.fake_proxy = False
self.tmp_folder = tmp_folder
self.decryption: M3U8_Decryption = None # Initialize decryption as None
self.segment_queue = queue.PriorityQueue() # Priority queue to maintain the order of segments
self.current_index = 0 # Index of the current segment to be written
self.tmp_file_path = os.path.join(self.tmp_folder, "0.ts") # Path to the temporary file
self.condition = threading.Condition() # Condition variable for thread synchronization
self.ctrl_c_detected = False # Global variable to track Ctrl+C detection
self.tmp_file_path = os.path.join(self.tmp_folder, "0.ts")
os.makedirs(self.tmp_folder, exist_ok=True)
os.makedirs(self.tmp_folder, exist_ok=True) # Create the temporary folder if it does not exist
# Util class
self.decryption: M3U8_Decryption = None
self.class_ts_estimator = M3U8_Ts_Estimator(0)
self.class_url_fixer = M3U8_UrlFix(url)
self.fake_proxy = False
# Sync
self.current_index = 0 # Index of the current segment to be written
self.segment_queue = queue.PriorityQueue() # Priority queue to maintain the order of segments
self.condition = threading.Condition() # Condition variable for thread synchronization
def add_server_ip(self, list_ip):
"""
@ -97,8 +102,6 @@ class M3U8_Segments:
logging.info(f"Uri key: {key_uri}")
try:
# Send HTTP GET request to fetch the key
response = requests.get(key_uri, headers=headers_index)
response.raise_for_status()
@ -112,6 +115,41 @@ class M3U8_Segments:
logging.info(f"Key: ('hex': {hex_content}, 'byte': {byte_content})")
return byte_content
def __test_ip(self, url_to_test: str):
"""
Tests each proxy IP by sending a request to a corresponding segment URL.
"""
failed_ips = []
for i in range(len(self.fake_proxy_ip)):
try:
response = requests.get(url_to_test, verify=False, retries=0)
if response == None:
logging.error(f"[Work] to make request using: {url_to_test}")
failed_ips.append(i)
except:
# Log the error and add the IP to the list of failed IPs
logging.error(f"[Fail] to make request using IP in this request: {url_to_test}")
failed_ips.append(i)
# Remove the failed IPs from the fake_proxy_ip list
self.fake_proxy_ip = [ip for j, ip in enumerate(self.fake_proxy_ip) if j not in failed_ips]
# Exit the program if 50% requests failed
if len(failed_ips) / 2 > len(self.fake_proxy_ip):
logging.error("All requests with ip failed.")
# Set to not use proxy
self.fake_proxy_ip = None
self.fake_proxy = False
return False
def parse_data(self, m3u8_content: str) -> None:
"""
Parses the M3U8 content to extract segment information.
@ -120,9 +158,10 @@ class M3U8_Segments:
- m3u8_content (str): The content of the M3U8 file.
"""
m3u8_parser = M3U8_Parser()
m3u8_parser.parse_data(uri=self.url, raw_content=m3u8_content) # Parse the content of the M3U8 playlist
m3u8_parser.parse_data(uri=self.url, raw_content=m3u8_content)
console.log(f"[cyan]There is key: [yellow]{m3u8_parser.keys is not None}")
console.log(f"[red]Expected duration after download: {m3u8_parser.get_duration()}")
console.log(f"[red]There is key: [yellow]{m3u8_parser.keys is not None}")
# Check if there is an encryption key in the playlis
if m3u8_parser.keys is not None:
@ -156,6 +195,12 @@ class M3U8_Segments:
for i in range(len(self.segments)):
segment_url = self.segments[i]
# Set to not use proxy if 50% failed
if not self.__test_ip(segment_url):
console.log("[red]Cant use proxy switch to normal url.")
self.fake_proxy = False
break
self.segments[i] = self.__gen_proxy__(segment_url, self.segments.index(segment_url))
# Save new playlist of segment
@ -166,6 +211,7 @@ class M3U8_Segments:
# Update segments for estimator
self.class_ts_estimator.total_segments = len(self.segments)
logging.info(f"Segmnets to donwload: [{len(self.segments)}]")
def get_info(self) -> None:
"""
@ -196,28 +242,28 @@ class M3U8_Segments:
Returns:
str: The modified URL with the new IP address.
"""
new_ip_address = self.fake_proxy_ip[url_index % len(self.fake_proxy_ip)]
if self.fake_proxy:
# Parse the original URL and replace the hostname with the new IP address
parsed_url = urlparse(url)._replace(netloc=new_ip_address)
new_ip_address = self.fake_proxy_ip[url_index % len(self.fake_proxy_ip)]
return urlunparse(parsed_url)
# Parse the original URL and replace the hostname with the new IP address
parsed_url = urlparse(url)._replace(netloc=new_ip_address)
def make_requests_stream(self, ts_url: str, index: int, stop_event: threading.Event, progress_bar: tqdm) -> None:
return urlunparse(parsed_url)
else:
return url
def make_requests_stream(self, ts_url: str, index: int, progress_bar: tqdm) -> None:
"""
Downloads a TS segment and adds it to the segment queue.
Args:
- ts_url (str): The URL of the TS segment.
- index (int): The index of the segment.
- stop_event (threading.Event): Event to signal the stop of downloading.
- progress_bar (tqdm): Progress counter for tracking download progress.
- add_desc (str): Additional description for the progress bar.
"""
if stop_event.is_set():
return # Exit if the stop event is set
# Generate new user agent
headers_segments['user-agent'] = get_headers()
@ -225,16 +271,17 @@ class M3U8_Segments:
# Make request and calculate time duration
start_time = time.time()
response = requests.get(ts_url, headers=headers_segments, verify_ssl=REQUEST_VERIFY_SSL)
response = requests.get(ts_url, headers=headers_segments, verify=REQUEST_VERIFY_SSL, timeout=15)
duration = time.time() - start_time
logging.info(f"Make request to get segment: [{index} - {len(self.segments)}] in: {duration}, len data: {len(response.content)}")
if response.ok:
# Get the content of the segment
segment_content = response.content
# Update bar
self.class_ts_estimator.update_progress_bar(segment_content, duration, progress_bar)
self.class_ts_estimator.update_progress_bar(int(response.headers.get('Content-Length', 0)), duration, progress_bar)
# Decrypt the segment content if decryption is needed
if self.decryption is not None:
@ -243,37 +290,29 @@ class M3U8_Segments:
with self.condition:
self.segment_queue.put((index, segment_content)) # Add the segment to the queue
self.condition.notify() # Notify the writer thread that a new segment is available
else:
if not REQUEST_DISABLE_ERROR:
logging.error(f"Failed to download segment: {ts_url}")
logging.error(f"Failed to download segment: {ts_url}")
except Exception as e:
if not REQUEST_DISABLE_ERROR:
logging.error(f"Exception while downloading segment: {e}")
logging.error(f"Exception while downloading segment: {e}")
# Update bar
progress_bar.update(1)
def write_segments_to_file(self, stop_event: threading.Event):
def write_segments_to_file(self):
"""
Writes downloaded segments to a file in the correct order.
Args:
- stop_event (threading.Event): Event to signal the stop of writing.
"""
with open(self.tmp_file_path, 'ab') as f:
while not stop_event.is_set() or not self.segment_queue.empty():
while True:
with self.condition:
while self.segment_queue.empty() and not stop_event.is_set():
self.condition.wait(timeout=1) # Wait until a new segment is available or stop_event is set
while self.segment_queue.empty() and self.current_index < len(self.segments):
self.condition.wait() # Wait until a new segment is available or all segments are downloaded
if stop_event.is_set():
break
if self.segment_queue.empty() and self.current_index >= len(self.segments):
break # Exit loop if all segments have been processed
if not self.segment_queue.empty():
# Get the segment from the queue
index, segment_content = self.segment_queue.get()
@ -282,10 +321,9 @@ class M3U8_Segments:
f.write(segment_content)
self.current_index += 1
self.segment_queue.task_done()
else:
self.segment_queue.put((index, segment_content)) # Requeue the segment if it is not the next to be written
self.condition.notify() # Notify that a segment has been requeued
self.segment_queue.put((index, segment_content)) # Requeue the segment if it is not the next to be written
self.condition.notify()
def download_streams(self, add_desc):
"""
@ -294,10 +332,8 @@ class M3U8_Segments:
Args:
- add_desc (str): Additional description for the progress bar.
"""
stop_event = threading.Event() # Event to signal stopping
if TQDM_USE_LARGE_BAR:
bar_format=f"{Colors.YELLOW}Downloading {Colors.WHITE}({add_desc}{Colors.WHITE}): {Colors.RED}{{percentage:.2f}}% {Colors.MAGENTA}{{bar}} {Colors.YELLOW}{{elapsed}} {Colors.WHITE}< {Colors.CYAN}{{remaining}}{{postfix}} {Colors.WHITE}]"
bar_format=f"{Colors.YELLOW}Downloading {Colors.WHITE}({add_desc}{Colors.WHITE}): {Colors.RED}{{percentage:.2f}}% {Colors.MAGENTA}{{bar}} {Colors.WHITE}| {Colors.YELLOW}{{n_fmt}}{Colors.WHITE} / {Colors.RED}{{total_fmt}} {Colors.WHITE}| {Colors.YELLOW}{{elapsed}} {Colors.WHITE}< {Colors.CYAN}{{remaining}}{{postfix}} {Colors.WHITE}]"
else:
bar_format=f"{Colors.YELLOW}Proc{Colors.WHITE}: {Colors.RED}{{percentage:.2f}}% {Colors.WHITE}| {Colors.CYAN}{{remaining}}{{postfix}} {Colors.WHITE}]"
@ -305,49 +341,24 @@ class M3U8_Segments:
total=len(self.segments),
unit='s',
ascii='░▒█',
bar_format=bar_format,
dynamic_ncols=True,
ncols=80,
mininterval=0.01
bar_format=bar_format
)
def signal_handler(sig, frame):
self.ctrl_c_detected = True # Set global variable to indicate Ctrl+C detection
stop_event.set()
with self.condition:
self.condition.notify_all() # Wake up the writer thread if it's waiting
# Register the signal handler for Ctrl+C
signal.signal(signal.SIGINT, signal_handler)
with ThreadPoolExecutor(max_workers=TQDM_MAX_WORKER) as executor:
# Start a separate thread to write segments to the file
writer_thread = threading.Thread(target=self.write_segments_to_file, args=(stop_event,))
writer_thread = threading.Thread(target=self.write_segments_to_file)
writer_thread.start()
# Delay the start of each worker
# Start all workers
for index, segment_url in enumerate(self.segments):
# Check for Ctrl+C before starting each download task
time.sleep(0.03)
if self.ctrl_c_detected:
console.log("[red]Ctrl+C detected. Stopping further downloads.")
stop_event.set()
with self.condition:
self.condition.notify_all() # Wake up the writer thread if it's waiting
break
# Submit the download task to the executor
executor.submit(self.make_requests_stream, segment_url, index, stop_event, progress_bar)
executor.submit(self.make_requests_stream, segment_url, index, progress_bar)
# Wait for all segments to be downloaded
executor.shutdown(wait=True)
stop_event.set() # Set the stop event to halt the writer thread
executor.shutdown()
with self.condition:
self.condition.notify_all() # Wake up the writer thread if it's waiting
writer_thread.join() # Wait for the writer thread to finish

View File

@ -111,17 +111,16 @@ else:
"""
if self.method == "AES":
openssl_cmd = f'openssl enc -d -aes-256-ecb -K {self.key.hex()} -nosalt'
decrypted_data = subprocess.check_output(openssl_cmd.split(), input=ciphertext)
elif self.method == "AES-128":
openssl_cmd = f'openssl enc -d -aes-128-cbc -K {self.key[:16].hex()} -iv {self.iv.hex()}'
decrypted_data = subprocess.check_output(openssl_cmd.split(), input=ciphertext)
elif self.method == "AES-128-CTR":
openssl_cmd = f'openssl enc -d -aes-128-ctr -K {self.key[:16].hex()} -iv {self.iv.hex()}'
decrypted_data = subprocess.check_output(openssl_cmd.split(), input=ciphertext)
else:
raise ValueError("Invalid or unsupported method")
return decrypted_data
try:
decrypted_data = subprocess.check_output(openssl_cmd.split(), input=ciphertext, stderr=subprocess.STDOUT)
except subprocess.CalledProcessError as e:
raise ValueError(f"Decryption failed: {e.output.decode()}")
return decrypted_data

View File

@ -31,7 +31,7 @@ class M3U8_Ts_Estimator:
"""
self.ts_file_sizes = []
self.now_downloaded_size = 0
self.average_over = 6
self.average_over = 3
self.list_speeds = deque(maxlen=self.average_over)
self.smoothed_speeds = []
self.total_segments = total_segments
@ -52,7 +52,7 @@ class M3U8_Ts_Estimator:
# Calculate speed outside of the lock
try:
speed_mbps = (size_download * 16) / (duration * 1_000_000)
speed_mbps = (size_download * 8) / (duration * 1_000_000)
except ZeroDivisionError as e:
logging.error("Division by zero error while calculating speed: %s", e)
return
@ -114,16 +114,15 @@ class M3U8_Ts_Estimator:
"""
return format_size(self.now_downloaded_size)
def update_progress_bar(self, segment_content: bytes, duration: float, progress_counter: tqdm) -> None:
def update_progress_bar(self, total_downloaded: int, duration: float, progress_counter: tqdm) -> None:
"""
Updates the progress bar with information about the TS segment download.
Args:
segment_content (bytes): The content of the downloaded TS segment.
total_downloaded (int): The len of the content of the downloaded TS segment.
duration (float): The duration of the segment download in seconds.
progress_counter (tqdm): The tqdm object representing the progress bar.
"""
total_downloaded = len(segment_content)
# Add the size of the downloaded segment to the estimator
self.add_ts_file(total_downloaded * self.total_segments, total_downloaded, duration)

View File

@ -8,7 +8,7 @@ from .lib_parser import load
# External libraries
from Src.Lib.Request import requests
import requests
# Costant
@ -48,10 +48,6 @@ RESOLUTIONS = [
class M3U8_Codec:
"""
Represents codec information for an M3U8 playlist.
"""
def __init__(self, bandwidth, codecs):
"""
Initializes the M3U8Codec object with the provided parameters.
@ -64,20 +60,23 @@ class M3U8_Codec:
self.codecs = codecs
self.audio_codec = None
self.video_codec = None
self.video_codec_name = None
self.audio_codec_name = None
self.extract_codecs()
self.parse_codecs()
self.calculate_bitrates()
def extract_codecs(self):
"""
Parses the codecs information to extract audio and video codecs.
Extracted codecs are set as attributes: audio_codec and video_codec.
"""
# Split the codecs string by comma
try:
# Split the codecs string by comma
codecs_list = self.codecs.split(',')
except Exception as e:
logging.error(f"Cant split codec list: {self.codecs} with error {e}")
logging.error(f"Can't split codec list: {self.codecs} with error {e}")
return
# Separate audio and video codecs
for codec in codecs_list:
@ -87,7 +86,6 @@ class M3U8_Codec:
self.audio_codec = codec
def convert_video_codec(self, video_codec_identifier) -> str:
"""
Convert video codec identifier to codec name.
@ -97,6 +95,9 @@ class M3U8_Codec:
Returns:
str: Codec name corresponding to the identifier.
"""
if not video_codec_identifier:
logging.warning("No video codec identifier provided. Using default codec libx264.")
return "libx264" # Default
# Extract codec type from the identifier
codec_type = video_codec_identifier.split('.')[0]
@ -107,13 +108,11 @@ class M3U8_Codec:
if codec_name:
return codec_name
else:
logging.warning(f"No corresponding video codec found for {video_codec_identifier}. Using default codec libx264.")
return "libx264" # Default
def convert_audio_codec(self, audio_codec_identifier) -> str:
return "libx264" # Default
def convert_audio_codec(self, audio_codec_identifier) -> str:
"""
Convert audio codec identifier to codec name.
@ -123,6 +122,9 @@ class M3U8_Codec:
Returns:
str: Codec name corresponding to the identifier.
"""
if not audio_codec_identifier:
logging.warning("No audio codec identifier provided. Using default codec aac.")
return "aac" # Default
# Extract codec type from the identifier
codec_type = audio_codec_identifier.split('.')[0]
@ -133,25 +135,33 @@ class M3U8_Codec:
if codec_name:
return codec_name
else:
logging.warning(f"No corresponding audio codec found for {audio_codec_identifier}. Using default codec aac.")
return "aac" # Default
return "aac" # Default
def parse_codecs(self):
"""
Parse video and audio codecs.
This method updates `video_codec_name` and `audio_codec_name` attributes.
"""
self.video_codec_name = self.convert_video_codec(self.video_codec)
self.audio_codec_name = self.convert_audio_codec(self.audio_codec)
def __str__(self):
def calculate_bitrates(self):
"""
Returns a string representation of the M3U8Codec object.
Calculate video and audio bitrates based on the available bandwidth.
"""
return f"BANDWIDTH={self.bandwidth},RESOLUTION={self.resolution},CODECS=\"{self.codecs}\""
if self.bandwidth:
# Define the video and audio bitrates
video_bitrate = int(self.bandwidth * 0.8) # Using 80% of bandwidth for video
audio_bitrate = self.bandwidth - video_bitrate
self.video_bitrate = video_bitrate
self.audio_bitrate = audio_bitrate
else:
logging.warning("No bandwidth provided. Bitrates cannot be calculated.")
class M3U8_Video:
@ -394,6 +404,7 @@ class M3U8_Parser:
self._video: M3U8_Video = None
self._audio: M3U8_Audio = None
self._subtitle: M3U8_Subtitle = None
self.duration: float = 0
self.__create_variable__()
@ -547,6 +558,10 @@ class M3U8_Parser:
try:
for segment in m3u8_obj.segments:
# Collect all index duration
self.duration += segment.duration
if "vtt" not in segment.uri:
self.segments.append(segment.uri)
else:
@ -563,3 +578,21 @@ class M3U8_Parser:
self._video = M3U8_Video(self.video_playlist)
self._audio = M3U8_Audio(self.audio_playlist)
self._subtitle = M3U8_Subtitle(self.subtitle_playlist)
def get_duration(self):
"""
Convert duration from seconds to hours, minutes, and remaining seconds.
Parameters:
- seconds (float): Duration in seconds.
Returns:
- formatted_duration (str): Formatted duration string with hours, minutes, and seconds.
"""
# Calculate hours, minutes, and remaining seconds
hours = int(self.duration / 3600)
minutes = int((self.duration % 3600) / 60)
remaining_seconds = int(self.duration % 60)
# Format the duration string with colors
return f"[yellow]{int(hours)}[red]h [yellow]{int(minutes)}[red]m [yellow]{int(remaining_seconds)}[red]s"

View File

@ -1,3 +0,0 @@
# 04.4.24
from .my_requests import requests

View File

@ -1,543 +0,0 @@
# 04.4.24
import os
import sys
import base64
import json
import logging
import ssl
import time
import re
import subprocess
import urllib.parse
import urllib.request
import urllib.error
from typing import Dict, Optional, Union, Any
try:
from typing import Unpack, TypedDict
except ImportError:
# (Python <= 3.10),
try:
from typing_extensions import Unpack, TypedDict # type: ignore
except ImportError:
raise ImportError("Unable to import Unpack from typing or typing_extensions. "
"Please make sure you have the necessary libraries installed.")
# External library
from bs4 import BeautifulSoup
# Internal utilities
from Src.Util._jsonConfig import config_manager
# Default settings
HTTP_TIMEOUT = config_manager.get_int('REQUESTS', 'timeout')
HTTP_RETRIES = config_manager.get_int('REQUESTS', 'max_retry')
HTTP_DELAY = 1
HTTP_DISABLE_ERROR = config_manager.get_bool('REQUESTS', 'disable_error')
class RequestError(Exception):
"""Custom exception class for request errors."""
def __init__(self, message: str, original_exception: Optional[Exception] = None) -> None:
"""
Initialize a RequestError instance.
Args:
- message (str): The error message.
- original_exception (Optional[Exception], optional): The original exception that occurred. Defaults to None.
"""
super().__init__(message)
self.original_exception = original_exception
def __str__(self) -> str:
"""Return a string representation of the exception."""
if self.original_exception:
return f"{super().__str__()} Original Exception: {type(self.original_exception).__name__}: {str(self.original_exception)}"
else:
return super().__str__()
def parse_http_error(error_string: str):
"""
Parse the HTTP error string to extract the error code and message.
Args:
- error_string (str): The error string from an HTTP response.
Returns:
dict: A dictionary with 'error_code' and 'message' if the string is parsed successfully, or None if parsing fails.
"""
# Regular expression to match the error pattern
error_pattern = re.compile(r"HTTP Error (\d{3}): (.+)")
match = error_pattern.search(error_string)
if match:
error_code = match.group(1)
message = match.group(2)
return {'error_code': error_code, 'message': message}
else:
logging.error(f"Error string does not match expected format: {error_string}")
return None
class Response:
"""
Class representing an HTTP response.
"""
def __init__(
self,
status: int,
text: str,
is_json: bool = False,
content: bytes = b"",
headers: Optional[Dict[str, str]] = None,
cookies: Optional[Dict[str, str]] = None,
redirect_url: Optional[str] = None,
response_time: Optional[float] = None,
timeout: Optional[float] = None,
):
"""
Initialize a Response object.
Args:
- status (int): The HTTP status code of the response.
- text (str): The response content as text.
- is_json (bool, optional): Indicates if the response content is JSON. Defaults to False.
- content (bytes, optional): The response content as bytes. Defaults to b"".
- headers (Optional[Dict[str, str]], optional): The response headers. Defaults to None.
- cookies (Optional[Dict[str, str]], optional): The cookies set in the response. Defaults to None.
- redirect_url (Optional[str], optional): The URL if a redirection occurred. Defaults to None.
- response_time (Optional[float], optional): The time taken to receive the response. Defaults to None.
- timeout (Optional[float], optional): The request timeout. Defaults to None.
"""
self.status_code = status
self.text = text
self.is_json = is_json
self.content = content
self.headers = headers or {}
self.cookies = cookies or {}
self.redirect_url = redirect_url
self.response_time = response_time
self.timeout = timeout
self.ok = 200 <= status < 300
def raise_for_status(self):
"""
Raise an error if the response status code is not in the 2xx range.
"""
if not self.ok:
raise RequestError(f"Request failed with status code {self.status_code}")
def json(self):
"""
Return the response content as JSON if it is JSON.
Returns:
dict or list or None: A Python dictionary or list parsed from JSON if the response content is JSON, otherwise None.
"""
if self.is_json:
return json.loads(self.text)
else:
return None
def get_redirects(self):
"""
Extracts unique site URLs from HTML <link> elements within the <head> section.
Returns:
list or None: A list of unique site URLs if found, otherwise None.
"""
site_find = []
if self.text:
soup = BeautifulSoup(self.text, "html.parser")
for links in soup.find("head").find_all('link'):
if links is not None:
parsed_url = urllib.parse.urlparse(links.get('href'))
site = parsed_url.scheme + "://" + parsed_url.netloc
if site not in site_find:
site_find.append(site)
if site_find:
return site_find
else:
return None
class ManageRequests:
"""
Class for managing HTTP requests.
"""
def __init__(
self,
url: str,
method: str = 'GET',
headers: Optional[Dict[str, str]] = None,
timeout: float = HTTP_TIMEOUT,
retries: int = HTTP_RETRIES,
params: Optional[Dict[str, str]] = None,
verify_ssl: bool = True,
auth: Optional[tuple] = None,
proxy: Optional[str] = None,
cookies: Optional[Dict[str, str]] = None,
json_data: Optional[Dict[str, Any]] = None,
redirection_handling: bool = True,
):
"""
Initialize a ManageRequests object.
Args:
- url (str): The URL to which the request will be sent.
- method (str, optional): The HTTP method to be used for the request. Defaults to 'GET'.
- headers (Optional[Dict[str, str]], optional): The request headers. Defaults to None.
- timeout (float, optional): The request timeout. Defaults to HTTP_TIMEOUT.
- retries (int, optional): The number of retries in case of request failure. Defaults to HTTP_RETRIES.
- params (Optional[Dict[str, str]], optional): The query parameters for the request. Defaults to None.
- verify_ssl (bool, optional): Indicates whether SSL certificate verification should be performed. Defaults to True.
- auth (Optional[tuple], optional): Tuple containing the username and password for basic authentication. Defaults to None.
- proxy (Optional[str], optional): The proxy URL. Defaults to None.
- cookies (Optional[Dict[str, str]], optional): The cookies to be included in the request. Defaults to None.
- redirection_handling (bool, optional): Indicates whether redirections should be followed. Defaults to True.
"""
self.url = url
self.method = method
self.headers = headers or {}
self.timeout = timeout
self.retries = retries
self.params = params
self.verify_ssl = verify_ssl
self.auth = auth
self.proxy = proxy
self.cookies = cookies
self.json_data = json_data
self.redirection_handling = redirection_handling
def add_header(self, key: str, value: str) -> None:
"""
Add a header to the request.
"""
self.headers[key] = value
def send(self) -> Response:
"""
Send the HTTP request.
"""
start_time = time.time()
self.attempt = 0
redirect_url = None
while self.attempt < self.retries:
try:
req = self._build_request()
response = self._perform_request(req)
return self._process_response(response, start_time, redirect_url)
except (urllib.error.URLError, urllib.error.HTTPError) as e:
self._handle_error(e)
self.attempt += 1
def log_request(self):
"""
Constructs a log message based on the request parameters and logs it.
"""
log_message = "Request: ("
if self.url:
log_message += f"'url': {self.url}, "
if self.headers:
log_message += f"'headers': {self.headers}, "
if self.cookies:
log_message += f"'cookies': {self.cookies}, "
if self.json_data:
log_message += f"'body': {json.dumps(self.json_data).encode('utf-8')}, "
# Remove the trailing comma and add parentheses
log_message = log_message.rstrip(", ") + ")"
logging.info(log_message)
def _build_request(self) -> urllib.request.Request:
"""
Build the urllib Request object.
"""
# Make a copy of headers to avoid modifying the original dictionary
headers = self.headers.copy()
# Construct the URL with query parameters if present
if self.params:
url = self.url + '?' + urllib.parse.urlencode(self.params)
else:
url = self.url
# Create the initial Request object
req = urllib.request.Request(url, headers=headers, method=self.method)
# Add JSON data if provided
if self.json_data:
req.add_header('Content-Type', 'application/json')
req.data = json.dumps(self.json_data).encode('utf-8')
# Add authorization header if provided
if self.auth:
req.add_header('Authorization', 'Basic ' + base64.b64encode(f"{self.auth[0]}:{self.auth[1]}".encode()).decode())
# Add cookies if provided
if self.cookies:
cookie_str = '; '.join([f"{name}={value}" for name, value in self.cookies.items()])
req.add_header('Cookie', cookie_str)
# Add default user agent if not already present
if 'user-agent' not in headers:
default_user_agent = 'Mozilla/5.0'
req.add_header('user-agent', default_user_agent)
self.log_request()
return req
def _perform_request(self, req: urllib.request.Request) -> urllib.response.addinfourl:
"""
Perform the HTTP request.
"""
if self.proxy:
proxy_handler = urllib.request.ProxyHandler({'http': self.proxy, 'https': self.proxy})
opener = urllib.request.build_opener(proxy_handler)
urllib.request.install_opener(opener)
if not self.verify_ssl:
# Create SSL context
ssl_context = ssl.create_default_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE
# Build the request with SSL context
response = urllib.request.urlopen(req, timeout=self.timeout, context=ssl_context)
else:
response = urllib.request.urlopen(req, timeout=self.timeout, context=ssl.create_default_context())
return response
def _process_response(self, response: urllib.response.addinfourl, start_time: float, redirect_url: Optional[str]) -> Response:
"""
Process the HTTP response.
"""
response_data = response.read()
content_type = response.headers.get('Content-Type', '').lower()
if self.redirection_handling and response.status in (301, 302, 303, 307, 308):
location = response.headers.get('Location')
logging.info(f"Redirecting to: {location}")
redirect_url = location
self.url = location
return self.send()
return self._build_response(response, response_data, start_time, redirect_url, content_type)
def _build_response(self, response: urllib.response.addinfourl, response_data: bytes, start_time: float, redirect_url: Optional[str], content_type: str) -> Response:
"""
Build the Response object.
"""
response_time = time.time() - start_time
response_headers = dict(response.headers)
response_cookies = {}
for cookie in response.headers.get_all('Set-Cookie', []):
cookie_parts = cookie.split(';')
cookie_name, cookie_value = cookie_parts[0].split('=', 1) # Only the first
response_cookies[cookie_name.strip()] = cookie_value.strip()
return Response(
status=response.status,
text=response_data.decode('latin-1'),
is_json=("json" in content_type),
content=response_data,
headers=response_headers,
cookies=response_cookies,
redirect_url=redirect_url,
response_time=response_time,
timeout=self.timeout,
)
def _handle_error(self, e: Union[urllib.error.URLError, urllib.error.HTTPError]) -> None:
"""
Handle request error.
"""
if not HTTP_DISABLE_ERROR:
logging.error(f"Request failed for URL '{self.url}': {parse_http_error(str(e))}")
if self.attempt < self.retries:
logging.error(f"Retry request for URL '{self.url}' (attempt {self.attempt}/{self.retries})")
time.sleep(HTTP_DELAY)
else:
logging.error(f"Maximum retries reached for URL '{self.url}'")
raise RequestError(str(e))
class ValidateRequest:
"""
Class for validating request inputs.
"""
@staticmethod
def validate_url(url: str) -> bool:
"""Validate URL format."""
url_regex = re.compile(
r'^(?:http|ftp)s?://' # http:// or https://
r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+[A-Z]{2,6}\.?|' # domain...
r'localhost|' # localhost...
r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', re.IGNORECASE)
return re.match(url_regex, url) is not None
@staticmethod
def validate_headers(headers: Dict[str, str]) -> bool:
"""Validate header values."""
for key, value in headers.items():
if not isinstance(key, str) or not isinstance(value, str):
return False
return True
class ValidateResponse:
"""
Class for validating response data.
"""
@staticmethod
def is_valid_json(data: str) -> bool:
"""Check if response data is a valid JSON."""
try:
json.loads(data)
return True
except ValueError:
return False
class SSLHandler:
"""Class for handling SSL certificates."""
@staticmethod
def load_certificate(custom_cert_path: str) -> None:
"""Load custom SSL certificate."""
ssl_context = ssl.create_default_context(cafile=custom_cert_path)
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE
class KwargsRequest(TypedDict, total = False):
url: str
headers: Optional[Dict[str, str]] = None
timeout: float = HTTP_TIMEOUT
retries: int = HTTP_RETRIES
params: Optional[Dict[str, str]] = None
cookies: Optional[Dict[str, str]] = None
verify_ssl: bool = True
json_data: Optional[Dict[str, Any]] = None
class Request:
"""
Class for making HTTP requests.
"""
def __init__(self) -> None:
# Ensure SSL certificate is set up
self.__setup_ssl_certificate__()
def __setup_ssl_certificate__(self):
"""
Set up SSL certificate environment variables.
"""
try:
# Determine the Python executable
python_executable = sys.executable
logging.info("Python path: ", python_executable)
# Check if certifi package is installed, install it if not
if subprocess.run([python_executable, "-c", "import certifi"], capture_output=True).returncode != 0:
subprocess.run(["pip", "install", "certifi"], check=True)
logging.info("Installed certifi package.")
# Get path to SSL certificate
cert_path = subprocess.run([python_executable, "-c", "import certifi; print(certifi.where())"], capture_output=True, text=True, check=True).stdout.strip()
logging.info("Path cert: ", cert_path)
if not cert_path:
raise ValueError("Unable to determine the path to the SSL certificate.")
# Set SSL certificate environment variables
os.environ['SSL_CERT_FILE'] = cert_path
os.environ['REQUESTS_CA_BUNDLE'] = cert_path
except subprocess.CalledProcessError as e:
raise ValueError(f"Error executing subprocess: {e}") from e
def get(self, url: str, **kwargs: Unpack[KwargsRequest])-> 'Response':
"""
Send a GET request.
Args:
- url (str): The URL to which the request will be sent.
**kwargs: Additional keyword arguments for the request.
Returns:
Response: The response object.
"""
return self._send_request(url, 'GET', **kwargs)
def post(self, url: str, **kwargs: Unpack[KwargsRequest]) -> 'Response':
"""
Send a POST request.
Args:
- url (str): The URL to which the request will be sent.
**kwargs: Additional keyword arguments for the request.
Returns:
Response: The response object.
"""
return self._send_request(url, 'POST', **kwargs)
def head(self, url: str, **kwargs: Unpack[KwargsRequest]) -> 'Response':
"""
Send a HEAD request.
Args:
- url (str): The URL to which the request will be sent.
**kwargs: Additional keyword arguments for the request.
Returns:
Response: The response object.
"""
return self._send_request(url, 'HEAD', **kwargs)
def _send_request(self, url: str, method: str, **kwargs: Unpack[KwargsRequest]) -> 'Response':
"""Send an HTTP request."""
if not ValidateRequest.validate_url(url):
raise ValueError("Invalid URL format")
if 'headers' in kwargs and not ValidateRequest.validate_headers(kwargs['headers']):
raise ValueError("Invalid header values")
return ManageRequests(url, method, **kwargs).send()
# Output
requests: Request = Request()

View File

@ -1,3 +0,0 @@
# 04.4.24
from .user_agent import ua

View File

@ -1,112 +0,0 @@
# 04.4.24
import logging
import re
import os
import random
import threading
import json
import tempfile
from typing import Dict, List
# Internal libraries
from Src.Lib.Request import requests
def get_browser_user_agents_online(browser: str) -> List[str]:
"""
Retrieve browser user agent strings from a website.
Args:
- browser (str): The name of the browser (e.g., 'chrome', 'firefox', 'safari').
Returns:
List[str]: List of user agent strings for the specified browser.
"""
url = f"https://useragentstring.com/pages/{browser}/"
try:
# Make request and find all user agents
html = requests.get(url).text
browser_user_agents = re.findall(r"<a href=\'/.*?>(.+?)</a>", html, re.UNICODE)
return [ua for ua in browser_user_agents if "more" not in ua.lower()]
except Exception as e:
logging.error(f"Failed to fetch user agents for '{browser}': {str(e)}")
return []
def update_user_agents(browser_name: str, browser_user_agents: Dict[str, List[str]]) -> None:
"""
Update browser user agents dictionary with new requests.
Args:
- browser_name (str): Name of the browser.
- browser_user_agents (Dict[str, List[str]]): Dictionary to store browser user agents.
"""
browser_user_agents[browser_name] = get_browser_user_agents_online(browser_name)
def create_or_update_user_agent_file() -> None:
"""
Create or update the user agent file with browser user agents.
"""
user_agent_file = os.path.join(tempfile.gettempdir(), 'fake_user_agent.json')
logging.info(f"Upload file: {user_agent_file}")
if not os.path.exists(user_agent_file):
browser_user_agents: Dict[str, List[str]] = {}
threads = []
for browser_name in ['chrome', 'firefox', 'safari']:
t = threading.Thread(target=update_user_agents, args=(browser_name, browser_user_agents))
threads.append(t)
t.start()
for t in threads:
t.join()
with open(user_agent_file, 'w') as f:
json.dump(browser_user_agents, f, indent=4)
logging.info(f"User agent file created at: {user_agent_file}")
else:
logging.info("User agent file already exists.")
class UserAgentManager:
"""
Manager class to access browser user agents from a file.
"""
def __init__(self):
# Get path to temp file where save all user agents
self.user_agent_file = os.path.join(tempfile.gettempdir(), 'fake_user_agent.json')
logging.info(f"Check file: {self.user_agent_file}")
# If file dont exist, creaet it
if not os.path.exists(self.user_agent_file):
create_or_update_user_agent_file()
logging.info(f"Create file: {self.user_agent_file}")
def get_random_user_agent(self, browser: str) -> str:
"""
Get a random user agent for the specified browser.
Args:
browser (str): The name of the browser ('chrome', 'firefox', 'safari').
Returns:
Optional[str]: Random user agent string for the specified browser.
"""
with open(self.user_agent_file, 'r') as f:
browser_user_agents = json.load(f)
return random.choice(browser_user_agents.get(browser.lower(), []))
# Output
ua: UserAgentManager = UserAgentManager()

View File

@ -10,7 +10,7 @@ from Src.Util.console import console
# External library
from Src.Lib.Request import requests
import requests
# Variable
@ -62,5 +62,4 @@ def update():
console.print(f"[red]{repo_name} has been downloaded [yellow]{total_download_count} [red]times, but only [yellow]{percentual_stars}% [red]of users have starred it.\n\
[cyan]Help the repository grow today by leaving a [yellow]star [cyan]and [yellow]sharing [cyan]it with others online!")
time.sleep(1)
console.print("\n")

View File

@ -1,5 +1,5 @@
__title__ = 'Streaming_community'
__title__ = 'StreamingCommunity'
__version__ = 'v1.1.0'
__author__ = 'Ghost6446'
__author__ = 'Lovi-0'
__description__ = 'A command-line program to download film'
__copyright__ = 'Copyright 2024'

View File

@ -3,8 +3,12 @@
import logging
# Internal utilities
from Src.Lib.UserAgent import ua
# External library
import fake_useragent
# Variable
useragent = fake_useragent.UserAgent()
def get_headers() -> str:
@ -12,11 +16,8 @@ def get_headers() -> str:
Generate a random user agent to use in HTTP requests.
Returns:
str: A random user agent string.
- str: A random user agent string.
"""
# Get a random user agent string from the user agent rotator
random_headers = ua.get_random_user_agent("firefox")
#logging.info(f"Use headers: {random_headers}")
return random_headers
return useragent.firefox

View File

@ -53,7 +53,3 @@ class Logger:
formatter = logging.Formatter('[%(filename)s:%(lineno)s - %(funcName)20s() ] %(asctime)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
logging.getLogger('').addHandler(file_handler)
# Output
logger = Logger()

View File

@ -41,7 +41,7 @@ def start_message():
if SHOW:
console.print(f"[bold yellow]{msg}")
console.print(f"[magenta]Created by: Ghost6446\n")
console.print(f"[magenta]Created by: Lovi\n")
row = "-" * console.width
console.print(f"[yellow]{row} \n")

View File

@ -16,6 +16,7 @@ import platform
import importlib
import subprocess
import contextlib
import urllib.request
import importlib.metadata
from typing import List
@ -403,6 +404,19 @@ def convert_to_hex(bytes_data: bytes) -> str:
# --> OS GET SUMMARY
def check_internet():
while True:
try:
# Attempt to open a connection to a website to check for internet connection
urllib.request.urlopen("http://www.google.com", timeout=1)
console.log("[bold green]Internet is available![/bold green]")
break
except urllib.error.URLError:
console.log("[bold red]Internet is not available. Waiting...[/bold red]")
time.sleep(5)
print()
def get_executable_version(command):
try:
version_output = subprocess.check_output(command, stderr=subprocess.STDOUT).decode().split('\n')[0]
@ -419,7 +433,8 @@ def get_library_version(lib_name):
return f"{lib_name}-not installed"
def get_system_summary():
check_internet()
console.print("[bold blue]System Summary[/bold blue][white]:")
# Python version and platform
@ -442,7 +457,7 @@ def get_system_summary():
logging.info(f"Exe versions: ffmpeg {ffmpeg_version}, ffprobe {ffprobe_version}")
# Optional libraries versions
optional_libraries = ['bs4', 'certifi', 'tqdm', 'rich', 'unidecode']
optional_libraries = [line.strip() for line in open('requirements.txt', 'r', encoding='utf-8-sig')]
optional_libs_versions = [get_library_version(lib) for lib in optional_libraries]
console.print(f"[cyan]Libraries[white]: [bold red]{', '.join(optional_libs_versions)}[/bold red]\n")

View File

@ -5,9 +5,6 @@ import json
from bs4 import BeautifulSoup
# https://onshopify.com/domains/
# URL of the webpage containing the table
url = 'https://icannwiki.org/New_gTLD_Generic_Applications'
@ -84,5 +81,6 @@ def main():
with open('data.json', 'w') as json_file:
json.dump(data, json_file)
if __name__ == '__main__':
main()

View File

@ -4,10 +4,667 @@
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-KEY:METHOD=AES-128,URI="/storage/enc.key",IV=0x43A6D967D5C17290D98322F5C8F6660B
#EXTINF:4.010667,
https://sc-u10-01.scws-content.net/hls/40/6/58/6585b748-cef6-4048-a9ab-c01b9366c3b9/audio/ita/0000-0100.ts
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0000-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u10-01.scws-content.net/hls/40/6/58/6585b748-cef6-4048-a9ab-c01b9366c3b9/audio/ita/0001-0100.ts
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0001-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u10-01.scws-content.net/hls/40/6/58/6585b748-cef6-4048-a9ab-c01b9366c3b9/audio/ita/0002-0075.ts
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0002-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0003-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0004-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0005-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0006-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0007-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0008-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0009-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0010-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0011-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0012-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0013-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0014-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0015-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0016-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0017-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0018-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0019-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0020-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0021-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0022-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0023-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0024-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0025-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0026-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0027-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0028-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0029-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0030-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0031-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0032-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0033-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0034-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0035-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0036-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0037-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0038-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0039-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0040-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0041-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0042-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0043-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0044-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0045-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0046-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0047-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0048-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0049-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0050-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0051-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0052-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0053-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0054-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0055-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0056-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0057-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0058-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0059-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0060-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0061-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0062-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0063-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0064-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0065-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0066-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0067-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0068-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0069-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0070-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0071-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0072-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0073-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0074-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0075-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0076-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0077-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0078-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0079-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0080-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0081-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0082-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0083-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0084-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0085-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0086-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0087-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0088-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0089-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0090-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0091-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0092-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0093-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0094-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0095-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0096-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0097-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0098-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0099-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0100-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0101-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0102-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0103-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0104-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0105-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0106-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0107-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0108-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0109-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0110-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0111-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0112-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0113-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0114-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0115-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0116-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0117-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0118-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0119-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0120-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0121-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0122-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0123-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0124-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0125-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0126-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0127-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0128-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0129-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0130-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0131-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0132-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0133-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0134-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0135-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0136-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0137-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0138-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0139-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0140-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0141-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0142-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0143-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0144-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0145-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0146-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0147-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0148-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0149-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0150-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0151-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0152-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0153-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0154-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0155-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0156-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0157-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0158-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0159-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0160-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0161-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0162-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0163-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0164-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0165-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0166-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0167-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0168-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0169-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0170-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0171-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0172-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0173-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0174-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0175-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0176-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0177-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0178-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0179-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0180-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0181-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0182-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0183-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0184-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0185-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0186-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0187-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0188-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0189-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0190-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0191-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0192-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0193-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0194-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0195-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0196-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0197-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0198-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0199-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0200-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0201-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0202-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0203-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0204-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0205-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0206-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0207-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0208-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0209-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0210-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0211-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0212-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0213-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0214-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0215-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0216-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0217-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0218-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0219-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0220-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0221-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0222-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0223-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0224-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0225-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0226-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0227-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0228-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0229-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0230-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0231-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0232-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0233-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0234-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0235-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0236-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0237-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0238-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0239-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0240-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0241-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0242-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0243-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0244-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0245-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0246-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0247-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0248-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0249-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0250-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0251-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0252-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0253-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0254-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0255-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0256-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0257-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0258-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0259-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0260-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0261-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0262-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0263-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0264-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0265-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0266-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0267-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0268-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0269-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0270-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0271-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0272-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0273-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0274-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0275-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0276-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0277-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0278-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0279-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0280-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0281-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0282-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0283-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0284-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0285-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0286-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0287-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0288-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0289-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0290-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0291-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0292-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0293-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0294-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0295-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0296-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0297-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0298-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0299-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0300-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0301-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0302-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0303-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0304-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0305-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0306-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0307-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0308-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0309-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0310-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0311-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0312-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0313-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0314-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0315-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0316-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0317-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0318-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0319-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0320-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0321-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0322-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0323-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0324-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0325-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0326-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0327-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0328-0100.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:3.989333,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0329-0075.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:4.010667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0330-0025.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXTINF:0.266667,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/audio/ita/0331-0025.ts?token=r1bvf1Wwun-McFrLkW1jyQ&expires=1722499729
#EXT-X-ENDLIST

View File

@ -4,10 +4,667 @@
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-KEY:METHOD=AES-128,URI="/storage/enc.key",IV=0x43A6D967D5C17290D98322F5C8F6660B
#EXTINF:4,
https://sc-u10-01.scws-content.net/hls/40/6/58/6585b748-cef6-4048-a9ab-c01b9366c3b9/video/720p/0000-0250.ts
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0000-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u10-01.scws-content.net/hls/40/6/58/6585b748-cef6-4048-a9ab-c01b9366c3b9/video/720p/0001-0250.ts
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0001-0250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u10-01.scws-content.net/hls/40/6/58/6585b748-cef6-4048-a9ab-c01b9366c3b9/video/720p/0002-0075.ts
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0002-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0003-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0004-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0005-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0006-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0007-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0008-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0009-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0010-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0011-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0012-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0013-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0014-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0015-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0016-1750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0017-2000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0018-1500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0019-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0020-1500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0021-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0022-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0023-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0024-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0025-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0026-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0027-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0028-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0029-2000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0030-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0031-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0032-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0033-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0034-1500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0035-3000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0036-2000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0037-2000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0038-2000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0039-2000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0040-2500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0041-1750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0042-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0043-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0044-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0045-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0046-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0047-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0048-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0049-1750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0050-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0051-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0052-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0053-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0054-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0055-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0056-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0057-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0058-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0059-0250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0060-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0061-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0062-2500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0063-2000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0064-2500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0065-2000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0066-1750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0067-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0068-1750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0069-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0070-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0071-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0072-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0073-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0074-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0075-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0076-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0077-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0078-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0079-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0080-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0081-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0082-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0083-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0084-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0085-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0086-1750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0087-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0088-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0089-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0090-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0091-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0092-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0093-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0094-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0095-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0096-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0097-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0098-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0099-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0100-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0101-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0102-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0103-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0104-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0105-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0106-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0107-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0108-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0109-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0110-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0111-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0112-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0113-1500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0114-2000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0115-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0116-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0117-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0118-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0119-1500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0120-1500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0121-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0122-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0123-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0124-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0125-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0126-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0127-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0128-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0129-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0130-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0131-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0132-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0133-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0134-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0135-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0136-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0137-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0138-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0139-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0140-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0141-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0142-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0143-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0144-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0145-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0146-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0147-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0148-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0149-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0150-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0151-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0152-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0153-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0154-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0155-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0156-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0157-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0158-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0159-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0160-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0161-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0162-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0163-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0164-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0165-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0166-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0167-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0168-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0169-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0170-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0171-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0172-1500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0173-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0174-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0175-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0176-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0177-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0178-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0179-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0180-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0181-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0182-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0183-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0184-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0185-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0186-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0187-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0188-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0189-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0190-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0191-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0192-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0193-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0194-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0195-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0196-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0197-1500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0198-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0199-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0200-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0201-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0202-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0203-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0204-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0205-1500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0206-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0207-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0208-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0209-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0210-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0211-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0212-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0213-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0214-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0215-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0216-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0217-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0218-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0219-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0220-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0221-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0222-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0223-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0224-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0225-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0226-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0227-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0228-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0229-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0230-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0231-1500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0232-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0233-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0234-1500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0235-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0236-1750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0237-1500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0238-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0239-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0240-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0241-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0242-1750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0243-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0244-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0245-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0246-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0247-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0248-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0249-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0250-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0251-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0252-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0253-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0254-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0255-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0256-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0257-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0258-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0259-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0260-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0261-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0262-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0263-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0264-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0265-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0266-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0267-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0268-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0269-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0270-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0271-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0272-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0273-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0274-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0275-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0276-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0277-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0278-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0279-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0280-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0281-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0282-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0283-1500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0284-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0285-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0286-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0287-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0288-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0289-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0290-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0291-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0292-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0293-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0294-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0295-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0296-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0297-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0298-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0299-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0300-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0301-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0302-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0303-1750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0304-1500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0305-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0306-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0307-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0308-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0309-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0310-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0311-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0312-1750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0313-0750.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0314-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0315-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0316-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0317-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0318-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0319-1000.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0320-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0321-1250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0322-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0323-0075.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0324-0125.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0325-0250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0326-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0327-0500.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0328-0250.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0329-0100.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:4,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0330-0100.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXTINF:0.25,
https://sc-u2-01.scws-content.net/hls/190/4/13/4130abf2-c2e7-4b66-8907-f11b4ee38a27/video/1080p/0331-0050.ts?token=Yce8pl2-m8bk6uQvq7W0fg&expires=1722499729
#EXT-X-ENDLIST

View File

@ -1,11 +1,12 @@
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="Italian",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="ita",URI="https://vixcloud.co/playlist/213349?type=audio&rendition=ita&token=J0FBqnixXmTN24xdMdxAVg&expires=1720013276"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English [CC]",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="eng",URI="https://vixcloud.co/playlist/213349?type=subtitle&rendition=3-eng&token=J0FBqnixXmTN24xdMdxAVg&expires=1720013276"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Czech",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="cze",URI="https://vixcloud.co/playlist/213349?type=subtitle&rendition=4-cze&token=J0FBqnixXmTN24xdMdxAVg&expires=1720013276"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="Italian",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="ita",URI="https://vixcloud.co/playlist/175761?type=audio&rendition=ita&token=AfHdAGc26qqpBDVFAdKJCQ&expires=1722501194&edge=sc-u2-01"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="English",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="eng",URI="https://vixcloud.co/playlist/175761?type=audio&rendition=eng&token=AfHdAGc26qqpBDVFAdKJCQ&expires=1722501194&edge=sc-u2-01"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="eng",URI="https://vixcloud.co/playlist/175761?type=subtitle&rendition=eng&token=AfHdAGc26qqpBDVFAdKJCQ&expires=1722501194&edge=sc-u2-01"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Italian [Forced]",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="forced-ita",URI="https://vixcloud.co/playlist/175761?type=subtitle&rendition=forced-ita&token=AfHdAGc26qqpBDVFAdKJCQ&expires=1722501194&edge=sc-u2-01"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Italian",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="ita",URI="https://vixcloud.co/playlist/175761?type=subtitle&rendition=ita&token=AfHdAGc26qqpBDVFAdKJCQ&expires=1722501194&edge=sc-u2-01"
#EXT-X-STREAM-INF:BANDWIDTH=1200000,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=854x480,AUDIO="audio",SUBTITLES="subs"
https://vixcloud.co/playlist/213349?type=video&rendition=480p&token=WcQHF0VYTJnnWXRVzGyI4A&expires=1720013276
https://vixcloud.co/playlist/175761?type=video&rendition=480p&token=VQk6xhvJbSGMsktylrOqLg&expires=1722501194&edge=sc-u2-01
#EXT-X-STREAM-INF:BANDWIDTH=2150000,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1280x720,AUDIO="audio",SUBTITLES="subs"
https://vixcloud.co/playlist/213349?type=video&rendition=720p&token=pYMwBEGivMnsWlzTJodYQw&expires=1720013276
https://vixcloud.co/playlist/175761?type=video&rendition=720p&token=ecGWDJYeeYgEJTP_fjDQKQ&expires=1722501194&edge=sc-u2-01
#EXT-X-STREAM-INF:BANDWIDTH=4500000,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1920x1080,AUDIO="audio",SUBTITLES="subs"
https://vixcloud.co/playlist/175761?type=video&rendition=1080p&token=AhO8JTM1VfOMfrZFpEfjUw&expires=1722501194&edge=sc-u2-01

View File

@ -1,10 +0,0 @@
{
"2024-5": {
"token": "csVhbgxqG_z_tjvJiy1IiA",
"token360p": "",
"token480p": "S7MTy30iN4BcxC-sXt0fOw",
"token720p": "fW_SEvaLezh5bD_iKDxcpw",
"token1080p": "HSuRzJwwFYR55KhtOAC85Q",
"expires": "1720963565"
}
}

View File

@ -0,0 +1,86 @@
# 13.05.24
import socket
import logging
import urllib3
from urllib.parse import urlparse, urlunparse
import warnings
warnings.filterwarnings("ignore", category=urllib3.exceptions.InsecureRequestWarning)
# Variable
url_test = "https://sc-b1-18.scws-content.net/hls/100/b/d3/bd3a430d-0a13-4bec-8fcc-ea41af183555/audio/ita/0010-0100.ts?token=CiEPTIyvEoTkGk3szgDu9g&expires=1722801022"
def get_ip_from_url(url):
"""
Extracts the IP address from a given URL.
Args:
url (str): The URL from which to extract the IP address.
Returns:
str or None: The extracted IP address if successful, otherwise None.
"""
try:
parsed_url = urlparse(url)
if not parsed_url.hostname:
logging.error(f"Invalid URL: {url}")
return None
ip_address = socket.gethostbyname(parsed_url.hostname)
return ip_address
except Exception as e:
logging.error(f"Error: {e}")
return None
def replace_random_number(url, random_number):
"""
Replaces a random number in the URL.
Args:
url (str): The URL in which to replace the random number.
random_number (int): The random number to replace in the URL.
Returns:
str: The modified URL with the random number replaced.
"""
parsed_url = urlparse(url)
parts = parsed_url.netloc.split('.')
prefix = None
for i, part in enumerate(parts):
if '-' in part and part.startswith("sc-"):
prefix = part.split('-')[0] + '-' + part.split('-')[1] + '-'
new_part = prefix + f"{random_number:02d}"
parts[i] = new_part
break
new_netloc = '.'.join(parts)
return urlunparse((parsed_url.scheme, new_netloc, parsed_url.path, parsed_url.params, parsed_url.query, parsed_url.fragment))
def main():
"""
Main function to test the URL manipulation.
"""
valid_ip = []
for i in range(1, 36):
try:
ip = get_ip_from_url(replace_random_number(url_test, i))
if ip:
valid_ip.append(ip)
except Exception as e:
logging.error(f"Error: {e}")
pass
print(f"Valid IP addresses: {sorted(valid_ip, reverse=True)}")
if __name__ == '__main__':
main()

View File

@ -23,23 +23,15 @@ from Src.Lib.M3U8 import M3U8_Parser
# Test data
obj_m3u8_parser = M3U8_Parser()
base_path_file = os.path.join('Test', 'data', 'm3u8')
# Collect all index
index_video = read_file(os.path.join(base_path_file, "index_video.m3u8"))
index_audio = read_file(os.path.join(base_path_file, "index_audio.m3u8"))
index_subtitle = read_file(os.path.join(base_path_file,"index_subtitle.m3u8"))
index_video = read_file(os.path.join(base_path_file, "index_video.m3u8"))
playlist = read_file(os.path.join(base_path_file, "playlist.m3u8"))
print("AUDIO: ")
print(M3U8(index_audio).data)
print()
print("SUBTITLE: ")
print(M3U8(index_subtitle).data)
print()
print("INDEX: ")
print(M3U8(index_video).data)
print()
print("PLAYLIST: ")
print(M3U8(playlist).data)
# Test class
obj_m3u8_parser.parse_data("http", index_audio)
print(f"Duration : {obj_m3u8_parser.get_duration()}")

View File

@ -10,7 +10,6 @@
"not_close": false
},
"REQUESTS": {
"disable_error": false,
"timeout": 10,
"max_retry": 3,
"verify_ssl": false,
@ -18,7 +17,7 @@
"segments": { "user-agent": ""}
},
"M3U8_DOWNLOAD": {
"tdqm_workers": 30,
"tdqm_workers": 4,
"tqdm_use_large_bar": true,
"download_video": true,
"download_audio": true,
@ -32,7 +31,10 @@
},
"M3U8_CONVERSION": {
"use_codec": false,
"use_gpu": false,
"use_vcodec": true,
"use_acodec": true,
"use_bitrate": true,
"use_gpu": true,
"default_preset": "ultrafast",
"check_output_after_ffmpeg": false
},

View File

@ -1,4 +1,7 @@
bs4
requests
bs4
certifi
tqdm
rich
unidecode
unidecode
fake-useragent

64
run.py
View File

@ -27,34 +27,6 @@ from Src.Api.Altadefinizione import main_film as altadefinizione_film
CLOSE_CONSOLE = config_manager.get_bool('DEFAULT', 'not_close')
def initialize():
"""
Initialize the application.
Checks Python version, removes temporary folder, and displays start message.
"""
# Set terminal size for win 7
if platform.system() == "Windows" and "7" in platform.version():
os.system('mode 120, 40')
# Check python version
if sys.version_info < (3, 7):
console.log("[red]Install python version > 3.7.16")
sys.exit(0)
# Removing temporary folder
start_message()
# Attempting GitHub update
"""try:
git_update()
except Exception as e:
console.print(f"[blue]Req github [white]=> [red]Failed: {e}")"""
def run_function(func: Callable[..., None], close_console: bool = False) -> None:
"""
Run a given function indefinitely or once, depending on the value of close_console.
@ -63,9 +35,6 @@ def run_function(func: Callable[..., None], close_console: bool = False) -> None
func (Callable[..., None]): The function to run.
close_console (bool, optional): Whether to close the console after running the function once. Defaults to False.
"""
initialize()
if close_console:
while 1:
func()
@ -73,11 +42,40 @@ def run_function(func: Callable[..., None], close_console: bool = False) -> None
func()
def main():
def initialize():
"""
Initialize the application.
Checks Python version, removes temporary folder, and displays start message.
"""
start_message()
# Create logger
log_not = Logger()
# Get system info
get_system_summary()
# Set terminal size for win 7
if platform.system() == "Windows" and "7" in platform.version():
os.system('mode 120, 40')
# Check python version
if sys.version_info < (3, 7):
console.log("[red]Install python version > 3.7.16")
sys.exit(0)
# Attempting GitHub update
try:
git_update()
except Exception as e:
console.print(f"[blue]Req github [white]=> [red]Failed: {e}")
def main():
initialize()
# Parse command line arguments
parser = argparse.ArgumentParser(description='Script to download film and series from the internet.')
parser.add_argument('-sa', '--streaming_anime', action='store_true', help='Check into anime category')