Example #1
0
 def __init__(this, file=defFile):
     TimeManager.__init__(this)
     this.data = this.log = None
     this.file = os.path.join(__path__, file)
     this.logPath = os.path.join(__path__, 'log')
     this.logFile = os.path.join(this.logPath, f'{getToday()}.csv')
     this.start()
Example #2
0
 def __init__(this,
              table=table,
              timeCol=timeCol,
              flagCol=flagCol,
              db=mysqlDb):
     TimeManager.__init__(this)
     this.db = MysqlProxy(db=db)
     this.table = table
     this.timeCol = timeCol
     this.flagCol = flagCol
Example #3
0
    async def queue(self, ctx, page=1):
        await ctx.channel.purge(limit=1)
        voice = get(bot.voice_clients, guild=ctx.guild)
        playing, content, pg, iterator, queueSize = "", "", 0, 0, 5
        page = page - 1

        if voice and voice.is_playing:
            playing = f"[{self.songQueue[ctx.guild.id][0]['title']}]({self.songQueue[ctx.guild.id][0]['webpage_url']})"
        else:
            await ctx.send("Nothing playing", delete_after=10)

        if len(self.songQueue[ctx.guild.id]) > 1:
            for i in self.songQueue[ctx.guild.id][1:]:
                iterator += 1
                pg = iterator // queueSize + 1

                if page == iterator // queueSize:
                    content += "\n".join(
                        [f" **{self.songQueue[ctx.guild.id].index(i)}:** [{i['title']}]({i['webpage_url']})\n"
                         f"**Requested by:** {ctx.author.mention}   "
                         f"**Duration:** {TimeManager.parseDuration(i['duration'])}\n"])
            if pg > 1:
                content += "\n".join([f"**Page:** {page + 1}/{pg}"])
        else:
            content = "No queued songs"

        embed = (discord.Embed(title="Music queue", color=self.embedColor)
                 .add_field(name="Playing now: ", value=playing, inline=False)
                 .add_field(name="Requested by", value=f"{ctx.author.mention}", inline=True)
                 .add_field(name="Duration",
                            value=TimeManager.parseDuration(self.songQueue[ctx.guild.id][0]['duration']),
                            inline=True)
                 .add_field(name="Queued: ", value=content, inline=False)
                 .set_thumbnail(url=self.songQueue[ctx.guild.id][0]["thumbnail"]))
        await ctx.send(embed=embed)
Example #4
0
class Mediator:
    time_manager = None
    updater = None
    pimp = None

    def __init__(self):
        self.pimp = Hooker()
        self.time_manager = TimeManager(self, enable_hooks=self.pimp.get_hooks())
        self.updater = Updater(self)
        HwBrightnessControl.set_first_br(self.time_manager.get_current_br())
    def notify(self, sender, event=None):
        if type(sender) is Updater:
            HwBrightnessControl.set_br(self.time_manager.get_current_br())
        elif type(sender) is TimeManager:
            if event == 'h_m':
                self.pimp.do_morning()
            elif event == 'h_e':
                self.pimp.do_evening()
Example #5
0
	def work(self):
		'''
		Вызываемый по таймеру метод
		'''
		currentTime = TimeManager.getTime()
		deleteInterval = ConfigurationManager.sessionDeleteInterval()
		time = currentTime + deleteInterval
		Session.objects.filter(referenceTime__lt = time).delete()
		self.test = self.test + 1
Example #6
0
	def getUser(sessionId):
		'''
		Метод для получения user по sessionId
		'''
		user = None	
		#userId = 0 - SessionManager.checkSessionWorker.test
		if SessionManager.checkSession(sessionId):
			reqSession = Session.objects.get(pk = sessionId)
			reqSession.referenceTime = TimeManager.getTime()
			reqSession.save()
			user = reqSession.userId
		return user
Example #7
0
	def createSession(user):
		'''
		Метод для создания сессии для пользователя
		'''
		sessionId = -1
		try:
			newSession = Session(userId = user, referenceTime = TimeManager.getTime())
			newSession.save()
			sessionId = newSession.pk
		except:
			sessionId = -1
		return sessionId
Example #8
0
    async def edit_message(self, ctx):
        currentSong = self.songQueue[ctx.guild.id][0]
        embed = (discord.Embed(title="Currently playing",
                               description=f"[{currentSong['title']}]({currentSong['webpage_url']})",
                               color=self.embedColor)
                 .add_field(name="Duration", value=TimeManager.parseDuration(currentSong["duration"]))
                 .add_field(name="Requested by", value=ctx.author.mention)
                 .add_field(name="Uploader", value=f"[{currentSong['uploader']}]({currentSong['channel_url']})")
                 .add_field(name="Queue", value="No song queued")
                 .set_thumbnail(url=currentSong["thumbnail"]))
        content = "\n".join([f"**{self.songQueue[ctx.guild.id].index(i)}:**"
                             f"[{i['title']}]({i['webpage_url']})\n**Requested by:** {ctx.author.mention} "
                             f"**Duration:** {TimeManager.parseDuration(i['duration'])}"
                             for i in self.songQueue[ctx.guild.id][1:5]]) if len(self.songQueue[ctx.guild.id]) > 1 \
            else "No songs are queued"
        embed.set_field_at(index=3, name="Queue", value=content, inline=False)

        if ctx.guild.id in self.message:
            await self.message[ctx.guild.id].edit(embed=embed)
        else:
            self.message[ctx.guild.id] = await ctx.send(embed=embed)
Example #9
0
    async def skipto(self, ctx, time):
        await ctx.channel.purge(limit=1)
        channel = ctx.message.author.voice.channel
        voice = get(bot.voice_clients, guild=ctx.guild)

        if voice and voice.is_connected():
            voice = await voice.move_to(channel)
        else:
            voice = await channel.connect()

        if voice.is_playing():
            self.songQueue[ctx.guild.id].insert(1, self.songQueue[ctx.guild.id][0])
            self.musicTitles[ctx.guild.id].insert(1, self.musicTitles[ctx.guild.id][0])
            self.skipToTime = TimeManager.timeParse(time)
            voice.stop()
        else:
            await ctx.send("Nothing to skip", delete_after=self.skipDeleteAfter)

        await ctx.send(
            f"**Skipped to:** {TimeManager.parseDuration(self.skipToTime)} **Requested by:** {ctx.message.author}",
            delete_after=self.skipDeleteAfter)
        await self.edit_message(ctx)
Example #10
0
    async def skip(self, ctx, time="0"):
        skipped = 0
        requestTime = self.songStartTime - datetime.now()
        voice = get(bot.voice_clients, guild=ctx.guild)

        try:
            if int(time) == 0:
                await ctx.channel.purge(limit=1)
                if voice.is_playing():
                    await ctx.send("Track skipped", delete_after=self.skipDeleteAfter)
                    self.skipToTime = 0
                    voice.stop()
                else:
                    await ctx.send("Nothing is playing", delete_after=self.skipDeleteAfter)
            else:
                skipped += int(time) + abs(int(requestTime.total_seconds()))
                self.skipToTime += skipped
                await self.skipto(ctx, self.skipToTime)
        except:
            skipped += TimeManager.timeParse(time) + abs(int(requestTime.total_seconds()))
            self.skipToTime += skipped
            await self.skipto(ctx, self.skipToTime)
Example #11
0
    def playNext(self, ctx):
        voice = get(bot.voice_clients, guild=ctx.guild)
        if voice is None:
            del self.songQueue[ctx.guild.id]
            del self.musicTitles[ctx.guild.id]
            del self.message[ctx.guild.id]
        elif voice.is_connected():
            endTime = self.songStartTime - datetime.now()
            end = self.skipToTime
            self.ffmpegOptions["before_options"] = f"-ss {self.skipToTime} -reconnect 1 " \
                                                   f"-reconnect_at_eof 1 -reconnect_streamed 1 " \
                                                   f"-reconnect_delay_max 5"
            voice.is_paused()

            if self.loop is True:
                self.songQueue[ctx.guild.id].append(self.songQueue[ctx.guild.id][0])
                self.musicTitles[ctx.guild.id].append(self.musicTitles[ctx.guild.id][0])

            end += abs(int(endTime.total_seconds()))

            if len(self.songQueue[ctx.guild.id]) > 1 and len(self.musicTitles[ctx.guild.id]) > 1:
                del self.songQueue[ctx.guild.id][0], self.musicTitles[ctx.guild.id][0]

                if TimeManager.timeParse(self.songQueue[ctx.guild.id][0]["duration"]) <= end:
                    self.skipToTime = 0
                    voice.stop()

                asyncio.run_coroutine_threadsafe(self.edit_message(ctx), bot.loop)
                self.songStartTime = datetime.now()
                self._playMusic(ctx, self.ffmpegPathUrl, self.musicTitles[ctx.guild.id][0])
                voice.is_playing()
            else:
                del self.songQueue[ctx.guild.id]
                del self.musicTitles[ctx.guild.id]
                del self.message[ctx.guild.id]
                asyncio.run_coroutine_threadsafe(voice.disconnect(), bot.loop)
                self.loop = False
Example #12
0
 def __init__(self):
     self.pimp = Hooker()
     self.time_manager = TimeManager(self, enable_hooks=self.pimp.get_hooks())
     self.updater = Updater(self)
     HwBrightnessControl.set_first_br(self.time_manager.get_current_br())