Main account: @UlrikHD@programming.dev
- 3 Posts
- 20 Comments
UlrikHD@lemm.eeOPMto Football@lemm.ee•Brentford 0 - [2] Liverpool - Darwin Núnez 90+3'English2·3 months agoHe took those transfer rumours personally it seems
UlrikHD@lemm.eeMto Football@lemm.ee•After tonight's annual meetings, the majority of clubs in Norwegian football's two top divisions vote to get rid of VAREnglish1·3 months agoI definitely agree with the majority here (even though my club doesn’t).
What’s your club?
Fair is fair, can’t complain when we rely on tight margins with the high line ourselves.
Lewandowski’s “clown shoe” model was more upsetting.
UlrikHD@lemm.eeOPMto Football@lemm.ee•Welcome to football@lemm.ee, Lemmy's new home to The Beautiful Game ⚽English4·3 months agoSounds like a bug that should be raised to the voyager dev, community names should be case insensitive. You can make a report here, if you don’t have a github account I can do it for you if you want?
UlrikHD@lemm.eeto Football (Soccer fútbol fußball 足球 )@lemmy.world•[Announcement] Community migration to football@lemm.eeEnglish4·3 months agoIf you need any technical help, you can message me at @UlrikHD@programming.dev
UlrikHD@lemm.eeto Football (Soccer fútbol fußball 足球 )@lemmy.world•[Announcement] Community migration to football@lemm.eeEnglish5·3 months agoWith this script, can you get the list of subcribers ?
I don’t think the Lemmy API exposes the subscriber list of a community, you’ll need access to the instance database.
What I did was checking every post for the last 365 days for user activity and store every user that have interacted with the community.
lemmy_session and lemmy_references are the same as for the LiveThreadBot (inside the src folder): https://gitlab.com/UlrikHD/lemmy-match-thread-bot
get_posts() may be missing from the lemmy_session.py file though
def get_posts(self, *, community: int | str | LemmyCommunity, sort: str = 'New', page: int = 1) -> dict[str, any]: """ Gets the posts of a community. :param community: The ID of the community to get the posts of, can also be a LemmyCommunity parseable string/object. :param sort: The sorting method of the posts, by default 'New'. :param page: The page number of the posts, by default 1. :return: The response JSON of the request as a dictionary. """ if isinstance(community, LemmyCommunity) or isinstance(community, str): response: Final[requests.Response] = self.srv.get_posts(community_name=community, sort=sort, page=page, limit=50) else: response: Final[requests.Response] = self.srv.get_posts(community_id=community, sort=sort, page=page, limit=50) if response.status_code != 200: raise requests.exceptions.HTTPError(response.text) return response.json()
Excuse the ugly code, it was written as a one-off
import os import time import datetime from json import load, dump import requests from lemmy_references import LemmyCommunity, LemmyUser from lemmy_session import LemmySession session: LemmySession = LemmySession(website='https://lemmy.world/', username='TestUlrikHD', password='---', end_script_signal=None) posts: list[dict[[str, any]]] = [] cutoff_date: datetime.datetime = datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta(days=365) page_count: int = 1 loop_break: bool = False while True: post_response: dict[str, any] = session.get_posts(community=LemmyCommunity('football', 'lemmy.world'), page=page_count) page_count += 1 for post in post_response['posts']: if datetime.datetime.fromisoformat(post['post']['published']) > cutoff_date: posts.append(post) else: loop_break = True break if loop_break: break user_dict: dict[str, dict[str, any]] = {} for post in posts: user_dict[str(LemmyUser(post['creator']['actor_id']))] = {'post': True, 'post_id': post['post']['id']} comments = session.get_post_comments(post_id=post['post']['id']) for comment in comments['comments']: user: str = str(LemmyUser(comment['creator']['actor_id'])) if user not in user_dict: user_dict[user] = {'post': False, 'post_id': comment['post']['id'], 'parent_id': comment['comment']['id']} del user_dict[str(LemmyUser('FootballAutoMod@lemmy.world'))] del user_dict[str(LemmyUser('LiveThreadBot@lemmy.world'))] with open('user_dict', 'w', encoding='utf-8') as file: dump(user_dict, file, ensure_ascii=False, indent=4) def log_reply(usr: str) -> None: user_list: list[str] = [] if os.path.isfile('reply_list.json'): with open('reply_list.json', 'r', encoding='utf-8') as file: user_list = load(file) user_list.append(str(usr)) with open('reply_list.json', 'w', encoding='utf-8') as file: dump(user_list, file, ensure_ascii=False, indent=4) for username, user in user_dict.items(): time.sleep(1) try: #if user['post']: # session.reply(content='migration message', post_id=user['post_id'], parent_id=None) #else: # session.reply(content='migration message', post_id=user['post_id'], parent_id=user['parent_id']) log_reply(usr=LemmyUser(username).str_link()) except requests.HTTPError as e: print(f'Failed to send message to {username} - {e}')
and this part creates txt for easy copy pasting for tagging.
from json import load with open('reply_list.json', 'r', encoding='utf-8') as file: user_list: list[str] = load(file) loop_count: int = len(', '.join(user_list)) // 9500 + 1 for i in range(loop_count): with open(f'reply_list_{i}.txt', 'w', encoding='utf-8') as file: print(len(' '.join(user_list[i * len(user_list) // loop_count:(i + 1) * len(user_list) // loop_count]))) file.write(', '.join(user_list[i * len(user_list) // loop_count:(i + 1) * len(user_list) // loop_count]))
UlrikHD@lemm.eeOPMto Football@lemm.ee•Welcome to football@lemm.ee, Lemmy's new home to The Beautiful Game ⚽English3·3 months agoI feel pretty sympathetic with the admin team. They’re in a spot where it’s impossible to not make one group or another angry. They are probably doing their best to create a nice server. It’s clear from their ad hoc rules that the team keep facing new problems they weren’t expecting.
UlrikHD@lemm.eeto Football (Soccer fútbol fußball 足球 )@lemmy.world•[Announcement] Community migration to football@lemm.eeEnglish4·3 months agoIf you are referring FootballAutoMod it’s a very basic bot I wrote for posting weekly discussion threads. The tagging of people were just a simple script I wrote to get a list of everyone who have interacted with the community in the last 365 days and then splitting the list up to get within the 10k character limit for comments.
UlrikHD@lemm.eeMto Football@lemm.ee•This is the first time in the Premier League that a referee has rejected a red-card review at the monitor. And so the first a red-card review has resulted in a yellow card.English2·3 months agoWas that the one where he chopped Cucurella’s head? Was watching the Liverpool game at the bar so didn’t pay much attention the outcome of it.
It wasn’t my first FIFA game, but FIFA World Cup 2010 was an absolute gem. Everything from the music selection, the atmosphere during the game, to the selection globe when picking a team. It certainly defined that summer for me.
UlrikHD@lemm.eeMto Football@lemm.ee•This is the first time in the Premier League that a referee has rejected a red-card review at the monitor. And so the first a red-card review has resulted in a yellow card.English1·3 months agoWas it the Chelsea game? I don’t have a twitter account so I can’t access the tweet?
UlrikHD@lemm.eeMto Football@lemm.ee•The only way to post on this new community: an incredible shitpostEnglish6·3 months agoWhat a way to kick off the new community 😅
UlrikHD@lemm.eeMto Football@lemm.ee•After tonight's annual meetings, the majority of clubs in Norwegian football's two top divisions vote to get rid of VAREnglish6·3 months agoI’m personally in favour VAR, never felt it was much of an obstruction while going to local games. Glad my club voted in favour ⚪🔵
UlrikHD@lemm.eeOPMto Football@lemm.ee•Welcome to football@lemm.ee, Lemmy's new home to The Beautiful Game ⚽English2·3 months ago@LiveThreadBot@lemm.ee -mod_action whitelist football@lemm.ee
UlrikHD@lemm.eeOPMto Football@lemm.ee•Welcome to football@lemm.ee, Lemmy's new home to The Beautiful Game ⚽English1·3 months agoThanks. Yes, it’s the same icon and banner for now. You can find them here: https://imgur.com/a/gQTOBYv
UlrikHD@lemm.eeOPMto Football@lemm.ee•Welcome to football@lemm.ee, Lemmy's new home to The Beautiful Game ⚽English2·3 months agoI sent you a DM about it. Once the icon and banner is set up I’ll make the announcement and deploy the AutoMod to lock the old community.
-mod_action buffer_time 1800 football@lemm.ee