#!/usr/bin/env python # _*_ coding: utf-8 _*_ # Copyright (C) Michel Casabianca - 2008 # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Script téléchargeant l'édition du jour de 20 minutes (sauf samedi et # dimanche, jours pour lesquels il ne fait rien). # # Il vous faut configurer : # - EDITION : les trois lettres identifiant votre édition régionale. Les # valeurs possibles sont : 'BOR' pour Bordeaux, 'LIL' pour Lille, # 'LYO' pour Lyon, 'MAR' pour Marseille, 'NAN' pour Nantes, 'PAR' pour # Paris, 'STR' pour Strasbourg et 'TOU' pour Toulouse. # - USER : l'utilisateur Unix sur le bureau duquel on doit déposer le journal. # - DESKTOP : le répertoire du bureau de l'utilisateur, qui est par défaut, # sous MacOSX, '/Users//Desktop'. Sous Linux votre bureau devrait être # '/home//Desktop', mais ce répertoire peut dépendre de votre # distribution. # # Pour lancer automatiquement ce script tous les jours avec anacron : # - Installer anacron : # . Sous Linux : 'sudo apt-get install anacron' # . sous MacOSX : 'sudo fink install anacron' # - Copier ce fichier dans le répertoire des tâches journalières : # . Sous Linux : 'sudo cp download-20-minutes /etc/cron.daily' # . Sous MacOSX : 'sudo cp download-20-minutes /sw/etc/cron.daily' # - Changer le propriétaire du fichier pour root : # 'sudo chown root: download-20-minutes' # - Rendre le fichier exécutable : # 'sudo chmod a+x download-20-minutes' import os import sys import time from datetime import date import urllib2 import pwd EDITION = 'BOR' USER = 'casa' HOST = 'http://20minutes.s3.amazonaws.com' if sys.platform == 'darwin': DESKTOP = '/Users/'+USER+'/Desktop' else: DESKTOP = '/home/'+USER+'/Desktop' LOGS = '/var/log/download-20-minutes.log' # Enregistre un message dans le fichier de log # - message: le message à enregistrer. def log(message): print message date = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) try: f = open(LOGS, 'a') f.write(date+': '+message+'\n') f.close() except: pass dayofweek = date.weekday(date.today()) # on ne télécharge pas samedi et dimanche if dayofweek < 5: try: date = time.strftime('%Y%m%d', time.localtime()) url = HOST+'/'+date+'_'+EDITION+'.pdf' filename = DESKTOP+'/'+'20-minutes-'+date+'.pdf' # on télécharge le fichier handler = urllib2.urlopen(url) contenu = handler.read() f = open(filename, 'w') f.write(contenu) f.close() # on change le propriétaire du fichier uid = -1 gid = -1 db = pwd.getpwall() for user in db: if USER == user[0]: uid = user[2] gid = user[3] os.chown(filename, uid, gid) # on log le téléchargement log('Téléchargement OK') except: log('Erreur lors du téléchargement: '+str(sys.exc_info()[1])) raise # on log tout de même les samedi et dimanche else: log('Pas de téléchargement les samedi et dimanche')