2016-11-17 2 views
-2

Je nettoie notre compte Slack et je veux enregistrer les fichiers avant de les supprimer. Ci-joint le script que j'ai obtenu de github. Quelqu'un peut-il s'il vous plaît me fournir un extrait que je peux ajouter au script afin que je puisse dire à Python de sauvegarder les fichiers dans le dossier désigné (root_folder). S'il vous plaît fournir votre aide aimable.Enregistrer des fichiers Slack dans le dossier

from slacker import * 
import sys 
import time 
import os 
from datetime import timedelta, datetime 

root_folder = 'Z:\Slack_Files' 

def main(token, weeks=4): 
    slack = Slacker(token) 
    # Get list of all files available for the user of the token 
    total = slack.files.list(count=1).body['paging']['total'] 
    num_pages = int(total/1000.00 + 1) 
    print("{} files to be processed, across {} pages".format(total, num_pages)) 
    # Get Data about files 
    files_to_save = [] 
    ids = [] # For checking that the API doesn't return duplicate files 
    count = 1 
    for page in range(num_pages): 
    print ("Pulling page number {}".format(page + 1)) 
    files = slack.files.list(count=1000, page=page+1).body['files'] 
    for file in files: 
     print("Checking file number {}".format(count)) 
     # Checking for duplicates 
     if file['id'] not in ids: 
      ids.append(file['id']) 
      if datetime.fromtimestamp(file['timestamp']) < datetime.now() - timedelta(weeks=weeks): 
       files_to_save.append(file) 
       print("File No. {} will be saved".format(count)) 
      else: 
       print("File No. {} will not be saved".format(count)) 
     count+=1 

print("All files saved\nProceeding to save files") 
print("{} files will be saved!".format(len(files_to_save))) 
count = 1 
for file in files_to_save: 
    print("Saving file {} of {} - {}".format(count, len(files_to_save), file["name"])) 
    print(file["name"]) 
    count+=1 

return count-1 
+1

est l'API incluant les détails des fichiers? – Juggernaut

+0

Y a-t-il du code que vous avez publié, ou est-ce directement de github? Est-ce que vous nous demandez d'écrire du code pour vous lorsque vous n'avez rien fait vous-même? Si c'est le cas, c'est hors sujet pour ce site. –

+0

Oui, il comprend les détails de notre compte Slack. J'ai fait des ajouts à cela. Ce n'est pas exactement la même chose que github. Je veux juste dire à Python de sauvegarder les fichiers dans le dossier désigné. Quand je lance le script, il renvoie une liste de fichiers qui seront sauvegardés, j'ai juste besoin d'ajouter un extrait pour enregistrer les fichiers dans le dossier. –

Répondre

1

Voici l'approche de base sur la façon de le faire.

  1. obtenir la liste de tous les fichiers et leurs papiers d'identité avec files.list
  2. boucle dans la liste de tous les fichiers
  3. pour chaque fichier: Utilisez files.sharedPublicUrl pour obtenir l'URL publique pour un fichier. Téléchargez et enregistrez-le avec votre script. Enfin, supprimez-le avec files.delete

Notez que votre bot/access token ne pourra accéder qu'aux fichiers des canaux privés auxquels l'utilisateur correspondant a été invité. Notez également que votre script doit respecter la limite de 1 requête par seconde, sinon il ne s'exécutera pas.