Facebook – automatyczne podziękowania za życzenia!

Co roku mamy urodziny, osoby posiadające Facebooka, które udostępniły datę swojego urodzenia, zmagają się z masą postów pokroju „Wszystkiego najlepszego!” czy „Stóweczka!”. Czas na to coś poradzić i zautomatyzować proces podziękowań.

Z pomocą przychodzi nam język Python wraz z dwoma bibliotekami. Pierwsza z nich to time, która będzie odpowiadała za polecenie sleep(time_in_seconds). Druga to pyautogui dzięki której będziemy mogli wysyłać skróty klawiszowe i tekst do przeglądarki. Na samym początku informuję, że jest to dość prymitywna metoda, ale liczy się skuteczność działania.

Instalacja

Aby zainstalować drugą z podanych bibliotek, użyjemy pythonowskiego menadżera pakietów pip. Wykonajmy więc polecenie w terminalu/konsoli.

pip install pyautogui

Pierwsza biblioteka jest domyślną dla Pythona, nie będziemy musieli się o nią martwić.

Piszemy skrypt

Najsampierw stwórzmy sobie plik dla skryptu – u mnie jest to Main.py. Następnie musimy dodać dwie bardzo ważne linijki…

from time import sleep
import pyautogui as pg

Odpowiadają one za import funkcji znajdujących się w bibliotekach. Następnie musimy skonfigurować pyautogui tak by działało bez problemów. Zrobimy to z pomocą dokumentacji.

pg.PAUSE = 0.5
pg.FAILSAFE = False

Pierwsza linijka odpowiada za opóźnienie między kolejnymi operacjami (wciśnięcie klawisza, skrótu klawiszowego). Kolejna linijka jest od obsługi błędów. Ogólnie dobrze jest to ustawić na wartość False (dokumentacja jest bogiem, ona powiedziała, że jak się używa opóźnienia to ma być False, więc tak ma być).

Teraz przechodzimy do GUI dla użytkownika. Pojawi się ono w momencie wykonania skryptu i pozwoli na wprowadzenie własnego skryptu i da czas na ustawienie kursora w odpowiednim polu na Facebooku.

text = pg.prompt(text='Wpisz tekst podziekowania (bez polskich znakow)', title='Birthday', default='')
pg.alert(text='Kliknij OK i umiesc kursor w polu od ktorego ma zaczac ', title='Birthday', button='OK')
sleep(10)

Nic więcej nie trzeba do tego dodawać. Wszystko powinno być jasne, aleeeee… pierwsza linijka ma przypisanie, ponieważ funkcja prompt() zwraca wprowadzony przez użytkownika tekst. Ostatnia linijka usypia program na 10 sekund. Dla ułatwienia rzućcie okiem na zrzut ekranu z wykonania linijki z przypisaniem.

Czas na najważniejszą pętlę programu.

while True:
    try:
        pg.typewrite(text)
        pg.press('return')
        sleep(2)
        for x in range(14):
            pg.press('tab')
    except KeyboardInterrupt:
        print "Koniec, do zobaczenia za rok."

W pętli dzieje się cała magia. Na początku wykonuje się funkcja typewrite(), która wysyła w imieniu klawiatury tekst podany przez użytkownika. Następnie „wciska” przycisk ENTER/RETURN i czeka dwie sekundy (tak dla pewności, że się wysłało). Według moich obliczeń, aby przejść z jednego postu do drugiego należy 14 razy wcisnąć przycisk TAB. Kod wykonuje się w nieskończoność, dlatego dobrze jest nadzorować działanie. Przerwanie działania to zamknięcie rodzica, w którym został wykonany skrypt (terminal/konsola) lub zatrzymanie wykonania skryptu w środowisku (np. PyCharm).

Podsumowanie

Prosto, przyjemnie i automatycznie. To by było na tyle. Skrypt będzie dostępny na GitHubie do pobrania i sprawdzenia. Miłego dnia, a ja idę porozmawiać… „OK Google, sing for me Happy Birthday song”.

SOURCE: github.com/Pelski/thanksforhappybirthday

#shareShare on FacebookShare on Google+Tweet about this on TwitterShare on TumblrPin on PinterestShare on LinkedInShare on VKShare on RedditEmail this to someone