Wyciąganie tagów pl- ze Steem

in #polish7 years ago

image.png

Jakiś czas temu z @jacekw w komentarzach zastanawialiśmy się nad wyciąganiem wszystkich tagów rozpoczynających się od pl- czyli subtagów polish.

Dałem temu szanse i oto moja próba...podejście...porażka :D
Zapraszam!

Co potrzeba

Węża3.6 lub Javy odpowiednio steem dshot lub steemjs

Oraz dużo cierpliwości.

Początek kodu:

from steem import Steem
import json
s = Steem()

Moje podejście numer 1

Jakiś czas temu zanim Steemnova przerwała mój workflow spróbowałem wyciągnąć nazwy wszystkich użytkowników zarejestrowanych na steem, co było banalne i ograniczyło się do jednej funkcji:


get_all_usernames(last_user=-1)

Na tamten czas było 693674 użytkowników. To będzie z niecały miesiąc temu.

Moją uwage przykuła druga funkcja:


get_tags_used_by_author(account: str)

i pomyślałem, że jak przepuszczę przez nią wszystkie nazwy użytkowników prostą pentelką to będzie z głowy i będę pierwszy

with open('usernames.txt', 'r') as f:
  for user in f.readline():
    o = s.get_tags_used_by_author(account=user)

ale wynik był o taki:

>>> s.get_tags_used_by_author(account="theravikin")
[]

I na wtedy to by było na tyle.

Podejscie numer 2 - dzisiaj

Zastosowałem trochę inne podejście. Zostawmy użytkowników w spokoju i skupmy się na tagach. Jest jedna działająca zdawałoby się odpowiednia funkcja w api:


get_trending_tags(after_tag: str, limit: int)

Ale tu też lipa że tak powiem. Wyciąga max 1k tagów + nie wszystkie. Nie wiem jak działa, nie jest to opisane i z prostego zapytania
s.get_trending_tags(after_tag="polish",limit=-1)
gdzie -1 oznacza bez limitu wyciąga tylko 1000 tagów i jeden z pl- czyli #pl-artykuly

Pomyślałem dobra, nic na siłę wszystko młotkiem....
I doszedłem do takich dwóch gagatków:

with open("tags.txt", 'w') as f:
    o =s.get_trending_tags(after_tag="polish",limit=-1)
    for json_dict in o:
        if 'name' in json_dict.keys():
            f.write(json_dict['name']+"\n")
with open("alltags.txt", 'w') as o:         
    with open("tags.txt", 'r') as i:
        for tag in i.readline():
            d = s.get_trending_tags(after_tag=tag,limit=-1)
            for json_dict in d:
                if 'name' in json_dict.keys():
                    o.write(json_dict['name']+"\n")

Te 2 iteracje w sumie zwracają 5161 tagów i tylko 4 z pl-:

root@kali:~/steem# sort all.txt | uniq | grep "pl-"
pl-art
pl-artykuly
pl-kuchnia
pl-wierszokleci

Na teraz skończyły mi się pomysły. Najwyżej zrobię 3 przejście ale to już nie teraz.
Jakby ktoś miał coś czym możnaby to wspomóc to poproszę w komentarzu! :D

Sort:  
Loading...

Widzę, że jednak z tym walczysz! Podoba mi się ten obrazek z nieogarniętym wężem :D Jeśli znajdę chwilkę wolnego czasu to spróbuję też pokombinować z tym ;)

Mojego autorstwa! :DD