Updated to use the SuperNETs repository for ircart instead of Github cause those FAGGOTS banned our repo.

This commit is contained in:
Dionysus 2024-12-10 15:32:40 -05:00
parent 4b2dd58fdc
commit 24ebdd6955
Signed by: acidvegas
GPG Key ID: EF4B922DB85DC9DE
2 changed files with 36 additions and 26 deletions

View File

@ -1,6 +1,6 @@
ISC License
Copyright (c) 2023, acidvegas <acid.vegas@acid.vegas>
Copyright (c) 2025, acidvegas <acid.vegas@acid.vegas>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@ -12,4 +12,4 @@ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

View File

@ -2,13 +2,12 @@
# Scroll IRC Art Bot - Developed by acidvegas in Python (https://git.acid.vegas/scroll)
import asyncio
import json
import random
import re
import ssl
import sys
import time
import urllib.request
import aiohttp
class connection:
server = 'irc.server.com'
@ -139,34 +138,45 @@ class Bot():
await asyncio.sleep(30)
async def sync(self):
cache = self.db
self.db = {'root':list()}
try:
sha = [item['sha'] for item in json.loads(get_url('https://api.github.com/repos/ircart/ircart/contents', True).read().decode('utf-8')) if item['path'] == 'ircart'][0]
files = json.loads(get_url(f'https://api.github.com/repos/ircart/ircart/git/trees/{sha}?recursive=true', True).read().decode('utf-8'))['tree']
for file in files:
if file['type'] != 'tree':
file['path'] = file['path'][:-4]
if '/' in file['path']:
dir = file['path'].split('/')[0]
name = file['path'].split('/')[1]
self.db[dir] = self.db[dir]+[name,] if dir in self.db else [name,]
else:
self.db['root'].append(file['path'])
except Exception as ex:
self.db = {'root': []}
page = 1
per_page = 1000 # Gitea's default per_page limit
while True:
try:
await self.irc_error(connection.channel, 'failed to sync database', ex)
except:
error(connection.channel, 'failed to sync database', ex)
finally:
self.db = cache
async with aiohttp.ClientSession() as session:
async with session.get(f'https://git.supernets.org/api/v1/repos/ircart/ircart/git/trees/master?recursive=1&page={page}&per_page={per_page}') as resp:
if resp.status != 200:
error('failed to sync database', await resp.text())
return
files = await resp.json()
# Process files from this page
for file in files['tree']:
if file['path'].startswith('ircart/') and file['path'].endswith('.txt') and not file['path'].startswith('ircart/.'):
name = file['path'][7:-4] # Just strip 'ircart/' prefix and '.txt' suffix
if '/' in name:
dir, fname = name.split('/', 1)
self.db[dir] = self.db[dir]+[fname,] if dir in self.db else [fname,]
else:
self.db['root'].append(name)
# Check if we've processed all pages
if not files.get('truncated', False):
break
page += 1
except Exception as ex:
error('failed to sync database', ex)
return
async def play(self, chan, name, img=False, paste=False):
try:
if img or paste:
ascii = get_url(name)
else:
ascii = get_url(f'https://raw.githubusercontent.com/ircart/ircart/master/ircart/{name}.txt')
ascii = get_url(f'https://git.supernets.org/ircart/ircart/raw/branch/master/ircart/{name}.txt')
if ascii.getcode() == 200:
if img:
ascii = img2irc.convert(ascii.read(), img, int(self.settings['png_width']), self.settings['png_palette'], int(self.settings['png_quantize_colors']))
@ -272,7 +282,7 @@ class Bot():
width = 512 - len(line.split(' :')[0])+4
self.loops[chan] = asyncio.create_task(self.play(chan, url, img=width))
elif msg == '.ascii list':
await self.sendmsg(chan, underline + color('https://raw.githubusercontent.com/ircart/ircart/master/ircart/.list', light_blue))
await self.sendmsg(chan, underline + color('https://git.supernets.org/ircart/ircart/src/branch/master/ircart/.list', light_blue))
elif args[1] == 'random' and len(args) in (2,3):
if len(args) == 3:
query = args[2]