Automatiser le téléchargement des journaux et magazines !

Par Rajan Bhattarai - 7 months and 2 days ago / Dec 2019
Automatiser le téléchargement des journaux et magazines !

Publié initialement le : 2018-10-03. Mise à jour le : 2019-12-20.


Ce matin [3 octobre 2018 GMT +545], nous avons eu une discussion étonnante dans le chat dev.to twitter.

Eh bien, il y a eu beaucoup d'idées et de trucs d'automatisation surprenants et en voici un que j'ai posté en réponse.


Les magazines et journaux ci-dessous sont des médias locaux et peuvent ne pas convenir à votre région géographique. Veuillez donc en être informé.


Derrière cette idée :
L'idée de base derrière cette automatisation du téléchargement du journal est que je lis souvent le journal local car je regarde rarement les nouvelles à la télévision. J'ai surtout été un internaute, donc tout ce que j'avais, c'était de parcourir le epaper possible. Le portail en ligne de la maison des médias permet de télécharger le journal et les magazines en version PDF [ que je suis en train de développer ], c'est ainsi que j'ai eu l'idée de cette automatisation. C'est un scénario très basique que j'ai écrit il y a presque un an et demi. Alors, mettons-nous au travail.



Scénario :

  • 2 versions du journal, en anglais et en népalais, publiées quotidiennement.
  • 1 tabloïd publié hebdomadairement en népalais. [ tous les vendredis ! ]
  • 1 magazine hebdomadaire publié en népalais. [ tous les dimanches ! ]

(Pour ceux qui ne le savent pas, le népalais est la langue nationale parlée ici au Népal, qui se trouve dans le sud de l'Asie, connu sous le nom de Terre de Bouddha et de Mont. Everest].

Travail

La première chose que nous pouvons faire est de vérifier la date du système et d'obtenir l'année, le mois, le jour et le jour de la semaine qui peuvent être atteints en bash comme ceci.

1
2
3
4
5
6
7
8
9
# vérifier la date avec le système
y=$(date +%Y)
# imprime l'année en format complet. Ex : 2017
m=$(date +%m)
# imprime le mois. Ex : 04
d=$(date +%d)
# imprime le jour. Ex : 12
w=$(date +%u)
# imprime le jour de la semaine. Ex : 3=mercredi

Les variables utilisées ici seront utiles lors de l'utilisation avec wget.

Le script vérifie d'abord le répertoire principal et si le répertoire n'y est pas présent, il crée le dossier. Ensuite, il entre dans le dossier. Le scénario utilise wget pour télécharger le papier, assurez-vous qu'il est déjà installé dans le système ou nous pourrions vérifier et installer s'il n'est pas présent. Mais pendant ce temps, je saute cette partie.

L'étape suivante consiste à créer un dossier distinct pour chaque journal et magazine de sorte que le script télécharge automatiquement le papier électronique à l'intérieur de ceux-ci. Sans les autres explications, la tâche principale consisterait à vérifier le dossier et à créer, s'il n'est pas présent, et à télécharger l'epaper disponible au fur et à mesure de l'exécution du script.

La commande principale que nous pouvons faire en téléchargeant l'epaper ressemble à ceci.

1
wget -O [nom du journal ou du magazine]-$y-$m-$d.pdf "http://epaper.ekantipur.com/epaper/name-of-newspaper-or-magazine/$y-$m-$d/$y-$m-$d.pdf".

Bien que le bloc de commande soit auto-explicatif, un peu d'explication.

La version epaper du journal et des magazines serait comme ceci [2018-10-03.pdf] pour aujourd'hui, nous avons donc utilisé la variable de la première étape à remplacer dans le lien de téléchargement pour la journée. Le jour de la semaine est extrait pour vérifier les magazines hebdomadaires en considérant le lundi comme 1, car le tabloïd est publié tous les vendredis et le magazine tous les dimanches.

La prochaine étape consistera à mettre en place un CRON JOB où nous dirons au script de se dérouler tous les 6 ou 7 heures du matin. Nous avons donc organisé le travail comme suit :

crontab -e

Insérer ensuite comme suit

0 6 * * * /home/nom d'utilisateur/script/newspaper-to-pdf.sh où le chemin est l'emplacement de votre script.

De plus, nous pouvons personnaliser le cron pour simplifier votre travail. Mais dans mon cas, j'ai désactivé la sortie du courrier électronique. C'est tout pour aujourd'hui !

Voici le scénario complet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/bin/bash
#Description
#program to download the epaper from the kantipur.com
#Available Epapers by ekantipur media
#    Kantipur
#    The Kathmandu Post
#    Saptahik
#    Nepal
# 1. Clone/Download the zip.
# 2. Give execute permission to the script file by  chmod +x ekantipur.sh
# 3. Run the script ./ekantipur.sh .
# Epapers will be downloaded in the following format: Newspapername-year-month-day.pdf
# Replace ~/Newspaper/kantipur/*/* in the download link with the directory to wherever you want to download!

echo "################################################################"
echo "###################  News-2-PDF downloader! ####################"
echo "################################################################"
echo ""
echo "Checking Date with your system.. Please wait!"
#checking the date with the system
y=$(date +%Y)
#prints the year in full format. Eg: 2017
m=$(date +%m)
#prints the month. Eg: 04
d=$(date +%d)
#prints the day. Eg: 12
w=$(date +%u)
#prints the week day. Eg: 3=wednesday

#using wget
#downloading the kantipur[daily-nepali]
#checking the date with the system

echo "Folder may exist. It will automatically enter into the directory if present!"
cd ~
if [ -d Kantipur ]
then
    echo "Directory is present. Entering into the directory..."
else
    echo "Directory is not present. Creating the directory..."
    mkdir Kantipur
fi
cd Kantipur
echo "Downloading Kantipur Dainik for today.. Please wait!"
if [ -d Kantipur-daily ]
then
    echo "Directory is present. Entering into the directory..."
else
    echo "Directory is not present. Creating the directory..."
    mkdir Kantipur-daily
fi
cd Kantipur-daily
wget -O kantipur-$y-$m-$d.pdf "http://epaper.ekantipur.com/epaper/kantipur/$y-$m-$d/$y-$m-$d.pdf"
echo "Successfully downloaded Kantipur for today!"

#downloading the kathmandu post[daily-english]
cd ../
if [ -d Kathamndu-Post ]
then
    echo "Directory is present. Entering into the directory..."
else
    echo "Directory is not present. Creating the directory..."
    mkdir Kathmandu-Post
fi
cd Kathmandu-Post
echo "Downloading The Kathmandu Post for today.. Please wait!"
wget -O thekathmandupost-$y-$m-$d.pdf "http://epaper.ekantipur.com/epaper/the-kathmandu-post/$y-$m-$d/$y-$m-$d.pdf"
echo "Successfully downloaded The Kathmandu Post for today!"

#Saptahik is released every friday!
#checking the system date to match if it is friday
#monday=1
if [ $w == 5 ]
then
echo "Downloading Saptahik for this weekend.. Please wait!"
cd ../
if [ -d Saptahik ]
then
    echo "Directory is present. Entering into the directory..."
else
    echo "Directory is not present. Creating the directory..."
    mkdir Saptahik
fi
cd Saptahik
wget -O saptahik-$y-$m-$d.pdf "http://epaper.ekantipur.com/epaper/saptahik/$y-$m-$d/$y-$m-$d.pdf"
echo "Successfully downloaded Saptahik for this week!"
else
echo "Saptahik isn't available for today! Wait till Friday!"
fi

#Nepal magazine is released every Sunday
#checking the system date to match if it is Sunday
#monday=1
if [ $w == 7 ]
then
echo "Downloading Nepal for this weekend.. Please wait!"
cd ../
if [ -d Nepal ]
then
    echo "Directory is present. Entering into the directory..."
else
    echo "Directory is not present. Creating the directory..."
    mkdir Nepal
fi
cd Nepal
wget -O nepal-$y-$m-$d.pdf "http://epaper.ekantipur.com/epaper/nepal/$y-$m-$d/$y-$m-$d.pdf"
echo "Successfully downloaded Nepal for this weekend!"
else
echo "Nepal magazine isn't available for today! Wait till Sunday!"
fi
echo "################################################################"
echo "################  Operation Successfully completed! ############"




Rajan Bhattarai
Rajan Bhattarai
Ingénieur logiciel par métier. Développeur Full Stack Ruby on Rails. Blogger de DevOps et Blockchain.Tech. Demandes de renseignements et articles : hello@cdrrazan.com -Rb


commentaires alimentés par Disqus