Пример #1
0
    def youtubesr(self, request, user):
        request = unidecode(request)
        try:
            results = (Mobileclient.search(api, request, SONGBLSIZE)['video_hits'])
            top_result = results[0]['youtube_video']
            video_url = "https://www.youtube.com/watch?v=" + top_result['id']
            key = top_result['id']
            title = top_result['title']
        except IndexError:
            try:
                self.video = YouTube("https://www.youtube.com/watch?v=" + request)
                return self.songrequest(" https://www.youtube.com/watch?v=" + request, user)
            except:
                return "No results at all"

        try:
            self.video = YouTube(video_url)
        except:
            return user + " >> That video is unavailable, it's probably age restricted."
        # Check the queue to see if the song is already in there.
        self.db = sqliteread('''SELECT id, count(*) FROM songs WHERE key="{0}"'''.format(key))
        if self.db[1] > (MAX_DUPLICATE_SONGS - 1):
            return user + " >> That song is already in the queue."
        songtime = self.getsongtime(video_url, key)
        if songtime > (MAXTIME * 60000):
            return user + " >> That song exceeds the maximum length of " + str(MAXTIME) + " minutes."

        sqlitewrite('''INSERT INTO songs(name, song, key, time) VALUES("{user}", "{request}", "{key}", "{time}");'''.format(user=user, request=(video_url.replace('"', "'")), key=(key.replace('"', "'")), time=songtime))
        removetopqueue()
        return user + " >> Added: " + title + " to the queue (YT). ID: " + getnewentry()
Пример #2
0
 def clearsong(self, songid, user):
     if not songid:
         try:
             result = sqliteread(
                 'SELECT id, song, name FROM songs ORDER BY id DESC LIMIT 1'
             )
             sqlitewrite('DELETE FROM songs WHERE id={0}'.format(
                 str(result[0])))
             return user + ' >> Removed the request: "' + str(
                 result[1]) + '" requested by ' + str(
                     result[2]) + " from the queue."
         except Error as e:
             raise e
         except:
             return "Something messed up. Is the queue empty?"
     else:
         try:
             result = sqliteread(
                 'SELECT song, name FROM songs WHERE id={0}'.format(songid))
             sqlitewrite('DELETE FROM songs WHERE id={0}'.format(songid))
             return user + ' >> Removed the request: "' + str(
                 result[0]) + '" requested by ' + str(
                     result[1]) + " from the queue."
         except Error as e:
             raise e
         except:
             return user + " >> Couldn't find that request."
Пример #3
0
 def wrongsong(self, songid, user):
     if not songid:
         try:
             result = sqliteread(
                 'SELECT id, song FROM songs WHERE name="{0}"  ORDER BY id DESC LIMIT 1'
                 .format(user))
             sqlitewrite('DELETE FROM songs WHERE id={0}'.format(
                 str(result[0])))
             return user + ' >> Removed your request: "' + str(
                 result[1]) + '" from the queue.'
         except Error as e:
             raise e
         except:
             return user + " >> Couldn't find your most recent request."
     else:
         try:
             result = sqliteread(
                 'SELECT song, name FROM songs WHERE id={0}'.format(songid))
             if user in result[1]:
                 sqlitewrite(
                     'DELETE FROM songs WHERE id={0}'.format(songid))
                 return user + ' >> Removed your request: "' + str(
                     result[0]) + '" from the queue.'
             else:
                 return user + " >> You didn't request that song, you can't delete it!"
         except Error as e:
             raise e
         except:
             return user + " >> Couldn't find that request."
Пример #4
0
def removetopqueue():
    row = sqliteread(
        '''SELECT id, name, song, key FROM songs ORDER BY id ASC'''
    )  #Pick the top song
    if row[1] == "BotPlaylist":  #>>>>>> DO THIS STUFF IF THE LIST IS EMPTY!
        sqlitewrite(('''DELETE FROM songs WHERE id={0}''').format(int(
            row[0])))  #Delete the top song
        return
    return False
Пример #5
0
 def plclearsong(self, songid, user):
     if not songid:
         try:
             result = sqliteread('SELECT id, song FROM playlist ORDER BY id DESC LIMIT 1')
             sqlitewrite('DELETE FROM playlist WHERE id={0}'.format(str(result[0])))
             return user + ' >> Removed your request: "' + str(result[1]) + '" from the backup playlist.'
         except Exception as e:
             print (e)
             return user + " >> Couldn't find the most recent request."
     else:
         try:
             result = sqliteread('SELECT song FROM playlist WHERE id={0}'.format(songid))
             sqlitewrite('DELETE FROM playlist WHERE id={0}'.format(songid))
             return user + ' >> Removed the song: "' + str(result[0]) + " from the queue."
         except Error as e:
             raise e
         except:
             return user + " >> Couldn't find that request."
Пример #6
0
    def playsong(self):
        global skiprequests, skipusers
        row = sqliteread(
            '''SELECT id, name, song, key FROM songs ORDER BY id ASC'''
        )  # Pick the top song
        try:
            self.songtitle = row[2]
            songkey = row[3]
        except Exception as e:
            time.sleep(0.4)
            return
        sqlitewrite(('''DELETE FROM songs WHERE id={0}''').format(
            row[0]))  # Delete the top song

        if validators.url(
                self.songtitle) == True:  # TEST IF THE REQUEST IS A LINK
            if "youtu" in self.songtitle:  # IS IT A YOUTUBE LINK?
                try:
                    yt = YouTube(self.songtitle)
                    playurl = yt.streams.filter(
                        only_audio=True).order_by('abr').first().url
                    self.songtitle = yt.title
                except Exception as e:
                    print "Pytube Error:"
                    print e
                writenowplaying(True, self.songtitle)
            else:  # If not YT link, play normal music file.
                playurl = self.songtitle
                self.songtitle = "Online Music File"
                writenowplaying(True, self.songtitle)
        else:  # Otherwise it's GPM
            playurl = sr_geturl(songkey)
            writenowplaying(True, self.songtitle)
        self.instance = vlc.Instance()
        self.p = self.instance.media_player_new(playurl)  # Play the music
        self.p.play()
        saveAlbumArt(songkey)
        writenowplaying(True, self.songtitle)
        createsongqueue()
        skiprequests = 0
        skipusers = []
        return True
Пример #7
0
    def plsongrequest(self, request, user):
        request = request.replace("\r", "")[1:]
        # LINKS
        # DETERMINE LINK TYPE
        if validators.url(request):
            if "youtu" in request:
                try:
                    title = YouTube(request).title
                except Exception:
                    return user + " >> Unable to use that video for some reason."
                key = getytkey(request)
                if not key:
                    return user + " >> Something is wrong with your Youtube link."

                # Check the queue to see if the song is already in there.
                self.db = sqliteread(
                    '''SELECT id, count(*) FROM playlist WHERE key="{0}"'''.
                    format(key))
                if self.db[1] > (MAX_DUPLICATE_SONGS - 1):
                    return user + " >> That song is already in the playlist. ID: " + str(
                        self.db[0])
                sqlitewrite(
                    '''INSERT INTO playlist(song, key) VALUES("{request}", "{key}");'''
                    .format(request=(request.replace('"', "'")),
                            key=(key.replace('"', "'"))))
                return user + " >> Added: " + title + " to the playlist (YT). ID: " + str(
                    sqliteread(
                        'SELECT id FROM playlist ORDER BY id DESC LIMIT 1')[0])
            else:  # OTHER MP3 REQUESTS <<<<<<<
                sqlitewrite(
                    '''INSERT INTO playlist(song, key) VALUES("{request}", "{request}");'''
                    .format(request=(request.replace('"', "'"))))
                return user + " >> Added that link to the playlist. ID: " + str(
                    sqliteread(
                        'SELECT id FROM playlist ORDER BY id DESC LIMIT 1')[0])
        else:  # GOOGLE PLAY MUSIC STUFF
            try:
                top_song_result = songtitlefilter(request, 0)
                key = top_song_result['storeId']
                songtitle = str(top_song_result['artist'] + " - " +
                                top_song_result['title'])
            # If theres an error (its unable to find the song) then announce it, otherwise write the song data to the db
            except IndexError:
                return user + " >> No results found for that song. Please try a different one."
            else:
                # Test if the song is already in the playlist
                self.db = sqliteread(
                    '''SELECT id, count(*) FROM playlist WHERE key="{0}"'''.
                    format(key))
                if self.db[1] > (MAX_DUPLICATE_SONGS - 1):
                    return user + " >> That song is already in the playlist. ID: " + str(
                        self.db[0])
                # Add song to the playlist
                sqlitewrite(
                    '''INSERT INTO playlist(song, key) VALUES("{request}", "{key}");'''
                    .format(request=(songtitle.replace('"', "'")),
                            key=(key.replace('"', "'"))))
                return user + " >> Added: " + songtitle + " to the playlist. ID: " + str(
                    sqliteread(
                        'SELECT id FROM playlist ORDER BY id DESC LIMIT 1')[0])
Пример #8
0
def playfromplaylist():
    row = sqliteread('''SELECT id, song, key FROM playlist ORDER BY id ASC''') #Pick the top song
    if row == None: #>>>>>> DO THIS STUFF IF THE LIST IS EMPTY!
        return
    try:
        songtitle = row[1]
        songkey = row[2]
    except:
        return

    #Delete the top result
    row = sqliteread('SELECT id FROM playlist ORDER BY id ASC LIMIT 1')
    sqlitewrite(('''DELETE FROM playlist WHERE id={0}''').format(int(row[0]))) #Delete the top song
    sqlitewrite(('''INSERT INTO playlist(song, key) VALUES("{song_name}", "{key}");''').format(song_name=songtitle, key=songkey))
    sqlitewrite(('''INSERT INTO songs(name, song, key) VALUES("BotPlaylist", "{song_name}", "{key}");''').format(song_name=songtitle, key=songkey))
Пример #9
0
 def clearqueue(self, x, y):
     try:
         sqlitewrite('DELETE FROM songs')
         return "Cleared the current songrequest queue"
     except:
         return "There was some sort of issue clearing the queue."
Пример #10
0
    def songrequest(self, request, user):
        if request == "\r":  # Send a message if they request nothing
            return user + " >> " + DEFAULT_SR_MSG
        # Check for songs already in the queue
        if sqliteread('''SELECT count(*) FROM songs WHERE name="{0}"'''.format(user))[0] > (MAX_REQUESTS_USER - 1):
            return user + " >> You already have " + str(MAX_REQUESTS_USER) + " songs in the queue."

        request = request.replace("\r", "")[1:]
        # LINKS
        # DETERMINE LINK TYPE
        if validators.url(request):
            if "youtu" in request:
                key = getytkey(request)
                if not key: return "Something is wrong with your Youtube link."

                # Check the queue to see if the song is already in there.
                self.db = sqliteread('''SELECT id, count(*) FROM songs WHERE key="{0}"'''.format(key))

                if self.db[1] > (MAX_DUPLICATE_SONGS - 1):
                    return user + " >> That song is already in the queue."

                try:
                    self.video = YouTube(request)
                except:
                    return user + " >> That video is unavailable, it's probably age restricted."

                songtime = self.getsongtime(request, key)
                if songtime > (MAXTIME * 60000):
                    return user + " >> That song exceeds the maximum length of " + str(MAXTIME) + " minutes."

                title = self.video.title
                sqlitewrite('''INSERT INTO songs(name, song, key, time) VALUES("{user}", "{request}", "{key}", "{time}");'''.format(user=user, request=(request.replace('"', "'")), key=(key.replace('"', "'")), time=songtime))
                removetopqueue()
                return user + " >> Added: " + title + " to the queue (YT). ID: " + getnewentry()
            else:  # OTHER MP3 REQUESTS <<<<<<<
                if not MEDIA_FILE_ENABLE:
                    return user + " >> Online Media Links are disabled by the streamer, you'll need to request something else."

                songtime = self.getsongtime("Online", request)
                if songtime > (MAXTIME * 60000):
                    return user + " >> That song exceeds the maximum length of " + str(MAXTIME) + " minutes."

                sqlitewrite('''INSERT INTO songs(name, song, key, time) VALUES("{user}", "{request}", "{request}", "{time}");'''.format(user=user, request=(request.replace('"', "'")), time=songtime))
                removetopqueue()

                return user + " >> Added that link to the queue. ID: " + getnewentry()

        elif GPM_ENABLE:  # GOOGLE PLAY MUSIC STUFF
            try:
                top_song_result = songtitlefilter(request, 0)
                key = top_song_result['storeId']
                songtitle = str(top_song_result['artist'] + " - " + top_song_result['title'])
            # If theres an error (its unable to find the song) then announce it, otherwise write the song data to the db
            except IndexError:
                if YT_IF_NO_RESULT:
                    return self.youtubesr(request, user)
                else:
                    return user + " >> No results found for that song. Please try a different one."
            else:
                # Test if the song is already in the queue
                self.db = sqliteread('''SELECT id, count(*) FROM songs WHERE key="{0}"'''.format(key))
                if self.db[1] > (MAX_DUPLICATE_SONGS - 1):
                    return user + " >> That song is already in the queue."
                songtime = self.getsongtime(None, key)

                if songtime > (MAXTIME * 60000):
                    return user + " >> That song exceeds the maximum length of " + str(MAXTIME) + " minutes."

                # Add song to the queue
                sqlitewrite('''INSERT INTO songs(name, song, key, time) VALUES("{user}", "{request}", "{key}", "{time}");'''.format(user=user, request=(songtitle.replace('"', "'")), key=(key.replace('"', "'")), time=songtime))
                removetopqueue()
                return user + " >> Added: " + songtitle + " to the queue. ID: " + getnewentry()
        else:
            return self.youtubesr(request, user)