boombox_plugin

This commit is contained in:
0xd3d0c3d 2022-07-24 08:09:17 -05:00
parent 93888ceeb5
commit b2b2953420
5 changed files with 544 additions and 2 deletions

@ -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

@ -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 worlds 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)