Exemple #1
0
 def test_delete(self):
     self.login_as_admin()
     channel = add_channel('name1', 'uuid1')
     channel_key = channel.key
     assert len(get_channel(key=channel_key)) == 1
     self.app.delete('/api/channel/%s/' % (channel_key))
     assert len(get_channel(key=channel_key)) == 0
Exemple #2
0
 def test_delete(self):
     self.login_as_admin()
     channel = add_channel("name1", "uuid1")
     channel_key = channel.key
     assert len(get_channel(key=channel_key)) == 1
     self.app.delete("/api/channel/%s/" % (channel_key))
     assert len(get_channel(key=channel_key)) == 0
Exemple #3
0
 def test_delete_channel(self):
     name = 'channel_name'
     uuid = 'douban-cid'
     add_channel(name, uuid)
     assert len(get_channel()) == 1
     channel = get_channel()[0]
     delete_channel(channel)
     assert len(get_channel()) == 0
Exemple #4
0
 def test_add_channel(self):
     name = 'channel_name'
     uuid = 'douban-cid'
     add_channel(name, uuid)
     assert len(get_channel()) == 1
     channel = get_channel()[0]
     assert channel.name == 'channel_name'
     assert channel.uuid == 'douban-cid'
Exemple #5
0
 def test_update_channel(self):
     name = 'channel_name'
     uuid = 'douban-cid'
     channel = add_channel(name, uuid)
     assert len(get_channel()) == 1
     update_channel(channel, music_list=['1' * 24, '2' * 24])
     assert len(get_channel()) == 1
     channel = get_channel()[0]
     assert channel.music_list == ['1' * 24, '2' * 24]
Exemple #6
0
 def test_update_music_by_channel(self):
     assert login(), 'check the DOUBAN_USER_NAME, DOUBAN_USER_PASSWORD in config.py'
     assert len(update_channel_list()) > 0
     assert len(get_music()) == 0
     channel = get_channel()[0]
     music_list = update_music_by_channel(channel, 1)
     assert len(music_list) == 1
     assert len(get_music()) == 1
     channel = get_channel()[0]
     assert len(channel.music_list) == 1
Exemple #7
0
def channels(uuid=None):
    '''get one/all channels in db'''
    if not uuid:
        print 'uuid\t\tname\t\tmusic_num\t\tplayable'
        for channel in get_channel():
            print '%s\t\t%s\t\t%s\t\t%s' % (
                channel.uuid.encode('utf8'), channel.name.encode('utf8'), len(channel.music_list), channel.playable)
    else:
        channel = get_channel(uuid=uuid)[0]
        print 'uuid\t\tname'
        print '%s\t\t%s\t\t%s\t\t%s' % (
            channel.uuid.encode('utf8'), channel.name.encode('utf8'), len(channel.music_list), channel.playable)
Exemple #8
0
def channels(uuid=None):
    '''get one/all channels in db'''
    if not uuid:
        print 'uuid\t\tname\t\tmusic_num\t\tplayable'
        for channel in get_channel():
            print '%s\t\t%s\t\t%s\t\t%s' % (
                channel.uuid.encode('utf8'), channel.name.encode('utf8'),
                len(channel.music_list), channel.playable)
    else:
        channel = get_channel(uuid=uuid)[0]
        print 'uuid\t\tname'
        print '%s\t\t%s\t\t%s\t\t%s' % (
            channel.uuid.encode('utf8'), channel.name.encode('utf8'),
            len(channel.music_list), channel.playable)
Exemple #9
0
    def test_get_music_by_channel(self):
        name = 'channel_name'
        uuid = 'douban-cid'
        channel = add_channel(name, uuid)
        assert len(get_music_by_channel(channel, 20)) == 0

        title = 'music_title'
        artist = 'music_artist'
        album = 'music_album'
        company = 'music_company'
        public_time = '2013'
        kbps = '64'
        uuid = 'douban-uuid'
        new_music_list = []
        for i in range(20):
            self.cover.seek(0)
            self.audio.seek(0)
            music = add_music(title, artist, album, company, public_time, kbps,
                              self.cover, self.audio, uuid + str(i))
            new_music_list.append(music.key)
        update_channel(channel, music_list=new_music_list)
        channel = get_channel(key=channel.key)[0]
        assert len(get_music_by_channel(channel, 30)) == 20
        assert len(get_music_by_channel(channel, 20)) == 20
        assert len(get_music_by_channel(channel, 10)) == 10
Exemple #10
0
    def test_get_music_by_channel(self):
        name = 'channel_name'
        uuid = 'douban-cid'
        channel = add_channel(name, uuid)
        assert len(get_music_by_channel(channel, 20)) == 0

        title = 'music_title'
        artist = 'music_artist'
        album = 'music_album'
        company = 'music_company'
        public_time = '2013'
        kbps = '64'
        uuid = 'douban-uuid'
        new_music_list = []
        for i in range(20):
            self.cover.seek(0)
            self.audio.seek(0)
            music = add_music(title, artist, album, company, public_time,
                              kbps, self.cover, self.audio, uuid + str(i))
            new_music_list.append(music.key)
        update_channel(channel, music_list=new_music_list)
        channel = get_channel(key=channel.key)[0]
        assert len(get_music_by_channel(channel, 30)) == 20
        assert len(get_music_by_channel(channel, 20)) == 20
        assert len(get_music_by_channel(channel, 10)) == 10
Exemple #11
0
def douban_spider_task():
    print 'tasks.spider_task.douban_spider_task: start %s' % (datetime.datetime.now())
    login()
    print 'tasks.spider_task.douban_spider_task: login success %s' % (datetime.datetime.now())
    channels = update_channel_list()
    print 'tasks.spider_task.douban_spider_task: updated_channel %s' % (channels)
    for channel in get_channel():
        music_list = update_music_by_channel(channel, channel.update_num)
        print (u'tasks.spider_task.douban_spider_task: channel %s, updated_num %d' % (channel, len(music_list))).encode('utf8')
    print 'tasks.spider_task.douban_spider_task: end %s' % (datetime.datetime.now())
Exemple #12
0
def update_channel_num(uuid, num):
    '''update channel by uuid and num'''
    num = int(num)
    print uuid, num
    channel = get_channel(uuid=uuid)[0]
    assert login(), 'check network or the DOUBAN_USER_NAME, DOUBAN_USER_PASSWORD in config.py'
    music_list = update_music_by_channel(channel, num)
    assert len(music_list) == num
    print 'update %s %s %s for %d music' % (
        channel.uuid.encode('utf8'), channel.name.encode('utf8'), len(channel.music_list), num)
Exemple #13
0
def auto_update():
    '''update until stop manually'''
    assert login(), 'check network or the DOUBAN_USER_NAME, DOUBAN_USER_PASSWORD in config.py'
    channels = get_channel(playable=True)
    while True:
        channel = random.choice(channels)
        print datetime.datetime.now()
        print '%s\t\t%s\t\t%s' % (channel.uuid.encode('utf8'), channel.name.encode('utf8'), len(channel.music_list))
        music_list = update_music_by_channel(channel, 5)
        print '%s\t\t%s\t\t%s' % (channel.uuid.encode('utf8'), channel.name.encode('utf8'), len(channel.music_list))
Exemple #14
0
def update_channel_num(uuid, num):
    '''update channel by uuid and num'''
    num = int(num)
    print uuid, num
    channel = get_channel(uuid=uuid)[0]
    assert login(
    ), 'check network or the DOUBAN_USER_NAME, DOUBAN_USER_PASSWORD in config.py'
    music_list = update_music_by_channel(channel, num)
    assert len(music_list) == num
    print 'update %s %s %s for %d music' % (channel.uuid.encode('utf8'),
                                            channel.name.encode('utf8'),
                                            len(channel.music_list), num)
Exemple #15
0
def update_channel_list():
    r = requests.get("http://www.douban.com/j/app/radio/channels")
    r = json.loads(r.text)
    channel_list = []
    assert 'channels' in r
    for channel in r['channels']:
        cid = int(channel['channel_id'])
        uuid = DOUBAN_CHANNEL_UUID_FORMAT % (cid)
        if cid != 0 and len(get_channel(uuid=uuid)) == 0:
            # not private list and not in db
            new_channel = add_channel(channel['name'], uuid)
            channel_list.append(new_channel)
    return channel_list
Exemple #16
0
def auto_update():
    '''update until stop manually'''
    assert login(
    ), 'check network or the DOUBAN_USER_NAME, DOUBAN_USER_PASSWORD in config.py'
    channels = get_channel(playable=True)
    while True:
        channel = random.choice(channels)
        print datetime.datetime.now()
        print '%s\t\t%s\t\t%s' % (channel.uuid.encode('utf8'),
                                  channel.name.encode('utf8'),
                                  len(channel.music_list))
        music_list = update_music_by_channel(channel, 5)
        print '%s\t\t%s\t\t%s' % (channel.uuid.encode('utf8'),
                                  channel.name.encode('utf8'),
                                  len(channel.music_list))
Exemple #17
0
def douban_spider_task():
    print 'tasks.spider_task.douban_spider_task: start %s' % (
        datetime.datetime.now())
    login()
    print 'tasks.spider_task.douban_spider_task: login success %s' % (
        datetime.datetime.now())
    channels = update_channel_list()
    print 'tasks.spider_task.douban_spider_task: updated_channel %s' % (
        channels)
    for channel in get_channel():
        music_list = update_music_by_channel(channel, channel.update_num)
        print(
            u'tasks.spider_task.douban_spider_task: channel %s, updated_num %d'
            % (channel, len(music_list))).encode('utf8')
    print 'tasks.spider_task.douban_spider_task: end %s' % (
        datetime.datetime.now())
Exemple #18
0
def setup():
    '''setup db & update channel & get demo music'''
    print 'setuping...'
    print 'setting admin'
    try:
        assert add_user(ADMIN_NAME, ADMIN_PASSWORD, 'admin'), 'admin already exist!!!this will pass'
    except:
        pass
    print 'login douban...'
    assert login(), 'check network or the DOUBAN_USER_NAME, DOUBAN_USER_PASSWORD in config.py'
    print 'update channel list'
    update_channel_list()
    print 'update demo music'
    channel = get_channel()[0]
    music_list = update_music_by_channel(channel, 1)
    assert len(music_list) == 1
    print 'add demo channel to playlist'
    update_channel(channel, playable=True)
Exemple #19
0
def setup():
    '''setup db & update channel & get demo music'''
    print 'setuping...'
    print 'setting admin'
    try:
        assert add_user(ADMIN_NAME, ADMIN_PASSWORD,
                        'admin'), 'admin already exist!!!this will pass'
    except:
        pass
    print 'login douban...'
    assert login(
    ), 'check network or the DOUBAN_USER_NAME, DOUBAN_USER_PASSWORD in config.py'
    print 'update channel list'
    update_channel_list()
    print 'update demo music'
    channel = get_channel()[0]
    music_list = update_music_by_channel(channel, 1)
    assert len(music_list) == 1
    print 'add demo channel to playlist'
    update_channel(channel, playable=True)
Exemple #20
0
def disable_channel(uuid):
    '''set channel not playable'''
    channel = get_channel(uuid=uuid)[0]
    update_channel(channel, playable=False)
Exemple #21
0
 def delete(self, key):
     channel = get_channel(key=key)[0]
     delete_channel(channel)
Exemple #22
0
 def patch(self, key):
     args = ChannelPatchArgs().args
     channel = get_channel(key=key)[0]
     update_channel(channel, **args)
     channel = get_channel(key=key)[0]
     return channel
Exemple #23
0
 def get(self):
     args = ChannelQueryArgs().args
     if args == {}:
         return marshal(get_channel_status(), channel_status_fields)
     ret_channels = get_channel(**args)
     return marshal(ret_channels, channel_fields)
Exemple #24
0
 def delete(self, key):
     channel = get_channel(key=key)[0]
     delete_channel(channel)
Exemple #25
0
def PlaylistKey(key):
    try:
        assert get_channel(key=key)[0]
    except:
        raise ValueError("Invalid Playlist Key")
    return key
Exemple #26
0
def enable_channel(uuid):
    '''set channel playable'''
    channel = get_channel(uuid=uuid)[0]
    update_channel(channel, playable=True)
Exemple #27
0
def enable_channel(uuid):
    '''set channel playable'''
    channel = get_channel(uuid=uuid)[0]
    update_channel(channel, playable=True)
Exemple #28
0
 def get(self, key):
     args = PlaylistQueryArgs().args
     num = args['num']
     channel = get_channel(key=key)[0]
     return marshal(get_music_by_channel(channel, num), music_fields)
Exemple #29
0
def PlaylistKey(key):
    try:
        assert get_channel(key=key)[0]
    except:
        raise ValueError("Invalid Playlist Key")
    return key
Exemple #30
0
 def get(self):
     ret_channels = get_channel(playable=True)
     return marshal(ret_channels, playlist_fields)
Exemple #31
0
 def get(self):
     args = ChannelQueryArgs().args
     if args == {}:
         return marshal(get_channel_status(), channel_status_fields)
     ret_channels = get_channel(**args)
     return marshal(ret_channels, channel_fields)
Exemple #32
0
def disable_channel(uuid):
    '''set channel not playable'''
    channel = get_channel(uuid=uuid)[0]
    update_channel(channel, playable=False)
Exemple #33
0
 def patch(self, key):
     args = ChannelPatchArgs().args
     channel = get_channel(key=key)[0]
     update_channel(channel, **args)
     channel = get_channel(key=key)[0]
     return channel