diff --git a/.config/files_local-bin b/.config/files_local-bin
index 0d203f4..7f87d7b 100644
--- a/.config/files_local-bin
+++ b/.config/files_local-bin
@@ -1,3 +1,4 @@
+ytdll
 updateall.sh
 update_bullseye2buster.sh
 check_sha256.sh
diff --git a/.config/files_local-share-ytdll b/.config/files_local-share-ytdll
new file mode 100644
index 0000000..926d026
--- /dev/null
+++ b/.config/files_local-share-ytdll
@@ -0,0 +1,3 @@
+definitionsTables.json
+lib
+config.json
diff --git a/.config/files_local-share-ytdll-lib b/.config/files_local-share-ytdll-lib
new file mode 100644
index 0000000..3f58b73
--- /dev/null
+++ b/.config/files_local-share-ytdll-lib
@@ -0,0 +1,4 @@
+UpdateManager.php
+Config.php
+TableManager.php
+Database.php
diff --git a/install.sh b/install.sh
index 3cf920a..d023c13 100755
--- a/install.sh
+++ b/install.sh
@@ -5,6 +5,9 @@
 
 # Description : Script d'installation des exécutables dans le répertoire '~/.local'"
 
+# Version 07.07.24
+# - Ajout du traitement de share/ytdll et share/ytdll/lib
+
 # Version 23.12.1.3
 # - Amélioration des logs
 # - process_deployment_files optmisie les opérations de déployement
@@ -131,6 +134,45 @@ purge_old_logs
 
 
 
+#### .local/share/ytdll ####
+
+## Declarations ##
+
+# Spécifier le chemin du répertoire destination
+destination_dir="$HOME/.local/share/ytdll"
+
+# Spécifier le chemin du répertoire du dépôt Git local
+source_dir="local/share/ytdll"
+
+file_local_desc=.config/files_local-share-ytdll
+
+## Traitement ##
+log "## Debut du traitement pour $destination_dir"
+
+process_deployment_files "$destination_dir" "$source_dir" "$file_local_desc"
+
+
+
+#### .local/share/ytdll/lib ####
+
+## Declarations ##
+
+# Spécifier le chemin du répertoire destination
+destination_dir="$HOME/.local/share/ytdll/lib"
+
+# Spécifier le chemin du répertoire du dépôt Git local
+source_dir="local/share/ytdll/lib"
+
+file_local_desc=.config/files_local-share-ytdll-lib
+
+## Traitement ##
+log "## Debut du traitement pour $destination_dir"
+
+process_deployment_files "$destination_dir" "$source_dir" "$file_local_desc"
+
+
+
+
 #### .local/share/doc ####
 
 ## Declarations ##
diff --git a/local/bin/setup_server_debian.sh b/local/bin/setup_server_debian.sh
new file mode 100755
index 0000000..b69bd9d
--- /dev/null
+++ b/local/bin/setup_server_debian.sh
@@ -0,0 +1,149 @@
+#!/bin/bash
+
+# Vérifier si le script est exécuté en root
+if [[ $EUID -ne 0 ]]; then
+   echo "Ce script doit être exécuté en tant que root."
+   exit 1
+fi
+
+### Fonction pour mettre à jour le système
+update_system() {
+    echo "Mise à jour du système..."
+    apt update && apt upgrade -y
+}
+
+### Fonction pour installer sudo s'il n'est pas déjà présent
+install_sudo() {
+    if command -v sudo &>/dev/null; then
+        echo "Sudo est déjà installé."
+    else
+        echo "Installation de sudo..."
+        apt install -y sudo
+    fi
+}
+
+### Fonction pour ajouter un utilisateur administrateur
+add_admin_user() {
+    # Vérifier s'il existe déjà un utilisateur autre que root
+    EXISTING_USER=$(awk -F: '$3 >= 1000 && $3 < 60000 {print $1; exit}' /etc/passwd)
+
+    if [[ -n "$EXISTING_USER" ]]; then
+        echo "Un utilisateur ($EXISTING_USER) existe déjà sur le système."
+        read -p "Voulez-vous ajouter un autre utilisateur administrateur ? (o/N) " ADD_NEW_USER
+        if [[ ! "$ADD_NEW_USER" =~ ^[Oo]$ ]]; then
+            echo "Aucun nouvel utilisateur ajouté."
+            return
+        fi
+    fi
+
+    read -p "Entrez le nom du nouvel utilisateur : " NEW_USER
+
+    # Vérifier si l'utilisateur existe déjà
+    if id "$NEW_USER" &>/dev/null; then
+        echo "L'utilisateur $NEW_USER existe déjà."
+    else
+        adduser "$NEW_USER"
+        echo "Utilisateur $NEW_USER créé."
+    fi
+
+    # Vérifier si l'utilisateur est dans le groupe sudo
+    if groups "$NEW_USER" | grep -q "\bsudo\b"; then
+        echo "$NEW_USER est déjà dans le groupe sudo."
+    else
+        usermod -aG sudo "$NEW_USER"
+        echo "$NEW_USER ajouté au groupe sudo."
+    fi
+   # Vérifier si les permissions sudo sont déjà définies
+    if [ -f "/etc/sudoers.d/$NEW_USER" ]; then
+        echo "Les permissions sudo sont déjà configurées pour $NEW_USER."
+    else
+        echo "$NEW_USER ALL=(ALL) NOPASSWD:ALL" > "/etc/sudoers.d/$NEW_USER"
+        chmod 0440 "/etc/sudoers.d/$NEW_USER"
+        echo "Configuration sudo appliquée pour $NEW_USER."
+    fi
+
+    # Demander si on veut ajouter une clé SSH
+    read -p "Voulez-vous ajouter une clé SSH pour $NEW_USER ? (o/N) " ADD_SSH
+    if [[ "$ADD_SSH" =~ ^[Oo]$ ]]; then
+        SSH_DIR="/home/$NEW_USER/.ssh"
+        AUTH_KEYS="$SSH_DIR/authorized_keys"
+
+        # Créer le dossier .ssh s'il n'existe pas
+        if [ ! -d "$SSH_DIR" ]; then
+            mkdir -p "$SSH_DIR"
+            chown "$NEW_USER:$NEW_USER" "$SSH_DIR"
+            chmod 700 "$SSH_DIR"
+            echo "Dossier .ssh créé pour $NEW_USER."
+        fi
+
+        read -p "Collez la clé publique SSH : " SSH_KEY
+
+        # Vérifier si la clé est déjà présente
+        if grep -qxF "$SSH_KEY" "$AUTH_KEYS" 2>/dev/null; then
+            echo "Cette clé SSH est déjà ajoutée."
+        else
+            echo "$SSH_KEY" >> "$AUTH_KEYS"
+            chown "$NEW_USER:$NEW_USER" "$AUTH_KEYS"
+            chmod 600 "$AUTH_KEYS"
+            echo "Clé SSH ajoutée pour $NEW_USER."
+        fi
+    else
+        echo "Aucune clé SSH ajoutée."
+    fi
+}
+
+### Fonction pour configurer SSH de manière sécurisée
+configure_ssh() {
+    if grep -q "^PermitRootLogin no" /etc/ssh/sshd_config; then
+        echo "La connexion root SSH est déjà désactivée."
+    else
+        echo "Désactivation de la connexion root via SSH..."
+        sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
+        sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
+        systemctl restart ssh
+        echo "Sécurisation SSH appliquée."
+    fi
+}
+
+### Fonction pour installer et configurer Fail2Ban
+install_fail2ban() {
+    if dpkg -l | grep -q "^ii  fail2ban"; then
+        echo "Fail2Ban est déjà installé."
+    else
+        echo "Installation de Fail2Ban..."
+        apt install -y fail2ban
+    fi
+}
+
+### Fonction pour configurer les locales en français UTF-8
+configure_locales() {
+    echo "Configuration des locales en français UTF-8..."
+    apt install -y locales
+
+    # Vérifier si fr_FR.UTF-8 est déjà activé
+    if locale -a | grep -q "fr_FR.utf8"; then
+        echo "Les locales en fr_FR.UTF-8 sont déjà activées."
+    else
+        sed -i 's/# fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/' /etc/locale.gen
+        locale-gen
+    fi
+
+    # Appliquer les variables locales si nécessaire
+    if grep -q "LANG=fr_FR.UTF-8" /etc/default/locale; then
+        echo "Les variables locales sont déjà configurées."
+    else
+        update-locale LANG=fr_FR.UTF-8 LANGUAGE=fr_FR.UTF-8 LC_ALL=fr_FR.UTF-8
+        echo "Variables locales mises à jour."
+    fi
+}
+
+### SECTION PRINCIPALE : Activer/Désactiver les options ici
+update_system
+install_sudo
+add_admin_user
+configure_ssh
+install_fail2ban
+configure_locales
+
+echo "Installation et configuration de base terminées."
+echo "Vous pouvez maintenant vous connecter avec l'utilisateur : $NEW_USER"
diff --git a/local/bin/ytdll b/local/bin/ytdll
new file mode 100755
index 0000000..1f9bdab
--- /dev/null
+++ b/local/bin/ytdll
@@ -0,0 +1,164 @@
+#!/usr/bin/env php
+
+<?php
+
+// Auteur : Cédrix pour a5l.fr
+// Projet : scripts-bash/ytdll
+
+// Télécharger les pistes audios ajoutées récemment
+// depuis des chaines Youtubes
+
+// Version 2024.07.07-14.31
+// Version initiale
+
+/*
+Création de la base de données
+Linux Debian 12 / PostGres 16
+
+Suivez les instructions suivantes pour créer
+votre base de données et tous les éléments
+associés.
+
+-- Connectez-vous en tant qu'utilisateur ayant des privilèges suffisants
+-- depuis le compte root
+sudo su - postgres
+
+-- Modification du fichier pg_hba
+nano /etc/postgresql/16/main/ph_hba.conf
+-- modifier la ligne
+local   all             all                                     peer
+-- avec la valeur suivante
+local   all             all                                     trust
+
+-- avec le compte root redémarrez postgres
+systemctl restart postgresql
+
+-- Connectez-vous en tant qu'utilisateur ayant des privilèges suffisants
+-- depuis le compte root
+sudo su - postgres
+
+-- Connection au requeteur
+psql
+
+-- Créer un nouveau role
+CREATE ROLE r_ytdll WITH LOGIN PASSWORD 'changeme';
+
+-- Créer la base de données
+CREATE DATABASE b_ytdll OWNER r_ytdll;
+
+-- Connectez-vous à la base de données b_ytdll :
+\c b_ytdll
+
+-- Créez un nouveau schéma
+CREATE SCHEMA s_ytdll AUTHORIZATION r_ytdll;
+
+
+-- Accorder tous les privilèges sur le schéma à l'utilisateur
+GRANT ALL PRIVILEGES ON SCHEMA s_ytdll TO r_ytdll;
+
+-- Accorder des privilèges sur les tables et séquences existantes et futures
+GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA s_ytdll TO r_ytdll;
+GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA s_ytdll TO r_ytdll;
+ALTER DEFAULT PRIVILEGES IN SCHEMA s_ytdll GRANT ALL PRIVILEGES ON TABLES TO r_ytdll;
+ALTER DEFAULT PRIVILEGES IN SCHEMA s_ytdll GRANT ALL PRIVILEGES ON SEQUENCES TO r_ytdll;
+
+-- Schéma s_ytdll par défaut
+SET search_path TO s_ytdll;
+\d
+ALTER ROLE r_ytdll SET search_path TO s_ytdll;
+ALTER DATABASE b_ytdll SET search_path TO s_ytdll;
+
+
+*/
+
+
+
+// -- GESTION DES PRE REQUIS --
+// Vérifier si l'extension pgsql est chargée
+if (!extension_loaded('pgsql')) {
+    die("L'extension PHP 'pgsql' n'est pas installée. Veuillez l'installer avant de continuer.\n");
+}
+
+// Chemin du HOME
+$homeDir = getenv('HOME');
+
+// Configuration de l'autoloader
+spl_autoload_register(function ($class) use ($homeDir) {
+    $baseDir = $homeDir . '/.local/share/ytdll/lib/';
+    $file = $baseDir . str_replace('\\', '/', $class) . '.php';
+    
+    if (file_exists($file)) {
+        require $file;
+    }
+});
+
+
+// -- GESTION DE LA CONFIGURATION PRIMAIRE --
+
+function getUserInput($prompt) {
+    echo $prompt;
+    return trim(fgets(STDIN));
+}
+
+function createConfigFile($configPath, $templatePath) {
+    // Vérifie si le fichier de configuration existe
+    if (!file_exists($configPath)) {
+        // Copie le fichier de modèle
+        if (!copy($templatePath, $configPath)) {
+            die("Échec de la copie du fichier de configuration modèle.\n");
+        }
+
+        
+        // Demande à l'utilisateur de saisir les valeurs nécessaires
+        $databaseHost = getUserInput("Veuillez saisir le host de la base de données : ");
+        $databaseName = getUserInput("Veuillez saisir le nom de la base de données : ");
+        $databaseUser = getUserInput("Veuillez saisir l'utilisateur de la base de données : ");
+        $databasePassword = getUserInput("Veuillez saisir le mot de passe de la base de données : ");
+
+        // Lit le fichier de modèle
+        $configContent = file_get_contents($configPath);
+
+        // Remplace les valeurs par défaut par les valeurs saisies par l'utilisateur
+        $configArray = [
+            'database' => [
+                'host' => $databaseHost,
+                'dbname' => $databaseName,
+                'user' => $databaseUser,
+                'password' => $databasePassword
+            ]
+        ];
+
+        // Encode en JSON
+        $jsonConfig = json_encode($configArray, JSON_PRETTY_PRINT);
+
+        // Écrit le fichier de configuration JSON
+        file_put_contents($configPath, $jsonConfig);
+        
+        echo "Le fichier de configuration a été créé avec succès.\n";
+    }
+}
+
+// Appel de la fonction pour créer le fichier de configuration
+$configPath = $homeDir . '/.config/fr.a5l.ytdll.json';
+$templatePath = $homeDir . '/.local/share/ytdll/config.php';
+createConfigFile($configPath, $templatePath);
+
+
+
+
+// -- DEBUT --
+// Lit le fichier de configuration primaire
+$configContent = file_get_contents($configPath);
+// Décode le JSON en tableau associatif
+$config = json_decode($configContent, true);
+// Initialiser la connexion à la base de données
+$database = new Database($config['database']);
+unset($config);
+// Initialiser au gestionnaire de configuration
+$configManager = new Config($database);
+
+
+
+// -- GESTION DES VERSIONS de TABLE --
+$updateManager = new UpdateManager($configManager, $pdo);
+$updateManager->manageVersionTables();
diff --git a/local/share/ytdll/config.json b/local/share/ytdll/config.json
new file mode 100644
index 0000000..9f92bcf
--- /dev/null
+++ b/local/share/ytdll/config.json
@@ -0,0 +1,9 @@
+{
+    "database": {
+        "host": "changeme",
+        "dbname": "changeme",
+        "user": "changeme",
+        "password": "changeme"
+    }
+    
+}
\ No newline at end of file
diff --git a/local/share/ytdll/definitionsTables.json b/local/share/ytdll/definitionsTables.json
new file mode 100644
index 0000000..1824291
--- /dev/null
+++ b/local/share/ytdll/definitionsTables.json
@@ -0,0 +1,38 @@
+{
+    "definition_number": 1,
+    "versions": [
+        {
+            "version" : "2024.07.07-14.31",
+            "comment" : "Version initiale"
+        }
+    ],
+    "author": "Cédrix pour a5l.fr",
+    "project": "scripts-bash/ytdll",
+    "tables": [
+        {
+            "name": "config",
+            "columns": [
+                {"name": "id", "type": "SERIAL PRIMARY KEY"},
+                {"name": "key", "type": "VARCHAR(255)"},
+                {"name": "value", "type": "VARCHAR(255)"}
+            ]
+        },
+        {
+            "name": "feed_metadata",
+            "columns": [
+                {"name": "channel_id", "type": "VARCHAR(255) PRIMARY KEY"},
+                {"name": "author_name", "type": "VARCHAR(255)"},
+                {"name": "author_uri", "type": "VARCHAR(255)"}
+            ]
+        },
+        {
+            "name": "entry_metadata",
+            "columns": [
+                {"name": "video_id", "type": "VARCHAR(255) PRIMARY KEY"},
+                {"name": "channel_id", "type": "VARCHAR(255)"},
+                {"name": "title", "type": "VARCHAR(255)"},
+                {"name": "author_name", "type": "VARCHAR(255)"}
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/local/share/ytdll/lib/Config.php b/local/share/ytdll/lib/Config.php
new file mode 100644
index 0000000..bea3914
--- /dev/null
+++ b/local/share/ytdll/lib/Config.php
@@ -0,0 +1,91 @@
+<?php
+
+// Auteur : Cédrix pour a5l.fr
+// Projet : scripts-bash/ytdll
+
+// Version 2024.07.07-14.31
+// Version initiale
+
+
+class Config {
+    private $pdo;
+    private $database;
+
+    public function __construct(Database $database) {
+        $this->database = $database;
+        $this->pdo = $this->database->getPDO();
+    }
+
+    /**
+     * Set or update the version in the config table.
+     *
+     * @param string $version The version to set.
+     * @return bool True on success, false on failure.
+     */
+    public function setVersionDefinitionsTables($version) {
+        try {
+            $stmt = $this->pdo->prepare("
+                INSERT INTO config (key, value)
+                VALUES ('versionDefinitionsTables', :version)
+                ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value
+            ");
+            $stmt->execute(['version' => $version]);
+        } catch (PDOException $e) {
+            // Log the error or handle it appropriately
+            error_log('Error setting version: ' . $e->getMessage());
+            return false;
+        }
+    }
+
+    /**
+     * Get the current version from the config table.
+     *
+     * @return string|null The current version or null if not set.
+     */
+    public function getVersionDefinitionsTables() {
+        try {
+
+            $stmt = $this->pdo->prepare("SELECT value FROM config WHERE key = 'versionDefinitionsTables'");
+            $stmt->execute();
+            $row = $stmt->fetch(PDO::FETCH_ASSOC);
+            return $row ? $row['value'] : null;
+        } catch (PDOException $e) {
+            error_log("Database error: " . $e->getMessage());
+            // Return a default value or null
+            return null;
+        }
+    }
+
+
+    /**
+     * Get the current path Definitions Tables from the config table.
+     *
+     * @return string The current version or default path if not set.
+     */
+    public function getPathDefinitionsTablesFile() {
+            $defaultPath = getenv('HOME') . "/.local/share/ytdll/definitionsTables.json";
+            return $defaultPath;
+    }
+
+    /**
+     * Verify database privileges by attempting to create and drop a test table.
+     *
+     * @return bool True if privileges are sufficient, false otherwise.
+     */
+    public function verifyPrivileges() {
+        try {
+            $tableManager = new TableManager($this->database);
+            $tableManager->createTable('test_table', [
+                ['name' => 'id', 'type' => 'SERIAL PRIMARY KEY'],
+                ['name' => 'name', 'type' => 'VARCHAR(255)']
+            ]);
+            $tableManager->dropTable('test_table');
+            return true;
+        } catch (PDOException $e) {
+            error_log("Erreur sur les privilèges d'accès à la base de données : " . $e->getMessage());
+            return false;
+        }
+    }
+
+
+}
diff --git a/local/share/ytdll/lib/Database.php b/local/share/ytdll/lib/Database.php
new file mode 100644
index 0000000..e7f6a27
--- /dev/null
+++ b/local/share/ytdll/lib/Database.php
@@ -0,0 +1,26 @@
+<?php
+class Database {
+    private $pdo;
+
+    public function __construct($config) {
+        $dsn = "pgsql:host={$config['host']};dbname={$config['dbname']}";
+        try {
+            $this->pdo = new PDO($dsn, $config['user'], $config['password'], [
+                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
+            ]);
+        } catch (PDOException $e) {
+            die('Connection failed: ' . $e->getMessage());
+        }
+
+    }
+
+    public function getDefaultSchema() {
+        $query = "SELECT current_schema()";
+        $stmt = $this->pdo->query($query);
+        return $stmt->fetchColumn();
+    }
+
+    public function getPDO() {
+        return $this->pdo;
+    }
+}
diff --git a/local/share/ytdll/lib/TableManager.php b/local/share/ytdll/lib/TableManager.php
new file mode 100644
index 0000000..619a9c7
--- /dev/null
+++ b/local/share/ytdll/lib/TableManager.php
@@ -0,0 +1,116 @@
+<?php
+
+// Auteur : Cédrix pour a5l.fr
+// Projet : scripts-bash/ytdll
+
+// Version 2024.07.07-14.31
+// Version initiale
+
+
+class TableManager {
+    private $pdo;
+    private $database;
+
+    // SGBD PostGreSQL 16
+
+    public function __construct(Database $database) {
+        $this->database = $database;
+        $this->pdo = $this->database->getPDO();
+    }
+
+    public function getTableColumns($tableName) {
+        if (!$this->tableExists($tableName)) {
+            return []; // Retourne un tableau vide si la table n'existe pas
+        }
+
+        $query = "SELECT column_name, data_type FROM information_schema.columns WHERE table_name = :table_name AND table_schema = :table_schema";
+        $stmt = $this->pdo->prepare($query);
+        $stmt->execute([
+            ':table_name' => $tableName
+        ]);
+        return $stmt->fetchAll(PDO::FETCH_ASSOC);
+    }
+
+    private function tableExists($tableName) {
+        $schema = $this->database->getDefaultSchema();
+
+        $query = "SELECT COUNT(*) FROM information_schema.tables WHERE table_name = :table_name AND table_schema = :table_schema";
+        $stmt = $this->pdo->prepare($query);
+        echo "Vérification de l'existence de la table : $tableName\n";
+        $stmt->execute([
+            ':table_name' => $tableName,
+            ':table_schema' => $schema
+        ]);
+        return $stmt->fetchColumn() > 0;
+    }
+
+    public function processTables($tables) {
+        foreach ($tables as $table) {
+            $this->processTable($table);
+        }
+    }
+
+    private function processTable($table) {
+        $tableName = $table['name'];
+        $columns = $table['columns'];
+        $existingColumns = $this->getTableColumns($tableName);
+
+        if (empty($existingColumns) && !$this->tableExists($tableName)) {
+            $this->createTable($tableName, $columns);
+            return;
+        }
+
+        $existingColumnsMap = [];
+        foreach ($existingColumns as $column) {
+            $existingColumnsMap[$column['column_name']] = $column['data_type'];
+        }
+
+        foreach ($columns as $column) {
+            $columnName = $column['name'];
+            $columnType = $column['type'];
+
+            if (isset($existingColumnsMap[$columnName])) {
+                if ($existingColumnsMap[$columnName] !== $columnType) {
+                    $this->alterColumnType($tableName, $columnName, $columnType);
+                }
+                unset($existingColumnsMap[$columnName]);
+            } else {
+                $this->addColumn($tableName, $columnName, $columnType);
+            }
+        }
+
+        foreach ($existingColumnsMap as $columnName => $columnType) {
+            $this->dropColumn($tableName, $columnName);
+        }
+    }
+
+    public function createTable($tableName, $columns) {
+        $columnsSql = [];
+        foreach ($columns as $column) {
+            $columnsSql[] = "{$column['name']} {$column['type']}";
+        }
+        $columnsSql = implode(", ", $columnsSql);
+        $sql = "CREATE TABLE $tableName ($columnsSql)";
+        $this->pdo->exec($sql);
+    }
+
+    public function dropTable($tableName) {
+        $sql = "DROP TABLE IF EXISTS $tableName";
+        $this->pdo->exec($sql);
+    }
+
+    private function alterColumnType($tableName, $columnName, $columnType) {
+        $sql = "ALTER TABLE $tableName ALTER COLUMN $columnName TYPE $columnType USING $columnName::$columnType";
+        $this->pdo->exec($sql);
+    }
+
+    private function addColumn($tableName, $columnName, $columnType) {
+        $sql = "ALTER TABLE $tableName ADD COLUMN $columnName $columnType";
+        $this->pdo->exec($sql);
+    }
+
+    private function dropColumn($tableName, $columnName) {
+        $sql = "ALTER TABLE $tableName DROP COLUMN $columnName";
+        $this->pdo->exec($sql);
+    }
+}
diff --git a/local/share/ytdll/lib/UpdateManager.php b/local/share/ytdll/lib/UpdateManager.php
new file mode 100644
index 0000000..4d589bc
--- /dev/null
+++ b/local/share/ytdll/lib/UpdateManager.php
@@ -0,0 +1,48 @@
+<?PHP
+
+// Auteur : Cédrix pour a5l.fr
+// Projet : scripts-bash/ytdll
+
+// Version 2024.07.07-14.31
+// Version initiale
+
+class UpdateManager {
+    private $pdo;
+    private $database;
+
+    public function __construct($database) {
+        $this->database = $database;
+        $this->pdo = $this->database->getPDO();
+
+    }
+
+    public function manageVersionTables() {
+        $configManager = new Config($this->database);
+        // Obtenir le numéro de version dans le fichier de définitions de table
+        $definitionsTablesFile = json_decode(file_get_contents($configManager->getPathDefinitionsTablesFile()), true);
+        $newDefinitionNumber = $definitionsTablesFile['definition_number'];
+
+        // Obtenir le numéro de version des Tables en base
+        $currentDefinitionNumber = $configManager->getVersionDefinitionsTables();
+
+        if ($currentDefinitionNumber !== null) {
+            echo 'Version not set or an error occurred.';
+            $currentDefinitionNumber = 0;
+        }
+
+        $tables = $definitionsTablesFile['tables'];
+
+        if ($newDefinitionNumber > $currentDefinitionNumber) {
+            $tableManager = new TableManager($this->database);
+            $tableManager->processTables($tables);
+            $configManager->setVersionDefinitionsTables($newDefinitionNumber);
+            if ($currentDefinitionNumber == 0) {
+                echo "Tables created successfully.";
+             } else {
+                echo "Tables updated successfully from $currentDefinitionNumber to $newDefinitionNumber.";
+             }
+
+        }
+    }
+}
+
diff --git a/prep.sh b/prep.sh
index 21d7595..de30408 100755
--- a/prep.sh
+++ b/prep.sh
@@ -5,6 +5,9 @@
 
 # Description : Prépare les fichiers de DOC et listing.
 
+# Version 07.07.24
+# - Ajout du traitement de ytdll
+
 # Version 23.12.14
 # - Modification du traitement des résumés des DOC. La fonctionnalité n'est pas encore accessible.
 
@@ -48,6 +51,7 @@ ls local/bin/ -c1 >.config/files_local-bin
 # 1. Lister des fichiers dans local/share/doc
 # 2. Générer les fichiers man dans local/share/man
 # 3. Lister des fichiers dans local/share/man
+# 4. Lister des fichiers dans local/share/ytdll et share/ytdll/lib
 
 # Spécifier le chemin du répertoire du dépôt Git local
 source_dir="local/share/doc"
@@ -113,7 +117,11 @@ fi
 log "Lister les fichiers présents dans local/share/man"
 ls local/share/man/ -c1 >.config/files_local-share-man
 
+log "Lister les fichiers présents dans local/share/ytdll"
+ls local/share/ytdll/ -c1 >.config/files_local-share-ytdll
 
+log "Lister les fichiers présents dans local/share/ytdll/lib"
+ls local/share/ytdll/lib/ -c1 >.config/files_local-share-ytdll-lib
 
 ########
 # Résumé des DOC