Skip to content

Commit

Permalink
Resolve conflicts.
Browse files Browse the repository at this point in the history
  • Loading branch information
rmcpantoja committed Apr 7, 2024
2 parents 38fc358 + 42a50e1 commit 6eff3cb
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 52 deletions.
123 changes: 72 additions & 51 deletions VeTube.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
from chat_downloader import ChatDownloader
from update import updater,update
from os import path,remove,getcwd, makedirs
from TikTokLiveLegacy import TikTokLiveClient
from TikTokLiveLegacy.types.events import CommentEvent, GiftEvent, DisconnectEvent, ConnectEvent,LikeEvent,JoinEvent,FollowEvent,ShareEvent,ViewerUpdateEvent,EnvelopeEvent, EmoteEvent
from TikTokLive.client.client import TikTokLiveClient
from TikTokLive.events import CommentEvent, GiftEvent, DisconnectEvent, ConnectEvent, LikeEvent, JoinEvent, FollowEvent, ShareEvent, RoomUserSeqEvent, EnvelopeEvent, EmoteChatEvent,LiveEndEvent
from utils.menu_accesible import Accesible
from utils.translator import TranslatorWrapper
from helpers.playroom_helper import PlayroomHelper
Expand Down Expand Up @@ -156,13 +156,18 @@ def __init__(self, *args, **kwds):
self.tap_2 = wx.Panel(self.notebook_1, wx.ID_ANY)
self.notebook_1.AddPage(self.tap_2, _("Favoritos"))
sizer_favoritos = wx.BoxSizer(wx.VERTICAL)
self.label_1 = wx.StaticText(self.tap_1, wx.ID_ANY, _("Escriba o pegue una URL de youtube"), style=wx.ALIGN_CENTER_HORIZONTAL)
self.label_1 = wx.StaticText(self.tap_1, wx.ID_ANY, _("Escriba o pegue una URL o usuario"), style=wx.ALIGN_CENTER_HORIZONTAL)
sizer_2.Add(self.label_1, 0, 0, 0)
self.text_ctrl_1 = wx.TextCtrl(self.tap_1, wx.ID_ANY, "", style=wx.TE_AUTO_URL | wx.TE_CENTRE | wx.TE_PROCESS_ENTER)
self.text_ctrl_1 = wx.TextCtrl(self.tap_1, wx.ID_ANY, "", style=wx.TE_AUTO_URL | wx.TE_CENTRE)
self.text_ctrl_1.Bind(wx.EVT_TEXT, self.mostrarBoton)
self.text_ctrl_1.Bind(wx.EVT_TEXT_ENTER, self.acceder)
self.text_ctrl_1.SetFocus()
sizer_2.Add(self.text_ctrl_1, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
label_plataforma = wx.StaticText(self.tap_1, wx.ID_ANY, _("Capturar el chat de: "))
sizer_2.Add(label_plataforma, 0, 0, 0)
self.plataforma = wx.Choice(self.tap_1, wx.ID_ANY, choices=[_("detectar"),_("YouTube"),_("Twich"),_("TikTok"),_("La sala de juegos")])
self.plataforma.SetSelection(0)
self.plataforma.Bind(wx.EVT_CHOICE, self.habilitarSala)
sizer_2.Add(self.plataforma, 0, 0, 0)
self.button_1 = wx.Button(self.tap_1, wx.ID_ANY, _("&Acceder"))
self.button_1.Bind(wx.EVT_BUTTON, self.acceder)
self.button_1.Disable()
Expand All @@ -172,11 +177,6 @@ def __init__(self, *args, **kwds):
self.button_2.Bind(wx.EVT_BUTTON, self.borrarContenido)
self.button_2.Disable()
sizer_2.Add(self.button_2, 0, 0, 0)

self.button_playroom = wx.Button(self.tap_1, wx.ID_ANY, _("capturar chat de la &Sala de Juegos"))
self.button_playroom.Bind(wx.EVT_BUTTON, lambda event: self.acceder(url="sala"))
sizer_2.Add(self.button_playroom, 0, 0, 0)

self.tap_1.SetSizer(sizer_2)
label_favoritos = wx.StaticText(self.tap_2, wx.ID_ANY, _("&Tus favoritos: "))
sizer_favoritos.Add(label_favoritos)
Expand Down Expand Up @@ -225,20 +225,22 @@ def opcionesMenu(self, event):
opciones = wx.Menu()
ayuda = wx.Menu()
menu1.AppendSubMenu(opciones, _(u"&Opciones"))
opcion_1 = opciones.Append(wx.ID_ANY, _("Configuración"))
opcion_0 = opciones.Append(wx.ID_ANY, _("&Editor de combinaciones de teclado para VeTube"))
self.Bind(wx.EVT_MENU, self.createEditor, opcion_0)
opcion_1 = opciones.Append(wx.ID_ANY, _("&Configuración"))
self.Bind(wx.EVT_MENU, self.appConfiguracion, opcion_1)
opcion_3 = opciones.Append(wx.ID_ANY, _("Restablecer los ajustes"))
opcion_3 = opciones.Append(wx.ID_ANY, _("&Restablecer los ajustes"))
self.Bind(wx.EVT_MENU, self.restaurar, opcion_3)
menu1.AppendSubMenu(ayuda, _("&Ayuda"))
manual = ayuda.Append(wx.ID_ANY, _("¿Cómo usar vetube? (documentación en línea)"))
manual = ayuda.Append(wx.ID_ANY, _("¿Cómo usar &vetube? (documentación en línea)"))
self.Bind(wx.EVT_MENU, lambda event: wx.LaunchDefaultBrowser('https://github.com/metalalchemist/VeTube/tree/master/doc/'+languageHandler.curLang[:2]+'/readme.md'), manual)
apoyo = ayuda.Append(wx.ID_ANY, _("Únete a nuestra &causa"))
self.Bind(wx.EVT_MENU, lambda event: wx.LaunchDefaultBrowser('https://www.paypal.com/donate/?hosted_button_id=5ZV23UDDJ4C5U'), apoyo)
itemPageMain = ayuda.Append(wx.ID_ANY, _("&Visita nuestra página de github"))
self.Bind(wx.EVT_MENU, lambda event: wx.LaunchDefaultBrowser('https://github.com/metalalchemist/VeTube'), itemPageMain)
actualizador = ayuda.Append(wx.ID_ANY, _("&buscar actualizaciones"))
self.Bind(wx.EVT_MENU, self.updater, actualizador)
acercade = menu1.Append(wx.ID_ANY, _("Acerca de"))
acercade = menu1.Append(wx.ID_ANY, _("&Acerca de"))
self.Bind(wx.EVT_MENU, self.infoApp, acercade)
salir = menu1.Append(wx.ID_EXIT, _("&Salir...\tAlt+F4"))
self.Bind(wx.EVT_MENU, self.cerrarVentana, salir)
Expand All @@ -250,11 +252,14 @@ def OnCharHook(self, event):
# alt mas m
if code == 77 and event.AltDown(): self.opcionesMenu(event)
elif wx.GetKeyState(wx.WXK_F1): wx.LaunchDefaultBrowser('https://github.com/metalalchemist/VeTube/tree/master/doc/'+languageHandler.curLang[:2]+'/readme.md')
elif code == wx.WXK_RETURN or code == wx.WXK_NUMPAD_ENTER:
if self.FindFocus()== self.plataforma or self.FindFocus()==self.text_ctrl_1: self.acceder()
else: event.Skip()
def createEditor(self,event=None):
global mis_teclas
try: mis_teclas=eval(mis_teclas)
except: pass
except TypeError: pass
if not self.dentro: self.handler_keyboard.register_keys(mis_teclas)
self.dlg_teclado = wx.Dialog(None, wx.ID_ANY, _("Editor de combinaciones de teclado para Vetube"))
sizer = wx.BoxSizer(wx.VERTICAL)
label_editor = wx.StaticText(self.dlg_teclado, wx.ID_ANY, _("&Selecciona la combinación de teclado a editar"))
Expand All @@ -275,6 +280,7 @@ def createEditor(self,event=None):
restaurar=wx.Button(self.dlg_teclado, -1, _(u"&restaurar combinaciones por defecto"))
restaurar.Bind(wx.EVT_BUTTON, self.restaurarTeclas)
close = wx.Button(self.dlg_teclado, wx.ID_CANCEL, _(u"&Cerrar"))
close.Bind(wx.EVT_BUTTON,self.cierraEditor)
firstSizer = wx.BoxSizer(wx.HORIZONTAL)
firstSizer.Add(label_editor, 0, wx.ALL, 5)
firstSizer.Add(self.combinaciones, 0, wx.ALL, 5)
Expand Down Expand Up @@ -358,8 +364,9 @@ def editarTeclas2(self, event):
if self.nueva_combinacion == self.combinaciones.GetItem(busc,1).GetText():
wx.MessageBox(_("esta combinación ya está siendo usada en la función %s") % mensaje_teclas[busc], "error.", wx.ICON_ERROR)
return
if self.texto in self.handler_keyboard.active_keys: self.handler_keyboard.unregister_key(self.combinaciones.GetItem(indice,1).GetText(),mis_teclas[self.combinaciones.GetItem(indice,1).GetText()])
self.handler_keyboard.register_key(self.nueva_combinacion,mis_teclas[self.combinaciones.GetItem(indice,1).GetText()])
if self.texto in self.handler_keyboard.active_keys:
self.handler_keyboard.unregister_key(self.combinaciones.GetItem(indice,1).GetText(),mis_teclas[self.combinaciones.GetItem(indice,1).GetText()])
self.handler_keyboard.register_key(self.nueva_combinacion,mis_teclas[self.combinaciones.GetItem(indice,1).GetText()])
self.dlg_editar_combinacion.Destroy()
wx.CallAfter(self.correccion)
def correccion(self):
Expand Down Expand Up @@ -400,21 +407,28 @@ def appConfiguracion(self, event):
def infoApp(self, event): wx.MessageBox(_("Creadores del proyecto:")+"\nCésar Verástegui & Johan G.\n"+_("Descripción:\n Lee en voz alta los mensajes de los directos en youtube y twitch, ajusta tus preferencias como quieras y disfruta más tus canales favoritos."), _("Información"), wx.ICON_INFORMATION)
def acceder(self, event=None,url=""):
if not url: url=self.text_ctrl_1.GetValue()
if self.plataforma.GetSelection()==4: url="sala"
if url:
autodetectar=False if self.plataforma.GetSelection()!=0 else True
if 'http' in url or 'www' in url: autodetectar=True
if not autodetectar:
if self.plataforma.GetSelection()==1: url="www.youtube.com/@"+self.text_ctrl_1.GetValue()+"/live"
elif self.plataforma.GetSelection()==2: url="https://www.twitch.tv/@"+self.text_ctrl_1.GetValue()
elif self.plataforma.GetSelection()==3: url="https://www.tiktok.com/@"+self.text_ctrl_1.GetValue()+"/live"
if 'yout' in url:
if 'studio' in url:
url=url.replace('https://studio.youtube.com/video/','https://www.youtube.com/watch?v=')
url=url.replace('/livestreaming','/')
if 'live' in url: url=url.replace('live/','watch?v=')
try:
self.text_ctrl_1.SetValue(url)
if 'yout' in url: self.chat=ChatDownloader().get_chat(url,message_groups=["messages", "superchat"],interruptible_retry=False)
elif 'twitch' in url: self.chat=ChatDownloader().get_chat(url,message_groups=["messages", "bits","subscriptions","upgrades"])
elif 'tiktok' in url: self.chat=TikTokLiveClient(unique_id=funciones.extractUser(url))
elif url=="sala": self.chat = PlayroomHelper()
elif "sala" in url: self.chat = PlayroomHelper()
else:
wx.MessageBox(_("¡Parece que el enlace al cual está intentando acceder no es un enlace válido."), "error.", wx.ICON_ERROR)
return
self.text_ctrl_1.SetValue(url)
self.dentro=True
self.usuarios = []
self.mensajes = []
Expand Down Expand Up @@ -455,7 +469,8 @@ def acceder(self, event=None,url=""):
self.hilo2.daemon = True
self.hilo2.start()
else:
self.handler_keyboard.register_keys(eval(mis_teclas))
if isinstance(mis_teclas,str): self.handler_keyboard.register_keys(eval(mis_teclas))
else: self.handler_keyboard.register_keys(mis_teclas)
self.hilo2 = Timer(0.5, self.recibir_sala)
self.hilo2.daemon = True
self.hilo2.start()
Expand All @@ -464,9 +479,7 @@ def acceder(self, event=None,url=""):
if url!="sala":
wx.MessageBox(_("¡Parece que el enlace al cual está intentando acceder no es un enlace válido."+str(e)), "error.", wx.ICON_ERROR)
self.text_ctrl_1.SetFocus()
else:
wx.MessageBox(_("No ha sido posible engancharse al proceso de la sala de juegos. Debe estar ejecutándose antes de empezar a capturar chats. Si tienes dudas, por favor ponte en contacto con nosotros. Código de error: ") +str(e), "error.", wx.ICON_ERROR)
self.button_playroom.SetFocus()
else: wx.MessageBox(_("No ha sido posible engancharse al proceso de la sala de juegos. Debe estar ejecutándose antes de empezar a capturar chats. Si tienes dudas, por favor ponte en contacto con nosotros. Código de error: ") +str(e), "error.", wx.ICON_ERROR)
self.text_ctrl_1.SetValue("")
else:
wx.MessageBox(_("No se puede acceder porque el campo de texto está vacío, debe escribir algo."), "error.", wx.ICON_ERROR)
Expand Down Expand Up @@ -580,14 +593,13 @@ def descargarEstadisticas(self, event):
def borrarContenido(self, event):
self.text_ctrl_1.SetValue("")
self.text_ctrl_1.SetFocus()
def detenerLectura(self, event):
def detenerLectura(self, event=None):
global yt,pos,lista
dlg_mensaje = wx.MessageDialog(self.dialog_mensaje, _("¿Desea salir de esta ventana y detener la lectura de los mensajes?"), _("Atención:"), wx.YES_NO | wx.ICON_ASTERISK)
if dlg_mensaje.ShowModal() == wx.ID_YES:
self.dentro=False
self.usuarios=self.mensajes=[]
if isinstance(self.chat, TikTokLiveClient):
self.chat.stop()
self.gustados=[]
self.megusta=self.unidos=self.seguidores=self.compartidas=0
yt=0
Expand Down Expand Up @@ -721,7 +733,8 @@ def recibir_sala(self):

def iniciarChat(self):
if not isinstance(self.chat, TikTokLiveClient): self.label_dialog.SetLabel(self.chat.title)
self.handler_keyboard.register_keys(eval(mis_teclas))
try: self.handler_keyboard.register_keys(eval(mis_teclas))
except TypeError: self.handler_keyboard.register_keys(mis_teclas)
if 'yout' in self.text_ctrl_1.GetValue(): self.recibirYT()
elif 'twitch' in self.text_ctrl_1.GetValue(): self.recibirTwich()
elif 'tiktok' in self.text_ctrl_1.GetValue(): self.recibirTiktok()
Expand Down Expand Up @@ -943,11 +956,12 @@ def recibirYT(self):
if config['sonidos'] and self.chat.status!="past" and config['listasonidos'][0]: player.playsound(ajustes.rutasonidos[0],False)
self.list_box_1.Append(message['author']['name'] +': ' +message['message'])
continue
async def finalizado(self, event: LiveEndEvent): self.detenerLectura()
async def on_connect(self,event: ConnectEvent):
leer.speak(_("Ingresando al chat"))
if config['sonidos'] and config['listasonidos'][6]: player.playsound(ajustes.rutasonidos[6],False)
async def on_comment(self,event: CommentEvent):
self.agregarUsuario(event.user.nickname)
self.agregarUsuario(str(event.user.nickname))
if config['categorias'][0]:
for contador in range(len(lista)):
if lista[contador][0]=='Mensajes':
Expand All @@ -959,7 +973,7 @@ async def on_comment(self,event: CommentEvent):
else: lector.speak(event.user.nickname + ": " + event.comment if event.comment is not None else '')
self.list_box_1.Append(event.user.nickname + ": " + event.comment if event.comment is not None else '')
if config['sonidos'] and config['listasonidos'][0]: player.playsound(ajustes.rutasonidos[0],False)
async def on_emote(self,event: EmoteEvent):
async def on_emote(self,event: EmoteChatEvent):
if config['categorias'][1]:
for contador in range(len(lista)):
if lista[contador][0]=='Miembros':
Expand Down Expand Up @@ -987,22 +1001,22 @@ async def on_follow(self,event: FollowEvent):
self.list_box_1.Append(event.user.nickname + _(" comenzó a seguirte!"))
if config['sonidos'] and config['listasonidos'][10]: player.playsound(ajustes.rutasonidos[10],False)
async def on_gift(self,event: GiftEvent):
if event.gift.streakable and not event.gift.streaking:
if event.gift.streakable and not event.streaking:
if self.divisa!="Por defecto":
if self.divisa=='USD': total=float((event.gift.info.diamond_count*event.gift.count)/100)
if self.divisa=='USD': total=float((event.gift.diamond_count*event.repeat_count)/100)
else:
moneda = json.loads(google_currency.convert('USD', self.divisa, int((event.gift.info.diamond_count * event.gift.count) / 100)))
moneda = json.loads(google_currency.convert('USD', self.divisa, int((event.gift.diamond_count * event.repeat_count) / 100)))
if moneda['converted']: total=moneda['amount']
mensajito=_('%s ha enviado %s %s (%s %s)') % (event.user.nickname,str(event.gift.count),event.gift.info.name,str(total),self.divisa)
else: mensajito=_('%s ha enviado %s %s (%s diamante)') % (event.user.nickname,str(event.gift.count),event.gift.info.name,str(event.gift.info.diamond_count))
mensajito=_('%s ha enviado %s %s (%s %s)') % (event.user.nickname,str(event.repeat_count),event.gift.name,str(total),self.divisa)
else: mensajito=_('%s ha enviado %s %s (%s diamante)') % (event.user.nickname,str(event.repeat_count),event.gift.name,str(event.gift.diamond_count))
elif not event.gift.streakable:
if self.divisa!="Por defecto":
if self.divisa=='USD': total=int((event.gift.info.diamond_count*event.gift.count)/100)
if self.divisa=='USD': total=int((event.gift.diamond_count*event.repeat_count)/100)
else:
moneda = json.loads(google_currency.convert('USD', self.divisa, int((event.gift.info.diamond_count * event.gift.count) / 100)))
moneda = json.loads(google_currency.convert('USD', self.divisa, int((event.gift.diamond_count * event.repeat_count) / 100)))
if moneda['converted']: total=moneda['amount']
mensajito=_('%s ha enviado %s %s (%s %s)') % (event.user.nickname,str(event.gift.count),event.gift.info.name,str(total),self.divisa)
else: mensajito=_('%s ha enviado %s %s (%s diamante)') % (event.user.nickname,str(event.gift.count),event.gift.info.name,str(event.gift.info.diamond_count))
mensajito=_('%s ha enviado %s %s (%s %s)') % (event.user.nickname,str(event.repeat_count),event.gift.name,str(total),self.divisa)
else: mensajito=_('%s ha enviado %s %s (%s diamante)') % (event.user.nickname,str(event.repeat_count),event.gift.name,str(event.gift.diamond_count))
try:
if config['categorias'][2]:
for contador in range(len(lista)):
Expand All @@ -1017,6 +1031,7 @@ async def on_gift(self,event: GiftEvent):
if config['sonidos'] and config['listasonidos'][3]: player.playsound(ajustes.rutasonidos[3],False)
except Exception as e: pass
async def on_join(self,event: JoinEvent):
if not self.dentro: exit()
self.unidos+=1
if config['reader'] and config['unread'][1]:
if lista[yt][0]=='General':
Expand All @@ -1025,14 +1040,14 @@ async def on_join(self,event: JoinEvent):
self.list_box_1.Append(event.user.nickname+_(" se ha unido a tu en vivo."))
if config['sonidos'] and config['listasonidos'][2]: player.playsound(ajustes.rutasonidos[2],False)
async def on_like(self,event: LikeEvent):
self.megusta=event.total_likes
self.megusta=event.total
if config['reader'] and config['unread'][5]:
if lista[yt][0]=='General':
if event.user.nickname not in self.gustados:
if config['sapi']: leer.speak(event.user.nickname + _(" le ha dado me gusta a tu en vivo."))
else: lector.speak(event.user.nickname + _(" le ha dado me gusta a tu en vivo."))
self.gustados.append(event.user.nickname)
self.list_box_1.Append(event.user.nickname + _(" le ha dado me gusta a tu en vivo."))
self.list_box_1.Append(event.user.nickname + _(" le ha dado me gusta a tu en vivo."))
if config['sonidos'] and config['listasonidos'][9]: player.playsound(ajustes.rutasonidos[9],False)
async def on_share(self,event: ShareEvent):
self.compartidas+=1
Expand All @@ -1042,21 +1057,22 @@ async def on_share(self,event: ShareEvent):
else: lector.speak(event.user.nickname + _(" ha compartido el en vivo!"))
self.list_box_1.Append(event.user.nickname + _(" ha compartido tu en vivo!"))
if config['sonidos'] and config['listasonidos'][11]: player.playsound(ajustes.rutasonidos[11],False)
async def on_view(self,event: ViewerUpdateEvent): self.label_dialog.SetLabel(self.chat.unique_id+_(' en vivo, actualmente ')+str(event.viewer_count)+_(' viendo ahora'))
async def on_view(self,event: RoomUserSeqEvent): self.label_dialog.SetLabel(self.chat.unique_id+_(' en vivo, actualmente ')+str(event.total)+_(' viendo ahora'))
async def on_disconnect(self,event: DisconnectEvent):
if self.dentro: self.chat.run()
def recibirTiktok(self):
self.chat.add_listener("connect", self.on_connect)
self.chat.add_listener("comment", self.on_comment)
if config['eventos'][0]: self.chat.add_listener("emote", self.on_emote)
if config['eventos'][8]: self.chat.add_listener("envelope", self.on_chest)
if config['eventos'][6]: self.chat.add_listener("follow", self.on_follow)
if config['eventos'][2]: self.chat.add_listener("gift", self.on_gift)
if config['eventos'][1]: self.chat.add_listener("join", self.on_join)
if config['eventos'][5]: self.chat.add_listener("like", self.on_like)
if config['eventos'][7]: self.chat.add_listener("share", self.on_share)
self.chat.add_listener("viewer_update", self.on_view)
self.chat.add_listener("disconnect", self.on_disconnect)
self.chat.add_listener(ConnectEvent, self.on_connect)
self.chat.add_listener(CommentEvent, self.on_comment)
if config['eventos'][0]: self.chat.add_listener(EmoteChatEvent, self.on_emote)
if config['eventos'][8]: self.chat.add_listener(EnvelopeEvent, self.on_chest)
if config['eventos'][6]: self.chat.add_listener(FollowEvent, self.on_follow)
if config['eventos'][2]: self.chat.add_listener(GiftEvent, self.on_gift)
if config['eventos'][1]: self.chat.add_listener(JoinEvent, self.on_join)
if config['eventos'][5]: self.chat.add_listener(LikeEvent, self.on_like)
if config['eventos'][5]: self.chat.add_listener(LiveEndEvent, self.finalizado)
if config['eventos'][7]: self.chat.add_listener(ShareEvent, self.on_share)
self.chat.add_listener(RoomUserSeqEvent, self.on_view)
self.chat.add_listener(DisconnectEvent, self.on_disconnect)
self.chat.run()
def recibirTwich(self):
translator = TranslatorWrapper()
Expand Down Expand Up @@ -1443,6 +1459,11 @@ def agregarUsuario(self, param):
self.mensajes[c]+=1
break
c+=1
def habilitarSala(self,evt):
if evt.GetSelection()==4: self.button_1.Enable()
def cierraEditor(self,evt):
if not self.dentro: self.handler_keyboard.unregister_all_keys()
self.dlg_teclado.Destroy()
class MyApp(wx.App):
def OnInit(self):
self.frame = MyFrame(None, wx.ID_ANY, "")
Expand Down
Loading

0 comments on commit 6eff3cb

Please sign in to comment.