aesereht | 2021-06-22 20:38:44 UTC | #1 Czy dałoby radę złączyć historie z wątku https://forum.dobreprogramy.pl/t/dawno-dawno-temu/35835 w jedną całość? :) bo przewijanie po wątkach przy tym jest jak walka z wiatrakami :) ------------------------- anon741072 | 2021-06-22 20:08:53 UTC | #2 niech będzie... [quote="Dawno, dawno temu, post:1, topic:35835"] dawno, dawno temu za wielkimi [/quote] ...drzwiami redakcji WP, powstał pomysł... ------------------------- krystian3w | 2021-06-22 20:47:33 UTC | #3 Może domker rozgryzł API i zrobi ci skrypt do konsoli przeglądarki "pobierz temat". Niby pojedyncze wpisy mają tryb surowy np.: https://forum.dobreprogramy.pl/raw/648695/ https://forum.dobreprogramy.pl/raw/648695/2 https://forum.dobreprogramy.pl/raw/648695/3 (raw traci info o nicku i dacie i raczej skryptem musiałbyś polecieć na 10000+ postów i najlepiej co jakiś czas zmieniać IP by cię WP nie odcięło na "dobę") ------------------------- aesereht | 2021-06-22 20:27:50 UTC | #4 [quote="krystian3w, post:3, topic:648695"] Niby pojedyncze wpisy mają tryb surowy np.: [/quote] ...zwariowany pomysł, ale zawsze pomysł... ------------------------- krystian3w | 2021-06-22 20:28:34 UTC | #5 Niby jest takie coś ale powiewa starością: https://github.com/mcmcclur/ArchiveDiscourse/blob/master/ArchiveDiscourse.ipynb ------------------------- anon741072 | 2021-06-22 20:37:22 UTC | #6 [quote="aesereht, post:4, topic:648695"] …zwariowany pomysł, ale zawsze pomysł… [/quote] bo lepiej mieć pomysł, niż *ps.* *@krystian3w nie łam zasad... 5 słów ;)* ------------------------- krystian3w | 2021-06-22 20:44:38 UTC | #7 Miałeś sobie wyciąć moje emoji w uBlock Origin, odszukaj stary kod w archiwum forum lub poducz się jak używać: `:has-text()` / `:contains()` https://github.com/gorhill/uBlock/wiki/Procedural-cosmetic-filters#subjecthas-textneedle (#subjecthas-textneedle) https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#extended-css-contains (#extended-css-contains) Trudniej jak ktoś też kliknie w moją reakcje, wtedy w regex musisz wykluczyć "and". [details="Podsumowanie"] `##button.post-retort:has( > span:has-text(/^krystian3w/))` lub pod nowsze uBO/AdGuard `##button.post-retort > span:has-text(/^krystian3w/):upward(1)` [/details] ------------------------- Domker | 2021-06-22 22:49:33 UTC | #8 Oj, chyba by mnie admin DP/WP za...ał jakbym zrobił `12642` zapytania do serwera, aby zeskrobać jakieś pojedyncze posty z tak dużego tematu. Można zrobić `632` zapytania GET, co i tak jest dużą liczbą, ale z drugiej strony forum tak samo się zachowuje, czyli pobiera po 20 wpisów w plikach JSON, przy przewijaniu tematów. W trybie RAW tego niestety nie zrobisz, ale można sobie dane "ugotować" ;) do pliku tekstowego. W tym celu wystarczy jakiś Linux, pakiet `curl`, `jq` do przefiltrowania drzewa JSON. Oczywiście `sed'em trzeba usunąć jeszcze wszystkie tagi z tekstu`, ale to nie problem. Skrypt w celach edukacyjnych - nie skrobać za dużo! :rofl: :joy: ```bash #!/bin/bash for (( i=0; $i <= 12640; i+=20 )) ; do jdata=$(curl -s -k -A "Mozilla/5.0 (Windows NT 666.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/666.0.4052.120 Safari/537.36" --header "Content-Type: application/json" https://forum.dobreprogramy.pl/t/35835/$i.json) echo $jdata | jq -r '.post_stream.posts[].cooked' | sed 's/<[^>]*>//g ; /^$/d' >> raw_data.txt echo "Licznik: $i" sleep 1 done ``` Zeskrobanie danych z tak dużego tematu zajmie około 11 min. Jednosekundowe opóźnienie jest ustawione tylko po to, aby nie przeginać z częstotliwością requestów, aka. DDoS :stuck_out_tongue: Jak ktoś zrobił cytat to niestety też tam to będzie. ------------------------- krystian3w | 2021-06-22 22:56:18 UTC | #9 W sumie ciekawe jak zablokują chromium 666 i za około 47-57 lat forum przestanie się ładować (mogłem się pomylić w cyklu wydań / "wydaleń" Chrome). ------------------------- aesereht | 2021-06-23 06:52:45 UTC | #10 Chciałem połączyć się przez R z jsonlite, ale na forum jest źle zaimplementowany certyfikat ssl i nie daje rady ustawić połączenia w R, wywala błąd :confused: https://www.sslshopper.com/ssl-checker.html#hostname=forum.dobreprogramy.pl potem wystarczyłoby coś w stylu ``` nowy<-as.list(NULL) for(zmienna in seq(0, 12640, 20)){ Sys.sleep(1) test<- fromJSON(paste0("https://forum.dobreprogramy.pl/t/35835/",zmienna,".json"),flatten = TRUE) nowy<-append(nowy,as.list(test$post_stream$posts$cooked)) } ``` [quote="Domker, post:8, topic:648695"] Jednosekundowe opóźnienie jest ustawione tylko po to, aby nie przeginać z częstotliwością requestów, aka. DDoS [/quote] Ja bym pewnie jako dos traktował coś powyżej 10 zapytań na sekunde ale jak nikt nic nie piszę to zwykle jedna sekunda jest bezpieczna :) ------------------------- aesereht | 2021-06-23 09:38:23 UTC | #11 Efekt końcowy :D https://forum.dobreprogramy.pl/t/dawno-dawno-temu-historia-prawdziwa/648700 -------------------------