Add files via upload
This commit is contained in:
135
addyear2serie.sh
Normal file
135
addyear2serie.sh
Normal file
@@ -0,0 +1,135 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Répertoire contenant les séries
|
||||
base_dir="/volume2/serie"
|
||||
|
||||
# Clé API TMDb
|
||||
api_key="a51e6780dac618cdc12b6e54f2771b45"
|
||||
|
||||
# Variables pour le rapport final
|
||||
total_folders=0
|
||||
renamed_folders=0
|
||||
merged_folders=0
|
||||
manual_check=0
|
||||
manual_list=()
|
||||
|
||||
# Fonction pour obtenir l'année de diffusion et le nom correct d'une série sur TMDb
|
||||
get_tmdb_info() {
|
||||
local series_name="$1"
|
||||
local series_id
|
||||
local tmdb_title
|
||||
local airdate_year
|
||||
|
||||
echo "🔎 Recherche de la série '$series_name' sur TMDb..." >&2
|
||||
|
||||
# Rechercher la série
|
||||
result=$(curl -s --get "https://api.themoviedb.org/3/search/tv" --data-urlencode "api_key=$api_key" --data-urlencode "query=$series_name")
|
||||
series_id=$(echo "$result" | jq -r '.results[0].id')
|
||||
tmdb_title=$(echo "$result" | jq -r '.results[0].name')
|
||||
|
||||
if [[ "$series_id" =~ ^[0-9]+$ ]]; then
|
||||
echo "✅ Série trouvée : $tmdb_title (ID: $series_id)" >&2
|
||||
airdate_year=$(curl -s "https://api.themoviedb.org/3/tv/$series_id?api_key=$api_key" | jq -r '.first_air_date' | cut -d'-' -f1)
|
||||
|
||||
if [[ ! "$airdate_year" =~ ^[0-9]{4}$ ]]; then
|
||||
airdate_year="Inconnu"
|
||||
fi
|
||||
|
||||
echo "$tmdb_title|$airdate_year"
|
||||
return
|
||||
fi
|
||||
|
||||
echo "❌ Série non trouvée sur TMDb." >&2
|
||||
echo "Inconnu|Inconnu"
|
||||
}
|
||||
|
||||
# Fonction pour normaliser les noms
|
||||
normalize_series_name() {
|
||||
echo "$1" | sed -E 's/Marvel.s //I' | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]//g'
|
||||
}
|
||||
|
||||
# Dictionnaire pour stocker les séries et éviter les doublons
|
||||
declare -A series_map
|
||||
|
||||
# Lire tous les dossiers et les traiter
|
||||
find "$base_dir" -mindepth 1 -maxdepth 1 -type d | while IFS= read -r folder_path; do
|
||||
folder=$(basename "$folder_path")
|
||||
((total_folders++))
|
||||
|
||||
# Exclure certains répertoires inutiles
|
||||
if [[ "$folder" =~ (dump|images|private|snippets|template) ]]; then
|
||||
echo "🚫 Ignorer : $folder_path (répertoire exclu)"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "📂 Traitement du répertoire : $folder_path"
|
||||
|
||||
# Extraction du nom et de l'année
|
||||
if [[ "$folder" =~ \(Recherche ]]; then
|
||||
series_name=$(echo "$folder" | sed -E 's/ \(Recherche.*//')
|
||||
current_year="Inconnu"
|
||||
else
|
||||
series_name=$(echo "$folder" | sed -E 's/ \([0-9]{4}\)//')
|
||||
fi
|
||||
|
||||
if [[ "$folder" =~ \(([0-9]{4})\) ]]; then
|
||||
current_year="${BASH_REMATCH[1]}"
|
||||
else
|
||||
current_year="Inconnu"
|
||||
fi
|
||||
echo "📌 Année actuelle du répertoire : $current_year"
|
||||
|
||||
# Récupérer le nom officiel et l'année depuis TMDb
|
||||
tmdb_data=$(get_tmdb_info "$series_name")
|
||||
tmdb_name=$(echo "$tmdb_data" | cut -d'|' -f1)
|
||||
tmdb_year=$(echo "$tmdb_data" | cut -d'|' -f2)
|
||||
|
||||
if [[ "$tmdb_name" == "Inconnu" ]]; then
|
||||
echo "⚠️ Impossible de trouver '$series_name' sur TMDb. Vérification manuelle requise."
|
||||
manual_list+=("$folder")
|
||||
((manual_check++))
|
||||
continue
|
||||
fi
|
||||
|
||||
# Construire le nom de dossier correct
|
||||
new_folder_name="${tmdb_name} (${tmdb_year})"
|
||||
new_folder_path="$base_dir/$new_folder_name"
|
||||
|
||||
# Renommage si nécessaire
|
||||
if [[ "$new_folder_name" != "$folder" ]]; then
|
||||
echo "🔄 Renommage : '$folder' -> '$new_folder_name'"
|
||||
mv "$folder_path" "$new_folder_path"
|
||||
((renamed_folders++))
|
||||
fi
|
||||
|
||||
# Vérification des doublons
|
||||
normalized_name=$(normalize_series_name "$tmdb_name")
|
||||
if [[ -n "${series_map[$normalized_name]}" ]]; then
|
||||
target_folder="${series_map[$normalized_name]}"
|
||||
echo "🔄 Fusion de '$new_folder_name' -> '$target_folder'"
|
||||
mv "$new_folder_path"/* "$target_folder" 2>/dev/null
|
||||
rmdir "$new_folder_path" 2>/dev/null && echo "🗑️ Dossier supprimé : $new_folder_path"
|
||||
((merged_folders++))
|
||||
else
|
||||
series_map[$normalized_name]="$new_folder_path"
|
||||
fi
|
||||
done
|
||||
|
||||
# Affichage du rapport final
|
||||
echo ""
|
||||
echo "📊 RAPPORT FINAL :"
|
||||
echo "------------------------"
|
||||
echo "📂 Total des dossiers traités : $total_folders"
|
||||
echo "✍️ Dossiers renommés : $renamed_folders"
|
||||
echo "🔄 Dossiers fusionnés : $merged_folders"
|
||||
echo "⚠️ Dossiers à vérifier manuellement : $manual_check"
|
||||
|
||||
if [[ ${#manual_list[@]} -gt 0 ]]; then
|
||||
echo ""
|
||||
echo "🚨 LISTE DES DOSSIERS À VÉRIFIER :"
|
||||
for folder in "${manual_list[@]}"; do
|
||||
echo " - $folder"
|
||||
done
|
||||
fi
|
||||
|
||||
echo "✅ Renommage terminé !"
|
||||
Reference in New Issue
Block a user