Exemplo n.º 1
0
def set_max_track():
    data = Song.objects().order_by("-track_n")[0]
    print data.track_n

    songsMeta = SongsMeta.objects().all()
    if (len(songsMeta) > 0):
        m = songsMeta[0]
    else:
        m = SongsMeta()
    m.n = data.track_n
    m.save()
Exemplo n.º 2
0
def set_max_track():
    data = Song.objects().order_by("-track_n")[0]
    print data.track_n
    
    songsMeta = SongsMeta.objects().all()
    if(len(songsMeta)>0):
        m = songsMeta[0]
    else:
        m = SongsMeta()
    m.n = data.track_n
    m.save()
Exemplo n.º 3
0
def get_songs(song_id: str):
    songs = []
    if song_id:
        try:
            songs.append(Song.objects.get(id=song_id))

        except DoesNotExist:
            return make_response('', 404)

    else:
        songs = Song.objects()

    return make_response(jsonify(_resolve_songs(*songs)), 200)
Exemplo n.º 4
0
 def get_highest_poll_song(cls, stream_id):
     poll = cls.get_current_poll(stream_id)
     mx = -1
     mx_song = None
     for poll_item in poll.poll_items:
         poll_item.song = Song.objects(id=poll_item.song.id).get()
         print poll_item.song.title , poll_item.poll_count
         
         if(poll_item.poll_count>=mx):
             if(poll_item.poll_count==mx):
                 if(random.randint(0,1)==1):
                     continue
             mx = poll_item.poll_count
             mx_song = poll_item.song
     
     return mx_song
Exemplo n.º 5
0
 def process_song(self, song):
     source.track('processing_song')
     if (SeenRecording.objects(mbid=song.mbid)):
         source.track('seen_song')
         return
     SeenRecording(mbid=song.mbid).save()
     if Song.objects(mbid=song.mbid):
         source.track('already_present')
         # We already have the song
         return
     lyric = scraper.get_lyrics(artist=song.artist, title=song.title)
     source.track('searching_for_lyric')
     if lyric:
         source.track('found_lyric')
         song.add_lyric(lyric['string'], lyric['source'])
         song.save()
Exemplo n.º 6
0
def get_init_data(stream_id, user=None):
    from requests import stream_events_handler
    song = Song.objects().order_by("-last_played")[0]
    
    poll = Poll.get_current_poll(stream_id)
    
    init_data = InitData()
    if(user):
        init_data.user = user
        poll_item = user.get_poll_item(poll)
        if(poll_item):
            init_data.user_poll_item_id = str(poll_item.id)#string
        
    init_data.poll = poll
    init_data.n_user = len( stream_events_handler.event_listeners[stream_id])
    init_data.current_song  = song
    
    return init_data
Exemplo n.º 7
0
def get_init_data(stream_id, user=None):
    from requests import stream_events_handler
    song = Song.objects().order_by("-last_played")[0]

    poll = Poll.get_current_poll(stream_id)

    init_data = InitData()
    if (user):
        init_data.user = user
        poll_item = user.get_poll_item(poll)
        if (poll_item):
            init_data.user_poll_item_id = str(poll_item.id)  #string

    init_data.poll = poll
    init_data.n_user = len(stream_events_handler.event_listeners[stream_id])
    init_data.current_song = song

    return init_data
Exemplo n.º 8
0
 def create_next_poll(cls, stream_id , save_in_db = True):
     #pick , 7 songs, 
     # create poll items , 
     # create poll item with the stream Id
     #return 
     total_songs = SongsMeta.objects().get().n
         
     poll = Poll()
     poll.stream_id = stream_id
     if(save_in_db):
         poll.save()
     poll_items = []
     try:
         temp_track_hash = {}
         while(len(poll_items)<7):
             try:
                 random_track_n = random.randint(0,total_songs)
                 if(temp_track_hash.get(random_track_n, None)): continue# dont repeat tracks
                 
                 song = Song.objects(track_n=random_track_n).get()
                 poll_item =  PollItem(song = song , poll_count =0 , poll= poll)
                 poll_items.append(poll_item)
                 temp_track_hash[random_track_n] = True
                 
             except (MultipleObjectsReturned, DoesNotExist) as ex:
                 pass
             
                 
         for poll_item in poll_items:
             if(save_in_db): 
                 poll_item.save()
         
         poll.poll_items = poll_items
         if(save_in_db):
             poll.save()#again with updates pollItems
     except Exception as ex:
         print ex
         poll.delete()
         poll = None
         for poll_item in poll_items:
             if(save_in_db):
                 poll_item.delete()
         
     return poll
Exemplo n.º 9
0
from pymongo import MongoClient
from models.song import Song
from mongoengine import connect

connect('test')

client = MongoClient()
db = client.test

print('hello')
for n_song in db.target.find():
    mbid = n_song.get('mbid', None)
    if not mbid:
        continue
    song = Song.objects(mbid=mbid)
    if not song:
        song = Song(
                mbid=mbid,
                title=n_song['title'],
                artist=n_song['artist']
                )

    song.add_lyric(n_song.get('lyric', None), 'target')
    song.save()
Exemplo n.º 10
0
 def get(self, _id):
     """Get a song by id.
     """
     song = Song.objects(id=_id)[0]
     return song
Exemplo n.º 11
0
from pymongo import MongoClient
from models.song import Song
from mongoengine import connect

connect('test')

client = MongoClient()
db = client.test

print('hello')
for n_song in db.target.find():
    mbid = n_song.get('mbid', None)
    if not mbid:
        continue
    song = Song.objects(mbid=mbid)
    if not song:
        song = Song(mbid=mbid, title=n_song['title'], artist=n_song['artist'])

    song.add_lyric(n_song.get('lyric', None), 'target')
    song.save()
Exemplo n.º 12
0
def test2():
    song = Song.objects().get()
    data = SON()
    data["song"] = song.to_son()
    print json_util.dumps(data)
Exemplo n.º 13
0
    def _run(self):
        print "loading audio stream :: ", self.stream_id
        while(True):
            song_url_path = None
            current_poll = Poll.get_current_poll(self.stream_id)
            if(current_poll):
                if(not IS_TEST_BUILD):
                    song = current_poll.get_highest_poll_song(self.stream_id)
                else:
                    song = Song.objects(track_n=158).get()
                    
                if(song):
                    song_url_path = song.path

                    
            retry_poll_creation = 3
            while(retry_poll_creation>0):
                poll = Poll.create_next_poll(self.stream_id , not IS_TEST_BUILD)
                if(poll!=None):
                    break
                retry_poll_creation-=1
                
            if(poll==None):
                continue
            
            if(not song_url_path):
                song_url_path = "http://storage.googleapis.com/telugubeats_files/music/Telugu/devisri%20prasad/arya/amalapuram.mp3"
                
            if(song_url_path.startswith("/Users/abhinav/Desktop/Telugu//")):                    
                song_url_path="http://storage.googleapis.com/telugubeats_files/music/Telugu/"+urllib.quote(song_url_path[31:])
                
            print "playing::", song_url_path
            self.fd = RemoteUrlFileObject(song_url_path)
            
            #spawn greenlet, keep reading into buffer
            #block calls to seek and read if buffer is not sufficient enough
            
            
            reset_data = InitData()
            
            reset_data.poll = poll
            reset_data.n_user = 1000+len( stream_events_handler.event_listeners[self.stream_id])
            reset_data.current_song  = song
            song.last_played = datetime.utcnow()
            if(not IS_TEST_BUILD):
                song.save()
            event_data = json_util.dumps(reset_data.to_son())
            
            stream_events_handler.publish_event(self.stream_id, Event.RESET_POLLS_AND_SONG, event_data, from_user = None)

            # if there is valid ID3 data, read it out of the file first,
            # so we can skip sending it to the client
            try:
                self.id3 = id3reader.Reader(self.fd)
                if isinstance(self.id3.header.size, int): # read out the id3 data
                    self.fd.seek(self.id3.header.size)
                
                while(True):
                    try:
                        cur_time = time.time()
                        if(cur_time- self.last_time_stamp > self.sleep_time):
                            self.last_time_stamp = cur_time
                            self.buffer.queue_chunk(self.fd.read(self.buffer.chunk_byte_size))
                            gevent.sleep(self.sleep_time- time.time()+self.last_time_stamp)
                    except EOFError:
                        self.fd.close()
                        break        
            except Exception as e:
                    print e