curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, ['tuto-csrf' => $csrf_token, 'login' => urlencode($cli->arguments->get('user')), 'pwd' => urlencode($cli->arguments->get('password')), 'submit_login' => 'se+connecter']);
curl_setopt($curl, CURLOPT_HTTPHEADER, $browser_headers);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
$result_login = curl_exec($curl);
curl_close($curl);
if (false !== strpos($result_login, 'Il y a eu des erreurs lors de la validation')) {
    $cli->inline('[')->red()->inline('FAIL')->white()->out(']');
    $cli->red()->out('Please verify the email and the password!');
    clean_and_die();
}
$cli->inline('[ ')->green()->inline('OK')->white()->out(' ]');
// Tutorials
$video_links = [];
$cli->blue()->out('Downloading ' . count($input_ids) . ' tutorials');
foreach ($input_ids as $input_id) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'http://fr.tuto.com/compte/achats/video/' . $input_id . '/player/');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_COOKIESESSION, true);
    curl_setopt($curl, CURLOPT_COOKIEJAR, OUTPUT_DIR . 'tmp_cookies.txt');
    curl_setopt($curl, CURLOPT_COOKIEFILE, OUTPUT_DIR . 'tmp_cookies.txt');
    curl_setopt($curl, CURLOPT_HTTPHEADER, $browser_headers);
    $tutorial_page = curl_exec($curl);
    curl_close($curl);
    $tutorial_title = preg_replace('/.+span class="title-22">([^<]+)<\\/span>.+/s', '$1', $tutorial_page);
    $tutorial_title_sanitized = preg_replace('/.+\\/([^,]+),' . $input_id . '\\.html.+/s', '$1', $tutorial_page);
    $tutorial_playlist = json_decode(preg_replace('/.+var playlists = ([^;]+);.+/s', '$1', $tutorial_page));
    preg_match_all('/data-hash="([^"]+)" data-slug="([^"]*)">/U', $tutorial_page, $chapters_preg);
    if (0 === count($chapters_preg[0])) {