Wyciąganie tagów pl- ze Steem
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
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