Wpis

Jak zrobić własne usuńKonto z Wykopu

Usuwamy wpisy ze swojego profilu za pomocą wykop_sdk_reloaded

Jak zrobić własne usuńKonto z Wykopu

Wprowadzenie

Nadchodzi nowy rok, postanawiasz w końcu wyjść do ludzi i jako niezbędny krok planujesz zrobić #usunkonto . Chciałbyś jednak zatrzeć swoją aktywność i usunąć całą twórczość naprodukowaną przez lata internetowego uzależnienia. Cóż, możesz napisać do moderacji z prośbą o usuniecie wszystkich danych, jeszcze kilka lat temu nie było z tym żadnych problemów, jednak od jakiegoś czasu nie chcą już tego robić i jedyne co ulegnie usunięciu to twój profil z nickiem a komentarze do znalezisk i wpisy pozostają. Z tym pierwszym nie jestem wstanie Ci pomóc, ponieważ komentarzy nie da się usuwać z poziomu API, jednak wpisy to co innego i im poświęcam dzisiejszy post.

Przygotowanie

Na swoim systemie operacyjnym zainstaluj pythona w wersji 3.10 albo wyżej. Jeśli nie wiesz jak to zrobić to zajrzyj na oficjalną stronę pobierania. Po wykonaniu tej czynności powinieneś posiadać domyślny menedżer instalacji pakietów pip , ściągnij i wgraj paczkę wykop_sdk_reloaded za pomocą polecenia:

1
pip install wykop_sdk_reloaded

Potrzebujesz również rtokena z Wykopu. Jak to zrobić znajdziesz w przygotowanej przez ze mnie instrukcji .

Program

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
from os import getenv
from time import sleep

from wykop_sdk_reloaded.v3.client import AuthClient, WykopApiClient
from wykop_sdk_reloaded.exceptions import WykopApiLimitExceededError


def get_profiles_id(api, username):
    entries = api.profiles_get_profile_entries_added(username)["data"]
    return set(map(lambda entry: entry["id"], entries))


if __name__ == "__main__":
    username = getenv("USERNAME")
    rtoken = getenv("RTOKEN")

    auth = AuthClient()
    auth.authenticate_user(rtoken)

    api = WykopApiClient(auth)

    while True:
        try:
            while entries_id := get_profiles_id(api, username):
                for entry_id in entries_id:
                    api.entries_delete_entry(entry_id)
                    print(f"Wpis #{entry_id} został usunięty")

                    sleep(2)
            else:
                print("Nie ma nic do usunięcia")
                break

        except WykopApiLimitExceededError:
            print(f"Limit zapytań został przekroczony czekamy: {30}s")
            sleep(30)
  1. Funkcja get_profiles_id pobiera listę id wpisów podanego użytkownika username
  2. Zmienna username zostaje pobrana z środowiska, możesz ją zastąpić stringiem username = "username". Analogicznie zmienna rtoken którą zdobyłeś wcześniej za pomocą instrukcji
  3. Instancja logowania jest przekazywana do klienta API WykopApiClient
  4. Pętla while obsługuje sytuację przekroczenia limitu żądań. Niestety Wykop w tej materii jest raczej tajemniczy i nie wiadomo ile zapytań w jakim odstępie czasu może zostać maksymalnie obsłużone, a więc robię to tutaj trochę na ślepo. Po przekroczeniu limitu czekamy 30 sekund i ponawiamy
    1. Stworzona zostaje kolejna pętla while która pobiera listę wpisów za pomocą funkcji get_profiles_id. Jeśli nie ma niczego (pozdro dla kumatych) to pętla znajdująca się wyżej zostaje przerwana i program kończy swoje działanie. BTW wyszła pętla WhileWhileFor więc powoli zbliżamy się rozwiązaniami do tytułu bloga :)
      1. W pętli iterujemy po każdym id wpisu i go usuwamy
      2. Wypisujemy co usunęliśmy

Wsparcie

Jeśli artykuł ci się do czegoś przydał to postaw mi kawę ☕. Nie musi być to kawa z Starbucksa, taka biedronkowa też jest ok ;) Każda nawet najmniejsza dotacja to sygnał że to co robię jest dla Ciebie wartościowe.

Ten wpis jest licencjonowany na warunkach CC BY 4.0 przez autora.