У меня есть функция, чтобы определить тип ошибки в файле журнала программы youtube-dl. для проверки, какой тип ошибки мне нужно использовать несколько preg_match. проблема в том, что я думаю, что это не самый лучший способ, и я думаю, что он слишком медленный для рендеринга этого кода. У кого-нибудь есть другой способ или пример, чтобы сделать быстрый рендеринг кода?
private function getError(){
$message = $this->log_output;
$output = null;
if (preg_match('/ERROR(.*)please sign in to view this video|video is protected by a password/i', $message)) {
$output= Translate::doInternal('Video protetto da password');
}elseif (preg_match('/ERROR(.*)Playback on other websites has been disabled/', $message)){
$output= Translate::doInternal('Video non scaricabile, è stata imposta la visualizzazione solo sul sito di youtube');
}elseif (preg_match('/ERROR(.*)copyright infringement/i', $message)||preg_match('/copyright claim/i', $message)||preg_match('/copyright grounds/i', $message)) {
$output= Translate::doInternal('Video rimosso per motivi di copyright');
}elseif (preg_match('/ERROR(.*)this video does not exist/i', $message)) {
$output= Translate::doInternal('Video inesistente');
}elseif (preg_match('/ERROR(.*)account associated with this video has been terminated/', $message)) {
$output= Translate::doInternal('Video con account chiuso');
}elseif (preg_match('/ERROR(.*)This video is unavailable/i', $message)) {
$output= Translate::doInternal('Video Privato o non disponibile');
}elseif (preg_match('/ERROR(.*)This video contains content from/', $message)) {
$output= Translate::doInternal('Video non disponibile per motivi di copyright');
}elseif (preg_match('/ERROR(.*)This video has been removed by the user/i', $message)) {
$output= Translate::doInternal('Video rimosso dall\'utente youtube');
}elseif (preg_match('/ERROR(.*)This video is unavailable/i', $message)) {
$output= Translate::doInternal('Video Privato o non disponibile');
}elseif (preg_match('/ERROR(.*)This video is not available/i', $message)){
$output= Translate::doInternal('Questo video non è disponibile');
}elseif (preg_match('/ERROR(.*)The uploader has not made this video available in your country/i', $message)){
$output= Translate::doInternal('Video non disponibile, è stato imposto blocco di paese');
}elseif (preg_match('/ERROR(.*)Video geo-restricted by the owner/', $message)){
$output= Translate::doInternal('Video geo-limitato dal proprietario');
}elseif (preg_match('/ERROR(.*)Unsupported URL: /i', $message)){
$output= Translate::doInternal('Player non rilevato oppure questo sito non è riconosciuto');
}elseif (preg_match('/ERROR(.*)This video is only available for registered users. /i', $message)){
$output= Translate::doInternal('Questo video non è scaricabile perchè è un profilo privato');
}elseif (preg_match('/ERROR(.*)Access denied to video /', $message)){
$output= Translate::doInternal('Questo video non è scaricabile perchè è un profilo privato');
}elseif (preg_match('/ERROR(.*)caused by URLError/', $message)){
$output= Translate::doInternal('Questo URL non è valido, controlla e riprova');
}elseif (preg_match('/ERROR(.*); please report this issue on/i', $message)){
$output= Translate::doInternal('Errore di estrazione video');
}elseif (preg_match('/ERROR(.*)HTTP Error 403/', $message)){
$output= Translate::doInternal('Errore temporaneo su youtube, RIPROVA');
}elseif (preg_match('/ERROR(.*)No login info available, needed for using youtube/', $message)){
$output= Translate::doInternal('Questo/i video richiedono l\'accesso a youtube, impossibile da scaricare');
}elseif (preg_match('/ERROR(.*)Content Warning/', $message)){
$output= Translate::doInternal('Questo video richiede l\'accesso a youtube per contenuti espliciti, verrà trovata una soluzione prima possibile.');
}elseif (preg_match('/ERROR(.*)This live stream recording is not available/', $message)){
$output= Translate::doInternal('La live registrata per questo video non è disponibile.');
}elseif (preg_match('/ERROR(.*)Upgrade now to enjoy this video Start Your Free Week Already a Premium member\? Log in or Sign up/', $message)){
$output= Translate::doInternal('Questo video richiede l\'accesso all\'account premium, non posso scaricarlo.');
}elseif (preg_match('/ERROR(.*)The uploader has not made this video available/', $message)){
$output= Translate::doInternal('L\'autore del caricamento non ha reso disponibile questo video');
}elseif (preg_match('/ERROR(.*)who has blocked it from display on this website or application/', $message)){
$output= Translate::doInternal('L\'autore del caricamento non ha reso disponibile questo video per il download');
}elseif (preg_match('/ERROR(.*)unable to download video data/', $message)){
$output= Translate::doInternal('Errore temporaneo, RIPROVA');
}elseif (preg_match('/ERROR(.*)This video is no longer available because the uploader has closed their YouTube account/', $message)){
$output= Translate::doInternal('Questo video non è più disponibile perché l\'autore del caricamento ha chiuso il suo account YouTube');
}elseif (preg_match('/ERROR(.*)This video has been removed for violating YouTube\'s Terms of Service/', $message)){
$output= Translate::doInternal('Questo video è stato rimosso per violazione dei Termini di servizio di YouTube');
}elseif (preg_match('/ERROR(.*)This video is only available to Music Premium members/', $message)){
$output= Translate::doInternal('Questo video disponibile solo per i membri di Music Premium');
}elseif (preg_match('/ERROR(.*)This video requires payment to watch/', $message)){
$output= Translate::doInternal('Questo video non è scaricabile perchè richiede un abbonamento a Youtube');
}elseif (preg_match('/ERROR(.*)Filtering and streamcopy cannot be used together/', $message)){
//Logger::setLog($this->id,'errore di aumento volume !');
$output= Translate::doInternal('Errore durante l\'aumento volume, lo sviluppatore è già al corrente di questo tipo di errore, verrà sistemato al più presto.');
}elseif (preg_match('/ERROR(.*)audio conversion failed/', $message)){
//Logger::setLog($this->id,'Errore di conversione audio, codec non riconosciuto.');
$output= Translate::doInternal('Errore di conversione audio, codec non riconosciuto, questo errore è già stato segnalato al coder dell\'applicazione');
}elseif (preg_match('/ERROR(.*)giving up after 10 retries/', $message)){
// Logger::setLog($this->id,'giving up after 10 retries');
$output= Translate::doInternal('Qualcosa su youtube non funziona in questo video. non riesco a scaricarlo neanche dopo 10 tentativi, riprova più tardi');
}
elseif (preg_match('/ExtractorError(.*)/', $message, $output)){
Logger::setLog($this->id, $output[1]);
$output= Translate::doInternal('Errore generico , riprova');
}elseif (preg_match('/ERROR: (.*)/', $message, $output)) {
Logger::setLog($this->id, $output[1]);
$output= Translate::doInternal('Errore generico , riprova');
}elseif (preg_match('/EOFError: (.*)/', $message, $output)) {
Logger::setLog($this->id, $output[1]);
$output= Translate::doInternal('Errore su proxy generico , riprova');
}elseif (preg_match('/TypeError:(.*)/', $message, $output)){
Logger::setLog($this->id, $output[1]);
$output= Translate::doInternal('Errore generico , riprova');
}elseif (preg_match('/ValueError:(.*)/', $message, $output)){
Logger::setLog($this->id, $output[1]);
$output= Translate::doInternal('Errore generico , riprova');
}elseif (preg_match('/\[download\](.*)does not pass filter (.*), skipping ../', $message)){
$output= Translate::doInternal('Video non scaricabile, questo video è una live oppure supera la durata consentita di 3 ore');
}
return $output;
}