-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcli.py
115 lines (98 loc) · 3.31 KB
/
cli.py
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
113
114
115
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
from crawler import login
from exceptions import LoginException
"""
File: cli.py
Author: lhel
Email: [email protected]
Github: https://github.com/luheeslo
Description: Interface de linha de comando para acesso ao conteúdo do
Eu Vou Passar
"""
import argparse
EMAIL = os.getenv('EVP_EMAIL')
SENHA = os.getenv('EVP_PASSWORD')
PATH = os.getenv('DOWNLOAD_PATH')
def mostrar_materias(count=-1):
try:
crawler = login(EMAIL, SENHA)
materias = crawler.materias()
for i, materia in enumerate(materias):
pos = i + 1
print('%d - %s' % (pos, materia[0]))
if count == pos:
break
except LoginException as e:
print(e)
def mostrar_cursos(nome_materia, numero_curso=0):
try:
crawler = login(EMAIL, SENHA)
for i, curso in enumerate(crawler.cursos(nome_materia)):
pos = i + 1
if numero_curso:
if numero_curso == pos:
return curso[1]
else:
print('%d - %s' % (pos, curso[0]))
except LoginException as e:
print(e)
def mostrar_aulas(url_curso, numero_aula=0):
try:
crawler = login(EMAIL, SENHA)
aulas = crawler.aulas(url_curso)
for i, aula in enumerate(reversed(list(aulas))):
pos = i + 1
if numero_aula:
if numero_aula == pos:
return (aula['titulo_aula'],
aula['data_aula'],
aula['types']
)
else:
print('%d - %s' % (pos, aula['titulo_aula']))
except LoginException as e:
print(e)
def baixar_aula(titulo_aula, data_aula, type, path=''):
try:
crawler = login(EMAIL, SENHA)
for file in crawler.baixarAula(data_aula, type, path=path):
p = (file[0] * 100) / file[1]
sys.stdout.write('Baixando %s %s %.2f%% \r' %
(type, titulo_aula, p))
sys.stdout.flush()
print('\n')
except LoginException as e:
print(e)
parser = argparse.ArgumentParser(
description='cli para acesso ao Eu Vou Passar')
parser.add_argument('-c', '--cursos', metavar='materia', dest='nome_materia',
help='Mostra todos os cursos referentes a uma máteria')
parser.add_argument('-m', '--materias',
help='Mostra todas as matérias',
action='store_true')
parser.add_argument('-n', metavar='n', type=int,
help='número de matérias a serem mostrados')
parser.add_argument('-d', metavar='n', type=int, nargs='+',
help='download da aula')
args = parser.parse_args()
if args.materias:
if args.n:
mostrar_materias(args.n)
else:
mostrar_materias()
if args.nome_materia:
if args.n:
url_curso = mostrar_cursos(args.nome_materia, args.n)
if args.d:
for choose in args.d:
titulo_aula, data_url, types = mostrar_aulas(url_curso, choose)
for type in types:
if type:
baixar_aula(titulo_aula, data_url, type, path=PATH)
else:
mostrar_aulas(url_curso)
else:
mostrar_cursos(args.nome_materia)