Correction des différents bugs

This commit is contained in:
2024-11-27 16:30:59 +01:00
parent 780798ff25
commit cda2104b11
25 changed files with 1096 additions and 334 deletions

View File

@@ -8,6 +8,7 @@ use Artesaos\SEOTools\Facades\SEOTools;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use LanguageDetector\LanguageDetector;
use Symfony\Component\BrowserKit\HttpBrowser;
use Symfony\Component\HttpClient\HttpClient;
@@ -29,7 +30,7 @@ class ContestController extends Controller
$i = 1;
while ($i < 10){
while ($i < 25){
$results = $crawler->filterXPath('//div[@class="timeline-item "]')->each(function ($node) {
$id = ($node->filterXPath('//*[@class="tweet-link"]'))->attr('href');
$created_at = ($node->filterXPath('//span[@class="tweet-date"]/a'))->attr('title');
@@ -61,7 +62,14 @@ class ContestController extends Controller
$fake = Block::where('screen_name', $screen)->first();
$containsBlacklistedWord = preg_match('/' . implode('|', array_map('preg_quote', config('twitter.giveaway_to_blacklist'), ['/'])) . '/i', $text) === 1;
if(!$contest && !$fake && $nbretweet > 100 && $containsBlacklistedWord !== true) {
$language = new LanguageDetector();
$lang = $language->evaluate($text);
$created_at = str_replace(' · ', ' ', $created_at);
$created_at = Carbon::parse($created_at)->format('Y-m-d H:i:s');
$nowMinusOneMonth = Carbon::now()->subMonth();
if(!$contest && !$fake && $nbretweet > 100 && $containsBlacklistedWord !== true && $lang == 'fr' && $created_at >= $nowMinusOneMonth){
$regex_detect_rts =
[
"/\bRT\b/",
@@ -101,6 +109,7 @@ class ContestController extends Controller
'nbretweet' => $nbretweet,
'nblike' => $nblike,
'nbreply' => $nbreply,
'created_at' => $created_at,
]);
}
@@ -125,33 +134,14 @@ class ContestController extends Controller
public function searchcontest()
{
$search = [
'giveaway',
'#concours',
'concours like',
'concours rt',
'concours follow',
'#JeuConcours',
'JeuConcours',
'jeu concours',
'offre follow gagnant',
'concours pour gagner',
'gagner rt',
'Gagnez rt follow',
'RT follow',
'concours rt like',
'concours rt fav',
'RT tweet Follow',
'concours rt follow',
'rt follow tas',
'rt follow tirage au sort',
'rt follow gagner',
'rt follow commente',
'rt suivre concours',
'rt suivez concours',
'rt suivre tirage au sort',
'rt suivre tas',
'concours remporter',
'remporter rt',
'concours tas le',
'concours résultats le rt',
'tirage au sort concours',
@@ -208,7 +198,14 @@ class ContestController extends Controller
$fake = Block::where('screen_name', $screen)->first();
$containsBlacklistedWord = preg_match('/' . implode('|', array_map('preg_quote', config('twitter.giveaway_to_blacklist'), ['/'])) . '/i', $text) === 1;
if (!$contest && !$fake && $nbretweet > 1000 && $containsBlacklistedWord !== true) {
$language = new LanguageDetector();
$lang = $language->evaluate($text);
$created_at = str_replace(' · ', ' ', $created_at);
$created_at = Carbon::parse($created_at)->format('Y-m-d H:i:s');
$nowMinusOneMonth = Carbon::now()->subMonth();
if (!$contest && !$fake && $nbretweet > 500 && $containsBlacklistedWord !== true && $lang == 'fr' && $created_at >= $nowMinusOneMonth) {
$regex_detect_rts =
[
@@ -252,6 +249,7 @@ class ContestController extends Controller
'nbretweet' => $nbretweet,
'nblike' => $nblike,
'nbreply' => $nbreply,
'created_at' => $created_at,
]);
}
@@ -438,72 +436,72 @@ class ContestController extends Controller
}
private function getDate($string) {
// Pattern pour détecter les dates au format JJ/MM ou JJ.MM
$pattern_jjmm = '/\b(\d{1,2})(\/|\.)\d{1,2}\b/';
// Pattern pour détecter les dates au format JJ/MM ou JJ.MM
$pattern_jjmm = '/\b(\d{1,2})(\/|\.)\d{1,2}\b/';
// Pattern pour détecter les dates du style "1 août" (ou autre mois en français)
$mois_fr = array(
'janvier', 'février', 'mars', 'avril', 'mai', 'juin',
'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'
);
$pattern_jj_mois_fr = '/\b(\d{1,2}) (' . implode('|', $mois_fr) . ')\b/i';
// Pattern pour détecter les dates du style "1 août" (ou autre mois en français)
$mois_fr = array(
'janvier', 'février', 'mars', 'avril', 'mai', 'juin',
'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'
);
$pattern_jj_mois_fr = '/\b(\d{1,2}) (' . implode('|', $mois_fr) . ')\b/i';
// Stocker les correspondances dans un tableau
$correspondances = [];
// Stocker les correspondances dans un tableau
$correspondances = [];
// Chercher les dates au format JJ/MM ou JJ.MM
if (preg_match_all($pattern_jjmm, $string, $matches)) {
$correspondances = array_merge($correspondances, $matches[0]);
}
// Chercher les dates du style "1 août" (ou autre mois en français)
if (preg_match_all($pattern_jj_mois_fr, $string, $matches)) {
// Convertir le mois en format numérique (1 pour janvier, 2 pour février, etc.)
$mois_numerique = array_flip($mois_fr);
foreach ($matches[2] as $index => $mois) {
$matches[0][$index] = $matches[1][$index] . '/' . str_pad($mois_numerique[strtolower($mois)] + 1, 2, '0', STR_PAD_LEFT);
// Chercher les dates au format JJ/MM ou JJ.MM
if (preg_match_all($pattern_jjmm, $string, $matches)) {
$correspondances = array_merge($correspondances, $matches[0]);
}
$correspondances = array_merge($correspondances, $matches[0]);
// Chercher les dates du style "1 août" (ou autre mois en français)
if (preg_match_all($pattern_jj_mois_fr, $string, $matches)) {
// Convertir le mois en format numérique (1 pour janvier, 2 pour février, etc.)
$mois_numerique = array_flip($mois_fr);
foreach ($matches[2] as $index => $mois) {
$matches[0][$index] = $matches[1][$index] . '/' . str_pad($mois_numerique[strtolower($mois)] + 1, 2, '0', STR_PAD_LEFT);
}
$correspondances = array_merge($correspondances, $matches[0]);
}
// Vérifier s'il y a des dates détectées
if (empty($correspondances)) {
return ""; // Retourne une chaîne vide si aucune date n'est trouvée
}
// Si plusieurs dates sont trouvées, trier les dates et récupérer la dernière
usort($correspondances, function ($a, $b) {
$dateA = strtotime($a);
$dateB = strtotime($b);
return $dateB - $dateA; // Tri décroissant
});
// Récupérer la dernière date détectée après le tri
$derniere_date = $correspondances[0];
// Convertir la dernière date au format "Y-m-d" (année-mois-jour)
if (strpos($derniere_date, '/') !== false) {
// Format JJ/MM
list($jour, $mois) = explode('/', $derniere_date);
$annee = date('Y');
} elseif (strpos($derniere_date, '.') !== false) {
// Format JJ.MM
list($jour, $mois) = explode('.', $derniere_date);
$annee = date('Y');
} else {
return ""; // Cas inattendu (ne devrait pas se produire)
}
// Convertir en date avec gestion des erreurs (ex. : février 30)
try {
$date_convertie = date('Y-m-d', strtotime("$annee-$mois-$jour"));
} catch (Exception $e) {
return ""; // Retourne une chaîne vide si la conversion échoue
}
return $date_convertie;
}
// Vérifier s'il y a des dates détectées
if (empty($correspondances)) {
return ""; // Retourne une chaîne vide si aucune date n'est trouvée
}
// Si plusieurs dates sont trouvées, trier les dates et récupérer la dernière
usort($correspondances, function ($a, $b) {
$dateA = strtotime($a);
$dateB = strtotime($b);
return $dateB - $dateA; // Tri décroissant
});
// Récupérer la dernière date détectée après le tri
$derniere_date = $correspondances[0];
// Convertir la dernière date au format "Y-m-d" (année-mois-jour)
if (strpos($derniere_date, '/') !== false) {
// Format JJ/MM
list($jour, $mois) = explode('/', $derniere_date);
$annee = date('Y');
} elseif (strpos($derniere_date, '.') !== false) {
// Format JJ.MM
list($jour, $mois) = explode('.', $derniere_date);
$annee = date('Y');
} else {
return ""; // Cas inattendu (ne devrait pas se produire)
}
// Convertir en date avec gestion des erreurs (ex. : février 30)
try {
$date_convertie = date('Y-m-d', strtotime("$annee-$mois-$jour"));
} catch (Exception $e) {
return ""; // Retourne une chaîne vide si la conversion échoue
}
return $date_convertie;
}
private function getTwitterDate($text)
{
// Utilisez une expression régulière pour extraire toutes les dates
@@ -534,9 +532,9 @@ class ContestController extends Controller
}
}
public function all()
public function all()
{
$contests = Contest::where('fin', '>=', Carbon::now()->format('Y-m-d'))->where('participated', 0)->where('enable', 1)->paginate(20);
$contests = Contest::where('fin', '>=', Carbon::now()->format('Y-m-d'))->where('participated', 0)->where('enable', 1)->orderby('id', 'desc')->paginate(20);
$count = Contest::where('fin', '>=', Carbon::now()->format('Y-m-d'))->where('participated', 0)->where('enable', 1)->count();
@@ -544,4 +542,4 @@ class ContestController extends Controller
return view('contests', compact('contests', 'count'));
}
}
}