Praca ze skryptem Comdiff
Oto instrukcja pracy z moim skryptem, dodanym jako bonus do wpisu „Facebook i patologie automatycznej moderacji”. Pozwala nam porównywać ze sobą komentarze spod tego samego posta na Facebooku, w widoku filtrowanym i niefiltrowanym.
Jeśli znajdzie przykłady komentarzy ukrytych, to zapisuje porównanie w czytelnej formie do pliku.
W 2023 roku Facebook zmienił domyślny sposób wyświetlania komentarzy; pojawiają się teraz wewnątrz elementu nad resztą strony. Dopasowałem do zmian mój skrypt i dodatek, ale upewnijcie się, że korzystacie z ich najnowszych wersji. Linki poniżej.
Skrypt jest prowizorką do użytku własnego, ma na razie sporo ograniczeń.
Przede wszystkim wymaga, żebyśmy odwiedzali stronę Facebooka przez przeglądarkę i to stamtąd kopiowali posty. Musimy też korzystać z polskiej lub angielskiej wersji (bo skrypt znajduje niektóre rzeczy po tekście, zależnym od języka).
Inne wady?
Może nie działać na wszystkich wariantach postów z Facebooka, których jest niemało (Facebook mobilny, główny, uproszczony; posty na grupach, tablicy, cudzych stronach…).
W zapisanym podsumowaniu nie będą się wyświetlały niektóre obrazy, takie jak miniaturki użytkowników. Możliwe też, że w kodzie HTML Facebook dodaje jakieś informacje, które pozwoliłyby zidentyfikować Wasze konto. Najlepiej nie udostępniać publicznie całego podsumowania.
Czujcie się uprzedzeni
Jeśli macie pytania, wątpliwości lub uwagi o błędach, to piszcie na maila podanego w zakładce O blogu
.
Wymagania
Przede wszystkim potrzebujemy mojego skryptu. Można go pobrać stąd.
Wszystkie poniższe instrukcje dotyczą komputerów. Od biedy da się używać skryptu również na urządzeniach mobilnych, co opisuję pod koniec.
Poza skryptem będziemy potrzebowali:
-
Pythona
Pobieramy go z oficjalnej strony i łatwo instalujemy.
Na Windowsie podczas instalacji klikamy, że chcemy zainstalować wszystko, wraz z modułempip
, i dodać Pythona do zmiennych systemowych (ang. Add to PATH).Na niektórych odmianach systemu Linux powinien być domyślnie dołączony do systemu. Możliwe jednak, że nowszą wersję mamy pod nazwą
pip3
. W takim wypadku to ją wpisujemy zamiastpip
. -
Bibliotek
lxml
orazBeautifulSoup
.Po zainstalowaniu Pythona otwieramy konsolę. W Windowsie to na przykład PowerShell albo Windows Terminal (znajdziemy w menu Start). Na Linuksie potrzebny program nazywa się Terminal.
Wpisujemy:pip install lxmlUwaga: W przypadku LXML-a na niektórych systemach może wyświetlić podczas instalacji komunikat o brakujących bibliotekach. Gdyby tak się stało, korzystamy z instrukcji z ich strony.
Następnie wpisujemy coś, co już powinno zadziałać szybko i prosto:pip install beautifulsoup4
I tyle powinno nam wystarczyć!
Jak kopiować posty
Znaleźliśmy jakiegoś posta. Podejrzewamy, że część komentarzy pod nim jest ukryta. Co z nim teraz zrobić?
Musimy zdobyć treść całego posta w formacie HTML. Nie wystarczy zatem, że po prostu zaznaczymy to, co widzimy na ekranie, i to sobie skopiujemy. Trzeba się dobrać do kodu strony, a sposoby na to są różne.
Narzędzia przeglądarki
Opcja domyślna, dostępna w każdej przeglądarce, ale nieco bardziej czasochłonna.
Klikamy prawym przyciskiem myszy na interesujący nas post i wybieramy opcję Zbadaj element
. Narzędzia same się otworzą.
Domyślnie narzędzia otwierają się u dołu przeglądarki. To dość nieporęczne, jest mało przestrzeni.
Żeby to poprawić, możemy kliknąć ikonę w prawym górnym rogu ich okna i stamtąd wybrać, żeby od teraz otwierały się w innym widoku. Polecam otwieranie w osobnym oknie. Nie dość że więcej miejsca, to jeszcze strona nie wykryje, że jakieś narzędzia otwieramy.
Teraz przesuwamy kursorem po linijkach kodu, a na stronie Facebooka kolorem będą zaznaczały się elementy, którym dany kod odpowiada. Zależy nam na tym, żeby objąć jeden post, ale nic więcej.
Post powinien być elementem z paroma atrybutami zaczynającymi się od aria-
oraz jednym role="article"
. Ale gwarancji nie mamy, bo czasem Facebook serwuje nieco inną wersję strony.
Gdy już znajdziemy odpowiedni element, klikamy prawym przyciskiem myszy odpowiednią linijkę kodu i wybieramy Kopiuj zewnętrzny HTML
. I już, post jest w naszym schowku.
SelSword
Każdorazowe, powtarzalne otwieranie narzędzi i zaznaczanie kodu może być uciążliwe. Zwłaszcza jeśli komentarzy jest wiele, a przeglądarka zacznie nam mulić.
Dlatego stworzyłem dodatek ułatwiający pracę, SelSword. Nie jest dostępny w oficjalnej bazie dodatków przeglądarkowych, ale możemy łatwo go zainstalować ręcznie (instrukcja w linku z poprzedniego zdania).
Kiedy mamy SelSworda w przeglądarce, wystarczy dwukrotnie kliknąć tekst posta. Tego nadrzędnego, nie komentarzy. Powinien otoczyć się czerwoną ramką. To znaczy, że do naszego schowka trafiła jego treść.
Praca ze skryptem
Kiedy już wiemy jak kopiować posty, to praca ze skryptem jest prosta.
Najpierw go uruchamiamy. Sposób jest obojętny – można przez domyślny edytor IDLE, można podwójnym kliknięciem, można przez konsolę.
Potem znajdujemy na stronie Facebooka interesujący nas post. Żeby nie umknęły nam żadne komentarze, musimy niestety rozwinąć wszystko ręcznie. Mój dodatek nie zrobi tego za nas.
Na pocieszenie powiem, że kiedy zbieramy komentarze w trybie Najpopularniejsze
, to nie musimy rozwijać każdego z nich (czyli klikać w pogrubione Zobacz więcej na końcu tekstu). Wystarczy, że takie pełne rozwijanie zrobimy raz, w widoku Wszystkie
.
Skrypt już pozna po linkach, kiedy ma dwie wersje tego samego komentarza, i zawsze wybierze tę rozwiniętą.
Poza tym warto wybierać post już nieco starszy, do którego nie są na bieżąco dodawane nowe komentarze. Gdyby ktoś dodał coś nowego w czasie kiedy przełączamy się między widokami, to podsumowanie od skryptu nie będzie wiarygodne.
Najpierw rozwijamy tylko listę komentarzy. Potem kopiujemy cały post, metodą opisaną wyżej. Otwieramy konsolę z naszym skryptem i naciskamy Enter
. Skrypt da znać, że skopiował komentarze i czeka na pełną wersję posta.
W tym momencie warto porównać liczbę komentarzy skopiowanych z liczbą wszystkich, umieszczoną przez Facebooka pod postem. Jeśli jest ich tyle samo, to nie ma sensu rozwijać w nowym widoku. Facebook niczego nie schował.
Jeśli liczby wskazują, że coś zostało ukryte, to zmieniamy widoczność komentarzy na Wszystkie
. Znów rozwijamy, tym razem nawet treść poszczególnych komentarzy. Kiedy skończymy, ponownie kopiujemy post.
Wracamy do konsoli z naszym skryptem i naciskamy Enter
. Powinna się wyświetlić informacja o liczbie komentarzy ocenzurowanych, a plik z podsumowaniem trafi do podfolderu Documents/cenzura
w naszym folderze głównym.
I jeszcze jedna sprawa – co, jeśli liczba komentarzy w trybie Wszystkie
nadal jest mniejsza od liczby podawanej przez Facebooka?
Oznacza to, że brakujące komentarze zostały usunięte definitywnie. Może przez samych autorów, może przez Fejsa.
Dodatkowe informacje
Na każdym etapie możemy nacisnąć Q
i Enter
, żeby opuścić program.
Jeśli na którymś etapie coś sknocimy – na przykład nie rozwiniemy wszystkich komentarzy, choć chcieliśmy – to można nacisnąć Z
i Enter
, żeby wrócić do poprzedniego etapu. Wtedy po prostu rozwijamy co trzeba i kopiujemy post jeszcze raz.
Poza tym skrypt daje możliwość porównywania plików znajdujących się na dysku. Nie znalazłem zastosowania dla tej opcji, ale może się przydać, gdybyśmy mieli pomocników umiejących kopiować, ale nie lubiących konsoli.
W tym trybie umieszczamy w jednym folderze dwa pliki z roszerzeniem .html (ważne). Jeden z postem zawierającym wszystkie komentarze, drugi z tym samym postem i schowanymi komentarzami.
Następnie uruchamiamy skrypt w tym folderze i naciskamy klawisze F
oraz Enter
.
Udanego łapania Facebooka na cenzurze!
A gdyby ktoś chciał robić to nawet na telefonie i nie bał się konsoli, to zapraszam do dalszego czytania.
Praca na telefonie
Comdiff powinien działać również na telefonach z systemem Android, jeśli użyjemy go przez aplikację Termux. Problemem jest przeglądarka, bo prawie żadna mobilna nie pozwala dorwać źródła strony. Dlatego musimy użyć jednej z nielicznych. W moim przykładzie będzie to Kiwi Browser.
Jeśli chcemy zdziałać na telefonie cokolwiek sensownego, trzeba zaznaczyć w przeglądarce (którą siłą rzeczy będzie Kiwi Browser) opcję Wersja na komputery
(ang. Desktop site).
Dlaczego? Bo w wersjach przeznaczonych dla urządzeń mobilnych, czyli m.facebook.com oraz mbasic.facebook.com nie jesteśmy w stanie w pełni rozwinąć komentarzy wraz z odpowiedziami.
- Pobieramy aplikację F-Droid.
-
Przez F-Droida instalujemy apki
Termux
orazTermux:API
.To ważne! Bez tej drugiej apki nie zyskamy dostępu do schowka. Z kolei wersja Termuxa dostępna w domyślnej androidowej bazie, PlayStore, jest nieco okaleczona przez Google.
Termux powinien też dostać pozwolenie na dostęp do systemu plików, żebyśmy mogli mu podrzucić nasz skrypt. -
Otwieramy Termuksa, instalujemy Pythona oraz moduły potrzebne mojemu skryptowi.
Uprzedzam, że po drodze jest parę niuansów, których nie było przy poprzednich wynalazkach z bloga. Głównie przez fakt, że instalujemy bibliotekę
lxml
, i to na telefonie. Dokładne instrukcje dotyczące instalacji i rozwiązywania problemów znajdziemy w samouczku dotyczącym Termuksa. -
Pobieramy przeglądarkę Kiwi Browser i instalujemy w niej dodatek
SelSword
, opisany wyżej.Jak wspomniałem, jest jedną z niewielu pozwalających instalować dodatki. Oprócz tego daje dostęp do narzędzi przeglądarki, ale są niestety dość nieporęczne, więc dodatek wciąż raczej się przyda.
-
Pobieramy mój skrypt i kopiujemy go do folderu Termuksa.
Jeśli pobraliśmy skrypt przez przeglądarkę, z mojej strony, to powinien trafić do folderu
Download
. Zatem powinna zadziałać komenda:cp /storage/emulated/0/Download/comdiff.py ~Pamiętajmy o spacjach! Dla pewności można skopiować całość stąd.
Uprzedzam jednak, że nie wiem czy ścieżka będzie taka sama na wszystkich wersjach Androida.
Gotowe! Było tych kroków niemało, ale wszystkie na szczęście sprowadzają się do prostej klikaniny.
Od teraz, kiedy przeglądamy stronę Facebooka przez Kiwi Browser – wersję komputerową, przypomnę – możemy dwukrotnie nacisnąć palcem na post. Pojawi się wokół niego ramka. Włączamy Termuksa, wpisujemy:
I naciskamy klawisz potwierdzający. Skrypt powinien działać jak na komputerze, tyle że będzie zapisywał podsumowania ukrytych komentarzy do folderu Termuksa, niewidocznego dla innych aplikacji.
Gdy będziemy chcieli wyciągnąć ten folder na szeroki świat, możemy wpisać:
Skopiujemy go w ten sposób do głównego publicznego folderu naszego telefonu. A stamtąd możemy go wysłać gdziekolwiek chcemy; czy to przez Bluetooth, czy to przez USB.