-
Notifications
You must be signed in to change notification settings - Fork 3
/
FacebookPoster.py
165 lines (140 loc) · 4.45 KB
/
FacebookPoster.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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
'''
PYTHON SCRIPT: Facebook Auto Poster
Autor: German Sommariva
Contacto
Facebook: www.facebook.com/german.sommariva
'''
from selenium import webdriver
import os
import time
def CargarMensaje():
print("Cargando mensaje")
# Mensaje
archivo = open("mensaje.txt", 'r', encoding="utf8")
msj = archivo.read()
archivo.close()
return msj
def CargarGrupos():
print("Cargando listado de grupos")
# Lista de grupos
archivo = open("grupos.txt", 'r')
lg = []
for grupo in archivo.readlines():
lg.append(grupo)
archivo.close()
return lg
def CargarImagen():
usi = int(input('''
Ingrese una opcion
0. No usar imagen
1. Usar imagen
'''))
while (usi != 1 and usi != 0):
print("Opcion incorrecta, vuelva a intentar")
usi = int(input('''
Ingrese una opcion
0. No usar imagen
1. Usar imagen
'''))
return usi
def CargarDireImagen(op):
if (op == 1):
print("Cargando direccion de la imagen")
# Imagen
imagen = os.path.join(os.getcwd(), "imagen.jpg")
else:
imagen = ""
return imagen
def CargarLogin():
# Datos previos
print("Carga datos del Login")
# Cargamos el archivo
archivo = open("datos.txt", "r")
lineas = []
for linea in archivo.readlines():
lineas.append(linea)
archivo.close()
# Fin de uso del archivo
return lineas
#Funcion Logear
def LogearFacebook(u,c):
#Elementos de facebook
try:
login = browser.find_element_by_id("email")
p = browser.find_element_by_id("pass")
boton = browser.find_element_by_id("loginbutton")
# Llenado de datos
login.send_keys(u)
p.send_keys(c)
boton.click()
return True
except:
return False
##########
#Navegador
##########
print("Iniciando Programa")
usar_imagen = CargarImagen()
print("Configurando navegador")
#Configuracion
perfil = webdriver.FirefoxProfile()
#Eliminar notificaciones
perfil.set_preference("dom.webnotifications.enabled", False)
#Creacion del navegador
browser = webdriver.Firefox(firefox_profile=perfil)
print("Entrando a facebook")
browser.get('https://www.facebook.com')
print("Maximizando")
browser.maximize_window()
mensaje = CargarMensaje()
if "mensajeprueba" in mensaje:
print("Se esta usando el mensaje predeterminado. Modifique el archivo \"mensaje.txt\" con su propio mensaje")
browser.quit()
lista_grupos = CargarGrupos()
if "www.grupoprueba1.com" in lista_grupos:
print("Se esta usando la lista de grupos predeterminada. Modifique el archivo \"grupos.txt\" con su propia lista")
browser.quit()
imagen = CargarDireImagen(usar_imagen)
datos_login = CargarLogin()
usuario = datos_login[0]
contra = datos_login[1]
if usuario == "usuarioprueba" or contra == "contraseñaprueba":
print("Se estan usando datos de login predeterminada. Modifique el archivo \"datos.txt\" con sus propios datos")
browser.quit()
print("Logeando")
LogearFacebook(usuario, contra)
#Logear
#Recorrido de grupos
i = 1
cantidad_lograda = 0
for grupo in lista_grupos:
try:
print("Entrando al grupo " + str(i) + ". Link: " + grupo)
browser.get(grupo)
time.sleep(5)
print("Realizando posteo")
#Ubicar la caja de posteo
p = browser.find_element_by_xpath("//*[@name='xhpc_message_text']")
print("Enviando mensaje")
#Enviando mensaje
p.send_keys(mensaje)
time.sleep(3)
if usar_imagen == 1:
#Cargar imagen
print("Enviando imagen")
img = browser.find_element_by_xpath("//input[@class='_n _5f0v']")
img.send_keys(imagen)
time.sleep(10)
#Posteando
submit = browser.find_element_by_xpath('/html/body/div[1]/div[3]/div[1]/div/div[2]/div[2]/div[2]/div[2]/div[3]/div[1]/div/div/div[2]/div[1]/div/div/div/div[2]/div/div[1]/div[2]/div[3]/div/div[2]/div/div[2]/span/button')
print("Posteando")
submit.click()
time.sleep(10)
cantidad_lograda += 1
print(" ")
except:
print("Ocurrio un error con el grupo " + str(i) + ". Link: " + grupo)
i += 1
print("Se logró publicar en " + str(cantidad_lograda) + "/" + str(len(lista_grupos)) + " grupos.")
print("Proceso finalizado")
browser.quit()