use v5.10;
use strict;

use Getopt::Long;
Getopt::Long::Configure('bundling');

my %params = (
	agent => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36', 
	id => undef, title => undef, ext => undef, start => undef, end => undef, dry_run => undef, NN => undef, TT => undef, offset => undef, print_title  => 0, load_splash => 0,
);

GetOptions(
	'agent=s' => \$params{agent}, 
	'id=i' => \$params{id}, 
	'title=s' => \$params{title}, 
	'ext=s' => \$params{ext}, 
	'start=s' => \$params{start}, 
	'end=s' => \$params{end},
	'dry-run=i' => \$params{dry_run},
	'NN=s' => \$params{NN},
	'TT=s' => \$params{TT},
	'offset=i' => \$params{offset},
	'print-title' => \$params{print_title},
	'load-splash' => \$params{load_splash},
)
or die 'GetOptions';

say ''; say "REM --- $_=$params{$_}" for sort keys %params; say '';

my $page = qx`curl -k -L -A "$params{agent}" https:/archivebate.com/watch/$params{id} 2>nul`;
$page =~ /(has been deleted)/i && do {say "$1: $params{id}"; exit};

if ($params{print_title}) {
	if ($page =~ /(\d\d)\.(\d\d)\.(\d\d) &middot;\s*\n\s*(\S+)/) {
		$params{title} = qq`($params{title}) - [20$3-$2-$1 id=$params{id} @{[lc$4]}]`;
	}
	say $params{title};
	exit;
}

my ($iframe) = $page =~ /iframe src=.(http\S+). /;
$iframe !~ /mixdrop/ && do {say "no mixdrop: $params{id}"; exit};
say $iframe;

$page = qx`curl -k -L -A "$params{agent}" $iframe 2>nul`;

my $script = join '', "var MDCore={};", (grep {/^(MDCore|eval)/i} split /\n/, $page),	";console.log(MDCore.wurl);";
$script !~ /mdcore/i && do {say "no mdcore: $params{id}"; say $page;   exit};
#--- $QQ=chr 34; $S=~s/$QQ/\\$QQ/g;
$script =~ s/"/\\"/g;

if ($params{load_splash}) {
	$script =~ s/;console.+/;console.log(MDCore.poster);/;
	my $url = "https:" . qx`e:\\etc\\jsshell-win64\\js.exe -e "$script"`;
	chomp $url;
	system qq`curl -k -L -A "$params{agent}" "$url" -o "$params{title}.jpg" 2>nul`;
	exit;
}

my $url = "https:" . qx`e:\\etc\\jsshell-win64\\js.exe -e "$script"`;
chomp $url;
say $url;
#--- say (($T) = qx`ffprobe-64 -headers "User-Agent: $ARGV[1]" -i "$U" 2>&1` =~ /Duration: ([:\d\.]+)/);

my $opt_ext = defined $params{ext} ? "--ext=$params{ext}" : '';
my $opt_start = defined $params{start} ? qq(--start="$params{start}") : '';
my $opt_end = defined $params{end} ? qq(--end="$params{end}") : '';
my $opt_dry_run = defined $params{dry_run} ? "--dry-run=$params{dry_run}" : '';
my $opt_NN = defined $params{NN} ? qq(--NN="@{[eval $params{NN}]}") : '';
my $opt_TT = defined $params{TT} ? qq(--TT="@{[eval $params{TT}]}") : '';
my $opt_offset = defined $params{offset} ? "--offset=$params{offset}" : '';

#--- system qq`perl ../../load-by-ffmpeg.8.pl --agent="$params{agent}" --url="$url" --title="$params{title}" $opt_ext $opt_start $opt_end $opt_dry_run $opt_NN $opt_TT $opt_offset`;
system qq`aaa --user-agent="$params{agent}" "$url" -o "$params{title}".mp4 -x5 --auto-file-renaming=false`;
