this post was submitted on 15 Jan 2025
44 points (97.8% liked)

Football (Soccer fútbol fußball 足球 )

5700 readers
1 users here now

Please read the pinned post

Here for discussion of all things association football/soccer!

Rules

Other Football/Soccer Related Communities

founded 2 years ago
MODERATORS
 

With a 10:3 ratio in support for migrating the community off of lemmy.world as suggested by @Blaze@sopuli.xyz in this post, we will run a trial period of migrating the community over to !football@lemm.ee

Trial period

We will run a trial period of 2 months on lemm.ee to see how stable the instance is. Since all of you who discussed potential instances only had good things to say about the instance, expect the trial period to just be formality though.

Locking down football@lemmy.world

The FootballAutoMod has been configured to automatically lock down any new posts and tell the posters to repost in the new community. While I could lock the community completely, I think this solution might help inform those of you who maybe don't check in on the community regularly.

Why lemm.ee

It's a moderately large EU-based instance with little to no drama as far as I know. The admin team seems to be competent and maintains a neutral stance with few defederations across the fediverse. The instance also got multiple recommendations amongst our users.

all 38 comments
sorted by: hot top controversial new old
[–] FootballAutoMod@lemmy.world 12 points 1 week ago (4 children)

Hopefully Lemmy is able to tag everyone in the comments so that I don't need to have the AutoMod send a message to everyone (318) who have been active in football@lemmy.world within the last year.

Tagging for notifying everyone of the migration: @Prior_Industry@lemmy.world, @sabreW4K3@lazysoci.al, @Blaze@sopuli.xyz, @UndercoverUlrikHD@programming.dev, @sanguinepar@lemmy.world, @ryan213@lemmy.ca, @roserose56@lemmy.ca, @Viking_Hippie@lemmy.dbzer0.com, @Bakkoda@sh.itjust.works, @ThePowerOfGeek@lemmy.world, @Coelacanth@feddit.nu, @Churbleyimyam@lemm.ee, @keyez@lemmy.world, @baatliwala@lemmy.world, @Venicon@lemmy.world, @dogslayeggs@lemmy.world, @PlantDadManGuy@lemmy.world, @n7gifmdn@lemmy.ca, @metaphortune@lemmy.world, @kameecoding@lemmy.world, @Jackthelad@lemmy.world, @TastyWheat@lemmy.world, @NoForwardslashS@sopuli.xyz, @brlemworld@lemmy.world, @Rozz@lemmy.sdf.org, @rhacer@lemmy.world, @TheFriar@lemm.ee, @YtA4QCam2A9j7EfTgHrH@infosec.pub, @Oneser@lemm.ee, @IndiBrony@lemmy.world, @Doombot1@lemmy.one, @thisbenzingring@lemmy.sdf.org, @pisturko@lemy.lol, @MrFootball@lemmy.world, @UpperBroccoli@lemmy.blahaj.zone, @Lootboblin@lemmy.world, @OmegaLemmy@discuss.online, @AFC1886VCC@reddthat.com, @Tagger@lemmy.world, @apfelwoiSchoppen@lemmy.world, @sensiblepuffin@lemmy.world, @malfisya@lemm.ee, @FundMECFSResearch@lemmy.blahaj.zone, @borari@lemmy.dbzer0.com, @ReadyUser31@lemmy.world, @Dave@lemmy.nz, @Nerrad@lemmy.world, @SnokenKeekaGuard@lemmy.dbzer0.com, @Lannes21@lemmy.ml, @frightful_hobgoblin@lemmy.ml, @Sentau@discuss.tchncs.de, @jimbolauski@lemm.ee, @Ross_audio@lemmy.world, @eestileib@sh.itjust.works, @GrammarPolice@lemmy.world, @inlandempire@jlai.lu, @thisisdee@lemmy.world, @Blaze@discuss.online, @Blaze@reddthat.com, @RandAlThor@lemmy.ca, @OlPatchy2Eyes@slrpnk.net, @Hadriscus@lemm.ee, @hddsx@lemmy.ca, @kambusha@sh.itjust.works, @Mokopa@lemmy.world, @vinylshrapnel@lemmynsfw.com, @Vinny_93@lemmy.world, @arbitrary_sarcasm@lemmy.world, @renTee@lemmy.world, @Blaze@lemmy.cafe, @sasquash@sopuli.xyz, @slow_server@lemmy.world, @cyrano@lemmy.dbzer0.com, @PhobosAnomaly@feddit.uk, @Viking_Hippie@lemmy.world, @BonerMan@ani.social, @c0smokram3r@midwest.social, @imaqtpie@sh.itjust.works, @PitchPlease@fanaticus.social, @ohwhatfollyisman@lemmy.world, @ainz@lemmy.dbzer0.com, @JoshDoctsonFadeRoute@lemmy.world, @unbuckled@lemm.ee, @Senshi@lemmy.world, @Blizzard@lemmy.zip, @SquirrelX@lemmy.world, @socsa@piefed.social, @problematicPanther@lemmy.world, @BlitzoTheOisSilent@lemmy.world, @ABCDE@lemmy.world, @thepineapplejumped@lemm.ee, @specialseaweed@sh.itjust.works, @TestUlrikHD@lemmy.world, @Linkerbaan@lemmy.world, @skhayfa@lemmy.world, @kowanatsi@lemmy.world, @datavoid@lemmy.ml, @vzq@lemmy.blahaj.zone, @HobbitFoot@thelemmy.club, @spiderman@ani.social, @WoahWoah@lemmy.world, @fubarx@lemmy.ml, @delgato@lemmy.world, @lloydxmas@lemmy.world, @DrCake@lemmy.world, @wjrii@lemmy.world, @acannan@programming.dev, @Alteon@lemmy.world, @9point6@lemmy.world, @ODuffer@lemmy.world, @Blaze@feddit.org, @beeng@discuss.tchncs.de, @reboot6675@sopuli.xyz, @teft@lemmy.world, @mortalic@lemmy.world, @Redacted@lemmy.world, @SatyrSack@lemmy.one, @Quicky@lemmy.world, @Servais@discuss.tchncs.de, @zante@lemmy.wtf, @hannesh93@feddit.org, @TheEighthDoctor@lemmy.world, @Astrealix@lemmy.world, @motorwerks@sopuli.xyz, @readthemessage@lemmy.eco.br, @tychosmoose@lemm.ee, @nanometer@lemm.ee, @freeman@sh.itjust.works, @Theme@lemmy.blahaj.zone, @anzo@programming.dev, @Alterforlett@lemmy.world, @NeverSleepWalking@lemmy.world, @node_user@feddit.uk, @OlPatchy2Eyes@lemmy.world, @intensely_human@lemm.ee, @DrummXYBA@feddit.uk, @maltasoron@sopuli.xyz, @inspectorst@feddit.uk, @Skullgrid@lemmy.world, @suckmyspez@lemmy.world, @mjpc13@lemmy.world, @FenrirIII@lemmy.world, @laxe@lemmy.world, @thebestaquaman@lemmy.world, @haterwhohates@discuss.online, @hairynipple@lemmy.dbzer0.com, @lemmyng@lemmy.ca, @narrowide96lochkreis@lemmy.world, @Shardikprime@lemmy.world, @li10@feddit.uk, @gasgiant@lemmy.ml, @thesocavault@lemmy.world, @Peepolo@lemmy.world, @CombatWombatEsq@lemmy.world, @Anticorp@lemmy.world, @Kolanaki@yiffit.net, @UlrikHD@programming.dev, @mecfs@lemmy.world, @Guntrigger@sopuli.xyz, @tlou3please@lemmy.world

[–] FootballAutoMod@lemmy.world 14 points 1 week ago (1 children)

Tagging for notifying everyone of the migration: @1rre@discuss.tchncs.de, @iagomago@feddit.it, @Teknikal@lemm.ee, @notsofunnycomment@mander.xyz, @wjs018@lemmy.world, @johan@feddit.nl, @urquell@lemm.ee, @FlorianSimon@sh.itjust.works, @ricdeh@lemmy.world, @twinnie@feddit.uk, @xc2215x@lemmy.world, @tacuache@lemmy.world, @khannie@lemmy.world, @Easyreever@lemmy.world, @Coach@lemmy.world, @darkghosthunter@lemmy.ml, @Pumafred9@lemmy.world, @RVGamer06@sh.itjust.works, @Alchalide@lemmy.world, @Loupsius@sh.itjust.works, @doofusmagoo@sh.itjust.works, @pdxfed@lemmy.world, @Snoopy@jlai.lu, @vaderaj@lemmy.world, @dotdi@lemmy.world, @Sagan@lemm.ee, @zloubida@lemmy.world, @JimmyMcGill@lemmy.world, @euAppleHater@lemm.ee, @syd@lemy.lol, @AchtungDrempels@lemmy.world, @Trabic@lemmy.one, @FrickAndMortar@lemmy.world, @ShittyBeatlesFCPres@lemmy.world, @Pringles@lemm.ee, @kambusha@lemmy.world, @fullstackhipster@awful.systems, @timbuck2themoon@sh.itjust.works, @The_Terrible_Humbaba@slrpnk.net, @Omgarm@lemmy.world, @Servais@jlai.lu, @thedarkfly@feddit.nl, @setsneedtofeed@lemmy.world, @kozy138@lemm.ee, @2000mph@lemmy.world, @bitchkat@lemmy.world, @meldrik@lemmy.wtf, @LudwigvanBeethoven@sh.itjust.works, @Lionheadbud@lemmy.world, @Obi@sopuli.xyz, @mittyta@lemmy.world, @AMoralNihilist@feddit.uk, @jimmydoreisalefty@lemmy.world, @alyth@lemmy.world, @nao@sh.itjust.works, @JeeBaiChow@lemmy.world, @wjs018@ani.social, @EvilCartyen@feddit.dk, @norimee@lemmy.world, @mjpc13@programming.dev, @schnapsman@lemmy.world, @drolex@sopuli.xyz, @neme@lemm.ee, @Hawk@lemmy.dbzer0.com, @MigratingApe@lemmy.dbzer0.com, @Arthur@literature.cafe, @Duck@lemmynsfw.com, @JASN_DE@lemmy.world, @letraset@feddit.dk, @mrspaz@lemmy.world, @Zerlyna@lemmy.world, @atro_city@fedia.io, @atzanteol@sh.itjust.works, @ggwithgg@feddit.nl, @schnapsman@feddit.de, @Wabbitsmiles@lemmy.world, @undergroundoverground@lemmy.world, @Nfamwap@lemmy.world, @bobburger@fedia.io, @MigratingtoLemmy@lemmy.world, @Steev@lemmy.world, @Frokke@lemmings.world, @BestBouclettes@jlai.lu, @SirSnufflelump@lemmy.ca, @Pulptastic@midwest.social, @jonc211@programming.dev, @BentiGorlich@gehirneimer.de, @teslasaur@lemmy.world, @nicolairathjen@lemmy.world, @Krydex@slrpnk.net, @lluni@lemmy.zip, @steever@lemmy.ca, @ofk12@lemmy.world, @Neato@ttrpg.network, @MidnightBanjo@lemmy.zip, @watersnipje@lemmy.blahaj.zone, @psmgx@lemmy.world, @Dagnet@lemmy.world, @BananaTrifleViolin@lemmy.world, @Doom@ttrpg.network, @SubArcticTundra@lemmy.ml, @NewNewAccount@lemmy.world, @TheDeepState@lemmy.world, @boatsnhos931@lemmy.world, @MapTheft@lemm.ee, @emergencyfood@sh.itjust.works, @Bl4ze@lemmy.world, @ribhu@lemmy.world, @MrNemobody@lemmy.world, @anmassen@feddit.de, @moon@lemmy.ml, @wgbirne@feddit.de, @GiuseppeAndTheYeti@midwest.social, @TheOctonaut@mander.xyz, @theinspectorst@kbin.social, @madcaesar@lemmy.world, @IbnLemmy@feddit.uk, @anarchyrabbit@lemmy.world, @PeterLossGeorgeWall@lemmy.dbzer0.com, @ECB@feddit.de, @eratic@slrpnk.net, @Raincity3s@thelemmy.club, @erre@programming.dev, @JVT038@feddit.nl, @idefix@sh.itjust.works, @CCL@links.hackliberty.org, @sushibowl@feddit.nl, @funkforager@sh.itjust.works, @LaFinlandia@sopuli.xyz, @Gabrielvalouz@lemmy.world, @ylai@lemmy.ml, @ThatsDrSpaceJunk2U@lemmy.world, @natecheese@kbin.melroy.org, @HerrVorragend@lemmy.world, @jqubed@lemmy.world, @kambusha@feddit.ch, @midget247@lemmy.world, @cbarrick@lemmy.world, @dez@lemmy.ml, @Mr_Pap_Shmear@lemmy.world, @specseaweed@lemmy.world, @Volkditty@lemmy.world, @saltesc@lemmy.world, @Aurix@lemmy.world, @tobz619@lemmy.world, @RoseRose56@lemmy.world, @wjrii@kbin.social, @_987@lemmy.world, @nafri@lemmy.world, @GreenGo@feddit.de, @ratherpleasent@lemmy.world, @Wiggums@lemmy.world, @andrai@feddit.de, @nilaus@lemmy.world, @BrerChicken@lemmy.world, @VikingHippie@lemmy.wtf, @ronalicious@lemmy.world, @sabreW4K3@lemmy.tf, @CluckN@lemmy.world

[–] P4ulin_Kbana@lemmy.eco.br 2 points 1 week ago
[–] Skullgrid@lemmy.world 5 points 1 week ago

thanks, I'm sure I only shitposted one time here about football's cultural atmosphere or game theory/sportsmanship in general.

[–] Snoopy@jlai.lu 4 points 1 week ago* (last edited 1 week ago) (1 children)

@camus@jlai.lu i discovered a cool bot to manage our communities. We could use it for our backup community and migration.

[–] imaqtpie@sh.itjust.works 2 points 1 week ago (2 children)

Your tag doesn't look like it's working? @Camus@jlai.lu

But yeah this is actually a fantastic idea, could make migrating communities much more seamless.

[–] Snoopy@jlai.lu 2 points 1 week ago (1 children)

Maybe it's because i use mention on Thunder. The tag seems to work on Thunder app.

Do you happen to know the bot used ?

[–] UlrikHD@lemm.ee 3 points 1 week ago (2 children)

If 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.

[–] Snoopy@jlai.lu 3 points 1 week ago* (last edited 1 week ago) (1 children)

Maybe you should create a post to share your script for users that doesn't know and the lemmyverse. It may be simple but for mod/admin it's a huge change for our life as we post a post, a second one, then close and lost people on the way.

On mastodon, when your change account, migrate on another server, it invite users to follow you on your new address and update it for you. And, i think i will suggest it for Piefed, a integrated functionality will be very helpfull. :)

With this script, can you get the list of subcribers ?

[–] UlrikHD@lemm.ee 4 points 1 week ago* (last edited 1 week ago) (1 children)

With 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]))
[–] Snoopy@jlai.lu 4 points 1 week ago (1 children)

Thank a lot, i will share on our Meta community so we can save it and setup an migration bot. :)

I also shared this idea so maybe Piefed can integrate it into its core with a migration button where you add the new address and subcribers will receive a notification to join the new one.

[–] UlrikHD@lemm.ee 3 points 1 week ago

If you need any technical help, you can message me at @UlrikHD@programming.dev

[–] Blaze@sopuli.xyz 3 points 1 week ago

Still great!

[–] Blaze@sopuli.xyz 2 points 1 week ago

Tag works even without links

[–] Blaze@sopuli.xyz 3 points 1 week ago (1 children)

Amazing, that's very useful!

[–] Sentau@discuss.tchncs.de 2 points 1 week ago (4 children)

Has the !football@lemm.ee community been opened to general users¿? I wasn't able to join that community

[–] thisisdee@lemmy.world 1 points 1 week ago (1 children)

In case you had the same issue I did, it worked for me using !Football@lemm.ee (uppercase first letter) but I couldn’t subscribe if it’s all lowercase

[–] Sentau@discuss.tchncs.de 1 points 1 week ago (1 children)

What the hell! This worked. Is this a client specific issue¿? Is this an lemmy issue¿? Are lemmy community names case sensitive¿? If yes, then why the lowercase name point to the same fucking community¿? What the hell is going on

[–] Blaze@sopuli.xyz 1 points 1 week ago (1 children)

What client are you using?

[–] Sentau@discuss.tchncs.de 1 points 1 week ago (2 children)
[–] Blaze@sopuli.xyz 1 points 1 week ago (1 children)
[–] Sentau@discuss.tchncs.de 2 points 1 week ago

Yeah now that the other member also confirmed that they are on Voyager, I will raise a bug request

[–] thisisdee@lemmy.world 1 points 1 week ago

I'm on Voyager too, might be client specific then.

[–] Blaze@sopuli.xyz 1 points 1 week ago (1 children)
[–] Sentau@discuss.tchncs.de 1 points 1 week ago

Odd. I am not able to do it. Will look into it later

[–] FootballAutoMod@lemmy.world 1 points 1 week ago (1 children)

It was opened right before this post, could be some federation delay maybe?

[–] Blaze@sopuli.xyz 1 points 1 week ago

I can access it from my alt

[–] AFC1886VCC@reddthat.com 9 points 1 week ago (1 children)

Thank you for the heads up folks

[–] Blaze@sopuli.xyz 3 points 1 week ago

See you there!

[–] imaqtpie@sh.itjust.works 5 points 1 week ago (1 children)

I was just about to say this is the first I'm hearing of this and I have serious reservations about this idea, because moving communities is always tough.

But then I saw the automod tag everybody, and that's a really nice solution you've come up with. I would say maybe send out a few more pings over the next couple months and also post about it on !newcommunities@lemmy.world, just to make sure that everyone gets the message.

Assuming that most users hear about this and subscribe, I think lemm.ee is a great choice for a new home.

[–] FootballAutoMod@lemmy.world 5 points 1 week ago (3 children)

Assuming the FotballAutoMod works fine with the code I've pushed, anyone who posts to this community now will have their post locked + a reply from the AutoMod that the community has migrated. Hopefully it will work well.

[–] Blaze@sopuli.xyz 3 points 1 week ago (1 children)

Just tried, nothing happened 😅

[–] FootballAutoMod@lemmy.world 4 points 1 week ago (1 children)

Yeah, found the bug.

If you're curious about the details. When the script gets the list of most recent posts from lemmy, pinned posts are at the start of the list. Since I had the script break the loop once it discovered a post older than last time it checked for new posts, it would always break the loop on the first post since the migration post is pinned. Should be fixed now.

[–] Blaze@sopuli.xyz 2 points 1 week ago

Great, thanks!

[–] Blaze@sopuli.xyz 2 points 1 week ago

I want to try ha ha

[–] Blaze@sopuli.xyz 2 points 1 week ago

Very interesting

[–] Pringles@lemm.ee 4 points 1 week ago

As a lemm.ee user myself, I approve of this.