J'essaie de créer une application qui télécharge quelque chose et le met sur un serveur FTP. Il n'y a pas assez d'espace pour, même temporairement, mettre ces fichiers en cours de téléchargement sur mon ordinateur, je souhaite donc qu'ils soient téléchargés sur le serveur FTP.

Plus précisément, j'utilise pytube pour télécharger une vidéo en utilisant :

stream.download()

Le .download() peut contenir une variable de chemin, bien que je ne sache pas comment l'utiliser pour envoyer le serveur FTP de cette façon. Je cherche un moyen d'ouvrir un répertoire FTP, afin que je puisse utiliser le chemin pour le remplir.

Toute aide serait grandement appréciée.

0
SinglePaper 6 nov. 2020 à 20:13

1 réponse

Meilleure réponse

Le mainteneur de ftputil ici. :-)

Je n'ai pas encore travaillé avec pytube, je ne peux donc répondre qu'à la partie ftputil.

Si vous ne pouvez vraiment pas ou ne pouvez pas enregistrer temporairement un fichier vidéo sur votre ordinateur, vous aurez besoin d'un moyen d'obtenir un objet de type fichier pour le téléchargement de la vidéo à partir de Pytube. (Je n'ai pas pu voir comment. Il existe une interface pour les "flux", mais je ne sais pas s'ils sont directement utilisables en tant qu'objets de type fichier.)

Si vous avez un objet fichier de Pytube, vous pouvez créer un objet de type fichier à écrire sur le serveur FTP pour un chemin de votre choix et copier d'un objet fichier à un objet fichier :

import shutil

import ftputil
import pytube


# Get file-like object for video.
source_file = ...

with ftputil.FTPHost(host, user, password) as ftp_host:
    with ftp_host.open('/path/to/target_file', 'wb') as target_file:
        shutil.copyfileobj(source_file, target_file)

Je suis conscient qu'il manque la partie Pytube. Peut-être que quelqu'un d'autre peut y contribuer, ou vous pouvez demander sur leur système de tickets. (Je n'ai pas trouvé de liste de diffusion ou similaire.)

Cela dit, même si cela ne répond pas à votre question, vous pourrez peut-être télécharger chaque fichier vidéo localement et le télécharger sur le serveur FTP, fichier par fichier. De cette façon, vous n'aurez besoin d'espace que pour le plus gros fichier vidéo.

Liens pour l'exemple de code :

1
sschwarzer 7 nov. 2020 à 15:24