README.md 3.23 KB
Newer Older
ALEJANDRO LARES PACHECO's avatar
ALEJANDRO LARES PACHECO committed
1
2
# BotSorteosTwitter

3
4
5
En Twitter todos los días se llevan a cabo sorteos. Por desgracia son muchos, por lo que la única forma de tener una oportunidad de ganar es participando en tantos como sea posible. Por ello, con ayuda de la API de Twitter y la librería 'Tweepy', hemos automatizado la participación de sorteos en twitter.

**Análisis del problema**
ALEJANDRO LARES PACHECO's avatar
ALEJANDRO LARES PACHECO committed
6

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
A la hora de participar en un sorteo en Twitter, es muy probable que tenga el siguiente formato:

_¡SORTEO ÚLTIMA OPORTUNIDAD!_

_¡Llévate el nuevo 𝗣𝗰𝗖𝗼𝗺 𝗗𝗶𝘀𝗰𝗼𝘃𝗲𝗿𝘆 27" por la cara!_

_- RT_

_- Sigue a_
_@pccomponentes y @pccom_

Como podemos observar, para participar en este sorteo, debemos seguir una serie de pasos que nos pide el tweet. Por suerte, la gran mayoría de tweets piden los mismos pasos:
- Seguir al creador del tweet y a las cuentas mencionadas
- RT
- Me gusta

**Objetivo**
ALEJANDRO LARES PACHECO's avatar
salto    
ALEJANDRO LARES PACHECO committed
24

25
26
27
28
29
30
31
32
33
34
35
36
37
Nuestro bot realizará estos pasos en tweets seleccionados, participando en los sorteos que estos ofrecen para aumentar nuestras probabilidades de éxito.

**Desarrollo**

1. Obtención de tweets

A través de los ejemplos provistos en el GitHub de Twitter '@TwitterDev' obtenemos código de la API para la funcionalidad de 'search recent' en python.
Dicha funcionalidad nos devuelve de los tweets producidos en los últimos 7 días que coincidan con la query que le indiquemos.
En nuestro caso, dicha query especifica que queremos tweets que cumplan lo siguiente:
- Debe contener el string 'sorteo' o 'sorteazo' o 'giveaway'
- Debe contener el string 'rt'
- Debe contener el string 'ps5' o 'switch' o 'Xbox' o 'logitech' o 'iPhone 13'

ALEJANDRO LARES PACHECO's avatar
ALEJANDRO LARES PACHECO committed
38
39
40
41
- Debe ser una cuenta verificada

- No puede ser un retweet ni una respuesta ni una mención

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
La API nos devolverá un diccionario con los tweets e información (como el ID del tweet) sobre los mismos que será de utilidad para el siguiente paso.

2. Procesado de tweets
Para este apartado entero, nos aprovecharemos de la librería 'tweepy' que hace que interactuar con los tweets usando python sea muy sencillo.
Por lo que como paso previo, inicializamos tweepy con nuestras claves y tokens.

- RT:

Con el ID del tweet obtenido en el paso anterior, llamamos a la función 'retweet' de tweepy.

- Like:

Con el ID del tweet obtenido en el paso anterior, llamamos a la función 'like' de tweepy.

- Follows:

Aquí hay dos objetivos: Seguir al autor del tweet y a todos los usuarios presentes en el tweet en sí.

a. Autor del tweet:

Simplemente llamamos a la función 'follow_user' de tweepy con el UserID del tweet obtenido en el paso anterior.

b. Mencionados en el tweet:

En primer lugar tratamos el texto del tweet, obteniendo los usuarios. Esto lo logramos extrayendo las palabras inmediatamente posteriores a un '@'(función get_usernames), y guardándolos en una lista que luego será recorrida para obtener su UserID y poder seguirlos con 'follow_user'.

**Resultados**

Podemos comprobar en la cuenta de Twitter usada, que efectivamente 'contesta' a los tweets requeridos con los pasos pedidos, por lo que estaríamos efectivamente participando en dichos sorteos.
ALEJANDRO LARES PACHECO's avatar
ALEJANDRO LARES PACHECO committed
71
72
73
74
75


_Proyecto realizado por:_

_Alejandro Lares Pacheco (100384019)_
76

ALEJANDRO LARES PACHECO's avatar
ALEJANDRO LARES PACHECO committed
77
_Pablo Jaro Muñoz (100384133)_
78

ALEJANDRO LARES PACHECO's avatar
ALEJANDRO LARES PACHECO committed
79
80
_Santiago Sobrini Sáez (10384088)_

81

ALEJANDRO LARES PACHECO's avatar
ALEJANDRO LARES PACHECO committed
82
_Para Computación Distribuida en la UC3M, 2021-2022_