diff --git a/maple.ini b/maple.ini index 88b437c..ed119b1 100644 --- a/maple.ini +++ b/maple.ini @@ -47,6 +47,7 @@ includes = plugins.openai_plugin plugins.dsa_plugin plugins.highlight_plugin + plugins.boombox_plugin autojoins = ${#}tcpdirect diff --git a/plugins/boombox_plugin.py b/plugins/boombox_plugin.py new file mode 100644 index 0000000..d1c2f82 --- /dev/null +++ b/plugins/boombox_plugin.py @@ -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 ... + """ + c=self.bot.bbc.palette() + self.bot.bbc.c=c + token=''.join(args['']) + 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=' '.join(args['']).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 diff --git a/plugins/soundcloud_plugin.py b/plugins/soundcloud_plugin.py index cbd7ba8..4f0a75d 100644 --- a/plugins/soundcloud_plugin.py +++ b/plugins/soundcloud_plugin.py @@ -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 ▶ " diff --git a/plugins/url_grabber_plugin.py b/plugins/url_grabber_plugin.py index 292c9cb..b2271c5 100644 --- a/plugins/url_grabber_plugin.py +++ b/plugins/url_grabber_plugin.py @@ -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: ####################################################################################### ####################################################################################### ########################################################################################### -########################################################################################### \ No newline at end of file +########################################################################################### diff --git a/plugins/youtube_plugin.py b/plugins/youtube_plugin.py index 895356b..a4bd382 100644 --- a/plugins/youtube_plugin.py +++ b/plugins/youtube_plugin.py @@ -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)