boombox_plugin
This commit is contained in:
parent
93888ceeb5
commit
b2b2953420
@ -47,6 +47,7 @@ includes =
|
||||
plugins.openai_plugin
|
||||
plugins.dsa_plugin
|
||||
plugins.highlight_plugin
|
||||
plugins.boombox_plugin
|
||||
|
||||
autojoins =
|
||||
${#}tcpdirect
|
||||
|
528
plugins/boombox_plugin.py
Normal file
528
plugins/boombox_plugin.py
Normal file
@ -0,0 +1,528 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##################################################################################################### SOF
|
||||
import irc3
|
||||
from irc3.plugins.command import command
|
||||
from urllib.parse import urlparse
|
||||
from glob import glob
|
||||
from typing import Type
|
||||
import random
|
||||
import string
|
||||
import os
|
||||
######################################################################################################### THE ASCII LOGO TO BE USED
|
||||
MOTD="""
|
||||
_________ _________ _________ ___ ___ _________ _________ ____ ____
|
||||
| o ) / O \ / O \ | \ / | | o ) / O \ \ \_/ /
|
||||
|_____O___) \_________/ \_________/ |____|____| |_____O___) \_________/ /___/%\___\\
|
||||
'BBBBBBB' 'BBBBBBB' 'BBBBBBB' 'BBBBBBB' 'BBBBBBB' 'BBBBBBB' 'BB' 'BB'
|
||||
"""
|
||||
#########################################################################################################
|
||||
class BOOMBOX_COLORS():
|
||||
#####################################################################################################
|
||||
def __init__(self,bot):
|
||||
self.bot=bot
|
||||
self.c=[]
|
||||
#####################################################################################################
|
||||
def color(self,c):
|
||||
try:
|
||||
c=str(c.lower())
|
||||
if c=='0': return '\x0300'
|
||||
if c=='1': return '\x0301'
|
||||
if c=='2': return '\x0302'
|
||||
if c=='3': return '\x0303'
|
||||
if c=='4': return '\x0304'
|
||||
if c=='5': return '\x0305'
|
||||
if c=='6': return '\x0306'
|
||||
if c=='7': return '\x0307'
|
||||
if c=='8': return '\x0308'
|
||||
if c=='9': return '\x0309'
|
||||
if c=='a': return '\x0310'
|
||||
if c=='b': return '\x0311'
|
||||
if c=='c': return '\x0312'
|
||||
if c=='d': return '\x0313'
|
||||
if c=='e': return '\x0314'
|
||||
if c=='f': return '\x0315'
|
||||
if c=='n': return ''
|
||||
if c=='t': return '\x0f'
|
||||
print('color: empty')
|
||||
return '\x0f'
|
||||
except:
|
||||
print('color: error')
|
||||
return '\x0f'
|
||||
#####################################################################################################
|
||||
def palette(self):
|
||||
self.c=[]; self.n=[]
|
||||
for i in range(0,8):
|
||||
n=random.randint(0,15)
|
||||
c=self.color(hex(n)[2:])
|
||||
self.c.append(c); self.n.append(n)
|
||||
return self.c
|
||||
#####################################################################################################
|
||||
def tailor(self,s,n):
|
||||
if len(s)<=n:
|
||||
result=s+"."*(n-len(s))
|
||||
return result
|
||||
else:
|
||||
return s[0:n]
|
||||
#########################################################################################################
|
||||
class BOOMBOX_STATS:
|
||||
#####################################################################################################
|
||||
def __init__(self,bot):
|
||||
self.bot=bot
|
||||
self.b1,self.b2,self.b3,self.b4=self.bot.bbc.palette()[0:4]
|
||||
self.b5,self.b6,self.b7,self.b8=self.bot.bbc.palette()[0:4]
|
||||
return
|
||||
#####################################################################################################
|
||||
def push(self,nick,title,url):
|
||||
nick=self.no_unicode(nick)
|
||||
title=self.no_unicode(title)
|
||||
bbs_last=self.bot.db.getlist("bbs_last")
|
||||
bbs_last=bbs_last[-1:]+bbs_last[:-1]
|
||||
bbs_last[0]=[self.bot.bbc.tailor(nick,10),'╏',self.bot.bbc.tailor(title,65),'╏',url]
|
||||
self.bot.db.setlist("bbs_last",bbs_last)
|
||||
#####################################################################################################
|
||||
def dbiterate(self,db,s):
|
||||
buffer=self.bot.db.getlist(db)
|
||||
for _ in buffer:
|
||||
try:
|
||||
result=_[s]
|
||||
if result:
|
||||
return result
|
||||
except:
|
||||
pass
|
||||
#####################################################################################################
|
||||
def token(self,url):
|
||||
bbs_token=self.bot.db.getlist("bbs_token")
|
||||
bbs_tokenmirror=self.bot.db.getlist("bbs_tokenmirror")
|
||||
S=list(string.ascii_letters+string.digits)
|
||||
random.shuffle(S)
|
||||
S=''.join(S)[:5]
|
||||
while S in [list(x.keys())[0] for x in bbs_token]:
|
||||
S=list(string.ascii_letters+string.digits)
|
||||
random.shuffle(S); S=''.join(S)[:5]
|
||||
return f'{S}'
|
||||
#####################################################################################################
|
||||
def no_unicode(self,s):
|
||||
if len(s) < 1: return s
|
||||
s=s.encode('ascii','ignore').decode()
|
||||
s=s.strip().replace(' ',' ')
|
||||
return s
|
||||
#####################################################################################################
|
||||
def check(self,nick,site,data):
|
||||
#################################################################################################
|
||||
bbs_nicks=self.bot.db.getlist("bbs_nicks")
|
||||
bbs_sites=self.bot.db.getlist("bbs_sites")
|
||||
bbs_data=self.bot.db.getlist("bbs_data")
|
||||
bbs_token=self.bot.db.getlist("bbs_token")
|
||||
bbs_tokenmirror=self.bot.db.getlist("bbs_tokenmirror")
|
||||
#################################################################################################
|
||||
try:
|
||||
if bbs_data:
|
||||
for i,_data in enumerate(bbs_data):
|
||||
if data['url']==_data['url']:
|
||||
_data['hits']+=1
|
||||
try:
|
||||
_data['nicks'][nick]+=1
|
||||
except:
|
||||
_data['nicks'].update({nick:1})
|
||||
try:
|
||||
bbs_nicks[0][nick]+=1
|
||||
except:
|
||||
bbs_nicks[0].update({nick:1})
|
||||
bbs_sites[0][site]+=1
|
||||
bbs_data[i]=_data
|
||||
self.bot.db.setlist("bbs_nicks",bbs_nicks)
|
||||
self.bot.db.setlist("bbs_sites",bbs_sites)
|
||||
self.bot.db.setlist("bbs_data",bbs_data)
|
||||
return
|
||||
#########################################################################################
|
||||
try:
|
||||
bbs_nicks[0][nick]+=1
|
||||
except:
|
||||
bbs_nicks[0].update({nick:1})
|
||||
#########################################################################################
|
||||
self.bot.db.setlist("bbs_nicks",bbs_nicks)
|
||||
bbs_sites[0][site]+=1
|
||||
self.bot.db.setlist("bbs_sites",bbs_sites)
|
||||
bbs_data.append(data)
|
||||
self.bot.db.setlist("bbs_data",bbs_data)
|
||||
URL=data['url']; TOKEN=data['token']
|
||||
bbs_token.append({TOKEN:URL})
|
||||
self.bot.db.setlist("bbs_token",bbs_token)
|
||||
bbs_tokenmirror.append({URL:TOKEN})
|
||||
self.bot.db.setlist("bbs_tokenmirror",bbs_tokenmirror)
|
||||
except:
|
||||
self.bot.db.setlist("bbs_nicks",[{nick: 1}])
|
||||
self.bot.db.setlist("bbs_sites",[{'soundcloud':0,'youtube':0,'spotify':0,'bandcamp':0}])
|
||||
bbs_sites=self.bot.db.getlist("bbs_sites")
|
||||
bbs_sites[0][site]+=1
|
||||
self.bot.db.setlist("bbs_sites",bbs_sites)
|
||||
self.bot.db.setlist("bbs_data",[data])
|
||||
URL=data['url']; TOKEN=data['token']
|
||||
bbs_token.append({TOKEN:URL})
|
||||
self.bot.db.setlist("bbs_token",bbs_token)
|
||||
bbs_tokenmirror.append({URL:TOKEN})
|
||||
self.bot.db.setlist("bbs_tokenmirror",bbs_tokenmirror)
|
||||
#####################################################################################################
|
||||
def enter(self,nick,url,title):
|
||||
#################################################################################################
|
||||
token=self.token(url)
|
||||
bbs_token=self.bot.db.getlist("bbs_token")
|
||||
nick=self.no_unicode(nick)
|
||||
title=self.no_unicode(title)
|
||||
#################################################################################################
|
||||
data={'nicks':{nick:1},'title':title,'url':url,'token':token,'hits':1}
|
||||
#################################################################################################
|
||||
if not url.find('soundcloud.com')==-1:
|
||||
title=title[:title.rfind('by')].replace('Stream','').strip()
|
||||
if not title=='SoundCloud - Hear the world’s sound':
|
||||
data['title']=title.split('music |')[0].rstrip()
|
||||
site='soundcloud'
|
||||
data=self.check(nick,site,data)
|
||||
url=f"?bb {token}"
|
||||
self.push(nick.lower(),title.lower(),url)
|
||||
#################################################################################################
|
||||
if not url.find('youtube.com')==-1 or not url.find('youtu.be')==-1:
|
||||
id=url[-11:]
|
||||
result=self.bot.videos_list_by_id(id=id)
|
||||
if result:
|
||||
site='youtube'
|
||||
data=self.check(nick,site,data)
|
||||
url=f"?bb {token}"
|
||||
self.push(nick.lower(),title.lower(),url)
|
||||
#################################################################################################
|
||||
if not url.find('spotify.com')==-1:
|
||||
offset=url.rfind('/')+1
|
||||
try:
|
||||
track=title.split('|')[0].split('- song by')[0].strip()
|
||||
artist=title.split('|')[0].split('- song by')[1].strip()
|
||||
except:
|
||||
track=title.split('|')[0].split('- Album by')[0].strip()
|
||||
artist=title.split('|')[0].split('- Album by')[1].strip()
|
||||
title=f'{artist} - {track}'
|
||||
data['title']=title
|
||||
site='spotify'
|
||||
data=self.check(nick,site,data)
|
||||
url=f"?bb {token}"
|
||||
self.push(nick.lower(),title.lower(),url)
|
||||
#################################################################################################
|
||||
if not url.find('bandcamp.com')==-1:
|
||||
offset=url.rfind('/')+1
|
||||
try:
|
||||
track=title.split('|')[0].lower().strip()
|
||||
artist=title.split('|')[1].lower().strip()
|
||||
except:
|
||||
pass
|
||||
title=f'{artist} - {track}'
|
||||
data['title']=title
|
||||
site='bandcamp'
|
||||
data=self.check(nick,site,data)
|
||||
url=f"?bb {token}"
|
||||
self.push(nick.lower(),title.lower(),url)
|
||||
#####################################################################################################
|
||||
@irc3.extend
|
||||
def diagnostics(self,mode,*args):
|
||||
#####################################################################################################
|
||||
__doc__='''DETERMINED NO DATABASES'''
|
||||
#################################################################################################
|
||||
if mode==1:
|
||||
#############################################################################################
|
||||
__doc__='''CREATING DATABASE'''
|
||||
bbs_token=self.bot.db.getlist("bbs_token")
|
||||
try:
|
||||
test=len(bbs_token[0])
|
||||
except:
|
||||
bbs_token={'00000':'https://ansibomb.com'}
|
||||
self.bot.db.setlist("bbs_token",[bbs_token])
|
||||
bbs_tokenmirror={'https://ansibomb.com':'00000'}
|
||||
self.bot.db.setlist("bbs_tokenmirror",[bbs_tokenmirror])
|
||||
#############################################################################################
|
||||
__doc__='''CREATING DATABASE'''
|
||||
bbs_nicks=self.bot.db.getlist("bbs_nicks")
|
||||
try:
|
||||
test=len(bbs_nicks[0])
|
||||
except:
|
||||
bbs_nicks=[]
|
||||
_bbs_nicks={'none':0}
|
||||
bbs_nicks.append(_bbs_nicks)
|
||||
self.bot.db.setlist("bbs_nicks",bbs_nicks)
|
||||
#############################################################################################
|
||||
__doc__='''CREATING DATABASE'''
|
||||
bbs_last=self.bot.db.getlist("bbs_last")
|
||||
try:
|
||||
test=len(bbs_last[0])
|
||||
except:
|
||||
bbs_last=[]
|
||||
for _ in range(10):
|
||||
bbs_last.append('')
|
||||
self.bot.db.setlist("bbs_last",bbs_last)
|
||||
#############################################################################################
|
||||
__doc__='''CREATING DATABASE'''
|
||||
bbs_data=self.bot.db.getlist('bbs_data')
|
||||
try:
|
||||
test=len(bbs_data[0])
|
||||
except:
|
||||
data={'nicks':{"none":0},'title':"none",'url':'https://ansibomb.com','token':'13666','hits':0}
|
||||
bbs_data=self.bot.db.setlist('bbs_data',[data])
|
||||
#############################################################################################
|
||||
__doc__='''CREATING DATABASE'''
|
||||
bbs_sites=self.bot.db.getlist('bbs_sites')
|
||||
try:
|
||||
test=len(bbs_sites[0])
|
||||
except:
|
||||
data={'nicks':{"databases initialized":0},'title':"no music data yet",'url':'https://ansibomb.com','hits':0}
|
||||
bbs_sites=self.bot.db.setlist("bbs_sites",[{'soundcloud':0,'youtube':0,'spotify':0,'bandcamp':0}])
|
||||
######################################################################################################### < HERE < HERE < HERE < HERE <
|
||||
# <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< the stats portion of boombox is above >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # < HERE < HERE < HERE < HERE <
|
||||
######################################################################################################### < HERE < HERE < HERE < HERE <
|
||||
# <<<<<<<<<<<<<<<<<<<<<<<<<< the operational portion of boombox is below >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # < HERE < HERE < HERE < HERE <
|
||||
######################################################################################################### < HERE < HERE < HERE < HERE <
|
||||
@irc3.plugin
|
||||
class Plugin:
|
||||
#####################################################################################################
|
||||
def __init__(self, bot):
|
||||
#################################################################################################
|
||||
self.bot=bot
|
||||
self.bot.bbc=BOOMBOX_COLORS(self.bot)
|
||||
self.bot.bbs=BOOMBOX_STATS(self.bot)
|
||||
self.bot.bbs.bot=self.bot
|
||||
self.bot.bbs.kungfu=False
|
||||
bbs_token=self.bot.db.getlist("bbs_token")
|
||||
try:
|
||||
test=len(bbs_token[0])
|
||||
except:
|
||||
self.bot.bbs.diagnostics(1)
|
||||
#####################################################################################################
|
||||
@command(permission='view',public=True, show_in_help_list=False)
|
||||
def bb(self, mask, target, args):
|
||||
"""Convert boombox token to a url
|
||||
%%bb <token>...
|
||||
"""
|
||||
c=self.bot.bbc.palette()
|
||||
self.bot.bbc.c=c
|
||||
token=''.join(args['<token>'])
|
||||
tokens=self.bot.db.getlist("bbs_token")
|
||||
url=''
|
||||
for t in tokens:
|
||||
if token in t:
|
||||
url=t[token]
|
||||
msg=f"{c[0]}{mask.nick}{c[1]}: {c[2]}boombox{c[1]}->"
|
||||
if url:
|
||||
msg+=f"{c[2]}url{c[1]}: {c[3]}{url}"
|
||||
else:
|
||||
msg+=f"{c[2]}error{c[1]}: {c[3]}{token} is an invalid token"
|
||||
self.bot.privmsg(target,self.bot.emo(msg))
|
||||
#####################################################################################################
|
||||
@command(permission='view')
|
||||
def boombox(self, mask, target, args):
|
||||
"""boombox - usage: ?boombox top, ?boombox last, ?boombox user, ?boombox site, ?boombox all
|
||||
%%boombox <command>...
|
||||
"""
|
||||
command=' '.join(args['<command>']).lower()
|
||||
########################################################################### KUNGFU KUNGFU KUNGFU
|
||||
if command=='kungfu':
|
||||
self.bot.bbs.kungfu=not self.bot.bbs.kungfu
|
||||
self.bot.privmsg(target,self.bot.emo(f"kungfu: {self.bot.bbs.kungfu}"))
|
||||
###########################################################################
|
||||
commands=['top','last','user','site','all']
|
||||
###########################################################################
|
||||
if not command in commands:
|
||||
msg="boombox - usage: ?boombox top, ?boombox last, ?boombox user, ?boombox site, ?boombox all"
|
||||
self.bot.privmsg(target,self.bot.emo(msg))
|
||||
return
|
||||
###########################################################################
|
||||
bbs_last=self.bot.db.getlist("bbs_last")
|
||||
bbs_data=self.bot.db.getlist('bbs_data')
|
||||
###########################################################################
|
||||
try:
|
||||
if bbs_data:
|
||||
#########################################################################################
|
||||
c1,c2,c3,c4,c5,c6,c7,c8=self.bot.bbc.c
|
||||
#########################################################################################
|
||||
if command=='all':
|
||||
for _ in MOTD.splitlines():
|
||||
if _:
|
||||
self.bot.privmsg(target,f'{self.bot.bbc.palette()[0]}{_}')
|
||||
#########################################################################################
|
||||
if command=='top' or command=='all':
|
||||
msg=f'{c2}◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸ {c2}◅ {c1}TOP SONGS {c2}▻'
|
||||
self.bot.privmsg(target,msg)
|
||||
bbs_data=self.bot.db.getlist('bbs_data')
|
||||
hits=[]
|
||||
for i,data in enumerate(bbs_data):
|
||||
hits.append(data['hits'])
|
||||
lot=[(k,v) for k, v in zip(range(len(hits)),hits)]
|
||||
nl=[]
|
||||
while len(lot)> 0:
|
||||
nl.append(max(lot,key=lambda x: x[1]))
|
||||
lot.remove(nl[-1])
|
||||
nl[0:10]
|
||||
for i in range(len(bbs_data)):
|
||||
base=bbs_data[nl[0:10][i][0]]
|
||||
title=base['title']
|
||||
url=base['url']
|
||||
token=self.bot.bbs.dbiterate('bbs_tokenmirror',url)
|
||||
hits=base['hits']
|
||||
lot_nicks=[(k,v) for k, v in zip(range(len(base['nicks'].values())),base['nicks'].values())]
|
||||
buf_nicks=[]
|
||||
while len(lot_nicks)>0:
|
||||
buf_nicks.append(max(lot_nicks,key=lambda x: x[1]))
|
||||
lot_nicks.remove(buf_nicks[-1])
|
||||
nick_hits=buf_nicks[0][1]
|
||||
nick=list(base['nicks'])[buf_nicks[0][0]]
|
||||
msg=f'{c2}{str(i+1).zfill(2)}{c1} ◊ {c4}{self.bot.bbc.tailor(title.lower(),50)}{c1} {self.bot.bbs.b2}{c1}╏\x0F{self.bot.bbs.b4} ?bb {token}{c2}{self.bot.bbs.b2} {c1} ╏{c3}{hits}\x0F {self.bot.bbs.b4}plays total{c1} ╏ {c3}{nick_hits}\x0F {self.bot.bbs.b4}mostly by {c3}{nick}'
|
||||
self.bot.privmsg(target,msg)
|
||||
#########################################################################################
|
||||
if command=='last' or command=='all':
|
||||
msg=f'{c2}◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸ {c2}◅ {c1}LAST SONGS {c2}▻'
|
||||
self.bot.privmsg(target,msg)
|
||||
try:
|
||||
count=0
|
||||
for i,last_url in enumerate(bbs_last):
|
||||
if len(last_url)>0:
|
||||
count+=1
|
||||
msg=f'{c2}{str(i+1).zfill(2)} {c1}◊ {c3}{last_url[0]} {c1}{last_url[1]} {c4}{last_url[2]} {c1}{last_url[3]} {self.bot.bbs.b4}{last_url[4]}'
|
||||
self.bot.privmsg(target, msg)
|
||||
if count==0:
|
||||
msg=f'{c2}{str("01")}{c1} ◊ {c3}{str("https://ansibomb.com")}'
|
||||
self.bot.privmsg(target, msg)
|
||||
except Exception as e:
|
||||
msg=f'boombox/error: error in last 10 songs data parsing: {e}'
|
||||
self.bot.privmsg(target,msg)
|
||||
#########################################################################################
|
||||
if command=='user' or command=='all':
|
||||
msg=f'{c2}◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸ {c2}◅ {c1}TOP USERS {c2}▻'
|
||||
self.bot.privmsg(target,msg)
|
||||
bbs_nicks=self.bot.db.getlist("bbs_nicks")
|
||||
nick_hits=[]
|
||||
try:
|
||||
for i, data in enumerate(bbs_nicks[0].values()):
|
||||
nick_hits.append(data)
|
||||
lot_nicks=[(k,v) for k, v in zip(range(len(nick_hits)),nick_hits)]
|
||||
buf_nicks=[]
|
||||
while len(lot_nicks)>0:
|
||||
buf_nicks.append(max(lot_nicks,key=lambda x: x[1]))
|
||||
lot_nicks.remove(buf_nicks[-1])
|
||||
for i, index in enumerate(buf_nicks):
|
||||
nick=list(bbs_nicks[0])[index[0]]
|
||||
hits=bbs_nicks[0][nick]
|
||||
nick_top_hits=[]
|
||||
for data in bbs_data:
|
||||
try:
|
||||
nick_top_hits.append(data['nicks'][nick])
|
||||
except:
|
||||
nick_top_hits.append(0)
|
||||
lot_nicks=[(k,v) for k, v in zip(range(len(nick_top_hits)),nick_top_hits)]
|
||||
_buf_nicks=[]
|
||||
while len(lot_nicks)> 0:
|
||||
_buf_nicks.append(max(lot_nicks,key=lambda x: x[1]))
|
||||
lot_nicks.remove(_buf_nicks[-1])
|
||||
song_hits=_buf_nicks[0][1]
|
||||
index=_buf_nicks[0][0]
|
||||
title=bbs_data[index]['title']
|
||||
url=bbs_data[index]['url']
|
||||
token=self.bot.bbs.dbiterate('bbs_tokenmirror',url)
|
||||
msg=f'{c2}{str(i+1).zfill(2)}{c1} ◊ {c3}{self.bot.bbc.tailor(nick.lower(),10)}{c1} ╏ {c4}{self.bot.bbc.tailor(title.lower(),49)}{c1} {c1}╏ {c3}{hits}\x0F {self.bot.bbs.b4}total plays{c1} ╏\x0F{self.bot.bbs.b4} ?bb {token}{c1} {c1}╏\x0F {self.bot.bbs.b4}played {c3}{song_hits}\x0F {self.bot.bbs.b4}times'
|
||||
self.bot.privmsg(target,msg)
|
||||
except TypeError:
|
||||
msg=f'{c2}{str("01")}{c1} ◊ {c3}{str("blank")}{c1} ╏ {c4}{str("need music data")} {c1}╏ {c4}{str("0")}\x0F {c3}total plays {self.bot.bbs.b2}╏ \x0F{self.bot.bbs.b4}?bb 13666{c1} {c1}╏\x0F {self.bot.bbs.b4}played {c3}{str("0")}\x0F {self.bot.bbs.b4}times'
|
||||
self.bot.privmsg(target,msg)
|
||||
#########################################################################################
|
||||
if command=='site' or command=='all':
|
||||
bbs_sites=self.bot.db.getlist("bbs_sites")
|
||||
msg=f'{c2}◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸◹◸ {c2}◅ {c1}TOP SITES {c2}▻'
|
||||
self.bot.privmsg(target,msg)
|
||||
lot=[(k,v) for k, v in bbs_sites[0].items()]
|
||||
nl=[]
|
||||
while len(lot)>0:
|
||||
nl.append(max(lot,key=lambda x: x[1]))
|
||||
lot.remove(nl[-1])
|
||||
nl[0:4]
|
||||
bandcamp=[]
|
||||
spotify=[]
|
||||
youtube=[]
|
||||
soundcloud=[]
|
||||
for i,data in enumerate(bbs_data):
|
||||
print(i)
|
||||
if not data['url'].find('soundcloud')==-1:
|
||||
soundcloud.append(bbs_data[i]['hits'])
|
||||
bandcamp.append(0)
|
||||
youtube.append(0)
|
||||
spotify.append(0)
|
||||
print(f"\tsoundcloud {bbs_data[i]['hits']} - {bbs_data[i]['title']}")
|
||||
elif not data['url'].find('youtu.be')==-1:
|
||||
youtube.append(bbs_data[i]['hits'])
|
||||
soundcloud.append(0)
|
||||
bandcamp.append(0)
|
||||
spotify.append(0)
|
||||
print(f"\tyoutube {bbs_data[i]['hits']} - {bbs_data[i]['title']}")
|
||||
elif not data['url'].find('spotify')==-1:
|
||||
spotify.append(bbs_data[i]['hits'])
|
||||
soundcloud.append(0)
|
||||
youtube.append(0)
|
||||
bandcamp.append(0)
|
||||
print(f"\tspotify {bbs_data[i]['hits']} - {bbs_data[i]['title']}")
|
||||
elif not data['url'].find('bandcamp')==-1:
|
||||
bandcamp.append(bbs_data[i]['hits'])
|
||||
soundcloud.append(0)
|
||||
youtube.append(0)
|
||||
spotify.append(0)
|
||||
print(f"\tbandcamp {bbs_data[i]['hits']} - {bbs_data[i]['title']}")
|
||||
try:
|
||||
if max(bandcamp)==0: raise Exception
|
||||
bandcamp_title=bbs_data[bandcamp.index(max(bandcamp))]['title']
|
||||
bandcamp_url=bbs_data[bandcamp.index(max(bandcamp))]['url']
|
||||
bandcamp_hits=bbs_data[bandcamp.index(max(bandcamp))]['hits']
|
||||
except:
|
||||
bandcamp_title='no data yet'
|
||||
bandcamp_url='no url yet'
|
||||
try:
|
||||
if max(spotify)==0: raise Exception
|
||||
spotify_title=bbs_data[spotify.index(max(spotify))]['title']
|
||||
spotify_url=bbs_data[spotify.index(max(spotify))]['url']
|
||||
spotify_hits=bbs_data[spotify.index(max(spotify))]['hits']
|
||||
except:
|
||||
spotify_title='no data yet'
|
||||
spotify_url='no url yet'
|
||||
try:
|
||||
if max(youtube)==0: raise Exception
|
||||
youtube_title=bbs_data[youtube.index(max(youtube))]['title']
|
||||
youtube_url=bbs_data[youtube.index(max(youtube))]['url']
|
||||
youtube_hits=bbs_data[youtube.index(max(youtube))]['hits']
|
||||
except:
|
||||
youtube_title='no data yet'
|
||||
youtube_url='no url yet'
|
||||
try:
|
||||
if max(soundcloud)==0: raise Exception
|
||||
soundcloud_title=bbs_data[soundcloud.index(max(soundcloud))]['title']
|
||||
soundcloud_url=bbs_data[soundcloud.index(max(soundcloud))]['url']
|
||||
soundcloud_hits=bbs_data[soundcloud.index(max(soundcloud))]['hits']
|
||||
except:
|
||||
soundcloud_title='no data yet'
|
||||
soundcloud_url='no url yet'
|
||||
for i,data in enumerate(nl[0:4]):
|
||||
msg=f'{c2}{str(i+1).zfill(2)}{c1} ◊ {c3}{self.bot.bbc.tailor(data[0],10)}{c1} ╏ '
|
||||
if data[0]=='bandcamp':
|
||||
token=self.bot.bbs.dbiterate('bbs_tokenmirror',bandcamp_url)
|
||||
msg=msg+f'{c4}{self.bot.bbc.tailor(bandcamp_title.lower(),49)} {c1}╏ {c3}{data[1]} {self.bot.bbs.b4}total plays{c1} ╏ {self.bot.bbs.b4}?bb {token}'
|
||||
if not data[1]==0:
|
||||
msg=msg+f'{c1} ╏ {self.bot.bbs.b4}top {c3}{spotify_hits} {self.bot.bbs.b4}plays'
|
||||
elif data[0]=='spotify':
|
||||
token=self.bot.bbs.dbiterate('bbs_tokenmirror',spotify_url)
|
||||
msg=msg+f'{c4}{self.bot.bbc.tailor(spotify_title.lower(),49)} {c1}╏ {c3}{data[1]} {self.bot.bbs.b4}total plays{c1} ╏ {self.bot.bbs.b4}?bb {token}'
|
||||
if not data[1]==0:
|
||||
msg=msg+f'{c1} ╏ {self.bot.bbs.b4}top {c3}{spotify_hits} {self.bot.bbs.b4}plays'
|
||||
elif data[0]=='youtube':
|
||||
token=self.bot.bbs.dbiterate('bbs_tokenmirror',youtube_url)
|
||||
msg=msg+f'{c4}{self.bot.bbc.tailor(youtube_title.lower(),49)} {c1}╏ {c3}{data[1]} {self.bot.bbs.b4}total plays{c1} ╏ {self.bot.bbs.b4}?bb {token}'
|
||||
if not data[1]==0:
|
||||
msg=msg+f'{c1} ╏ {self.bot.bbs.b4}top {c3}{youtube_hits} {self.bot.bbs.b4}plays'
|
||||
elif data[0]=='soundcloud':
|
||||
token=self.bot.bbs.dbiterate('bbs_tokenmirror',soundcloud_url)
|
||||
msg=msg+f'{c4}{self.bot.bbc.tailor(soundcloud_title.lower(),49)} {c1}╏ {c3}{data[1]} {self.bot.bbs.b4}total plays{c1} ╏ {self.bot.bbs.b4}?bb {token}'
|
||||
if not data[1]==0:
|
||||
msg=msg+f'{c1} ╏ {self.bot.bbs.b4}top {c3}{soundcloud_hits} {self.bot.bbs.b4}plays'
|
||||
self.bot.privmsg(target,msg)
|
||||
except:
|
||||
msg="no music data for boombox yet"
|
||||
self.bot.privmsg(target,msg)
|
||||
##################################################################################################### EOF
|
@ -72,6 +72,9 @@ class Plugin:
|
||||
URL=f'https://soundcloud.com/{_path[0]}'
|
||||
TITLE=title.split('|')[0].split('by')[-1].strip()
|
||||
NAME=html.unescape(_name[0]);
|
||||
######## SOUNDCLOUD <-> BOOMBOX_PLUGIN HOOK ######## SOUNDCLOUD <-> BOOMBOX_PLUGIN HOOK ########
|
||||
self.bot.bbs.enter(NICK,URL,TITLE)
|
||||
######## SOUNDCLOUD <-> BOOMBOX_PLUGIN HOOK ######## SOUNDCLOUD <-> BOOMBOX_PLUGIN HOOK ########
|
||||
msg=f"\x02\x0302{NICK}\x0F\x02\x0304 ▶ "
|
||||
msg+=f"\x0F\x02\x0313{NAME}\x0F\x02\x0304 ▶ "
|
||||
msg+=f"\x0F\x02\x0312{URL}\x0F\x02\x0313\x0F\x02\x0304 ▶ "
|
||||
|
@ -70,6 +70,9 @@ class Plugin:
|
||||
title = tree.find(".//title")
|
||||
if title is not None:
|
||||
title = title.text.strip()[:100]
|
||||
######## URL_GRABBER <-> BOOMBOX_PLUGIN HOOK ######## URL_GRABBER <-> BOOMBOX_PLUGIN HOOK ########
|
||||
self.bot.bbs.enter(mask.nick,url,title)
|
||||
######## URL_GRABBER <-> BOOMBOX_PLUGIN HOOK ######## URL_GRABBER <-> BOOMBOX_PLUGIN HOOK ########
|
||||
msg = "\x02\x0302{nick:}\x0F\x02\x0304 ▶ \x0F\x1D\x0314{title:}\x0F".format(nick=mask.nick,title=title)
|
||||
msg = self.bot.emo(msg)
|
||||
self.bot.privmsg(target, msg)
|
||||
@ -81,4 +84,4 @@ class Plugin:
|
||||
#######################################################################################
|
||||
#######################################################################################
|
||||
###########################################################################################
|
||||
###########################################################################################
|
||||
###########################################################################################
|
||||
|
@ -73,6 +73,10 @@ class Plugin:
|
||||
topics[:] = [i.replace("https://en.wikipedia.org/wiki/", "").replace("_"," ").title() for i in topics]
|
||||
except:
|
||||
topics = []
|
||||
######## YOUTUBE <-> BOOMBOX_PLUGIN HOOK: 1 of 2 ######## YOUTUBE <-> BOOMBOX_PLUGIN HOOK: 1 of 2 ########
|
||||
url="https://youtu.be/{}".format(video_id)
|
||||
self.bot.bbs.enter(mask.nick,url,title)
|
||||
######## YOUTUBE <-> BOOMBOX_PLUGIN HOOK: 1 of 2 ######## YOUTUBE <-> BOOMBOX_PLUGIN HOOK: 1 of 2 ########
|
||||
duration = isodate.parse_duration(video_info.get("contentDetails").get("duration"))
|
||||
msg = "\x02\x0302{nick:}\x0F\x02\x0304 ▶▶ \x02\x0303\x1D\x1F{title:}\x0F".format(nick=mask.nick, title=title)
|
||||
msg = msg + "\x02\x1D\x0304 ▶ \x0F\x1D\x0314Duration: \x0F\x1D{duration:} \x0F".format(duration=duration)
|
||||
@ -130,7 +134,10 @@ class Plugin:
|
||||
except:
|
||||
topics = []
|
||||
duration = isodate.parse_duration(video_info.get("contentDetails").get("duration"))
|
||||
######## YOUTUBE <-> BOOMBOX_PLUGIN HOOK: 2 of 2 ######## YOUTUBE <-> BOOMBOX_PLUGIN HOOK: 2 of 2 ########
|
||||
url = "https://youtu.be/{}".format(video_id)
|
||||
self.bot.bbs.enter(mask.nick,url,title)
|
||||
######## YOUTUBE <-> BOOMBOX_PLUGIN HOOK: 2 of 2 ######## YOUTUBE <-> BOOMBOX_PLUGIN HOOK: 2 of 2 ########
|
||||
_nick = ""
|
||||
try:
|
||||
if len(self.bot.madjust) > 0:
|
||||
@ -141,7 +148,7 @@ class Plugin:
|
||||
_nick = mask.nick
|
||||
msg = "\x02\x0302{nick:}\x0F\x02\x0304 ▶▶ \x02\x0303\x1D\x1F{title:}\x0F".format(nick=_nick, title=title)
|
||||
msg = msg + "\x02\x1D\x0304 ▶ \x0F\x1D\x0314Duration: \x0F\x1D{duration:} \x0F".format(duration=duration)
|
||||
if like_count == 0:
|
||||
if like_count == 0:
|
||||
msg = msg + "\x0F\x1D\x0314Published: \x0F\x1D{published:} \x0F\x1D\x0314Views: \x0F\x1D{views:,} \x0F\x1D\x0314Type: \x0F\x1DVideo\x0F".format(published=published_at, views=view_count)
|
||||
else:
|
||||
msg = msg + "\x0F\x1D\x0314Published: \x0F\x1D{published:} \x0F\x1D\x0314Likes: \x0F\x1D{views:,} \x0F\x1D\x0314Type: \x0F\x1DMovie\x0F".format(published=published_at, views=like_count)
|
||||
|
Loading…
Reference in New Issue
Block a user