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
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
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
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'
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]
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
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)
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
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())
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)
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))
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)
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
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))
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())
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)
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)
def disable_channel(uuid): '''set channel not playable''' channel = get_channel(uuid=uuid)[0] update_channel(channel, playable=False)
def delete(self, key): channel = get_channel(key=key)[0] delete_channel(channel)
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
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)
def PlaylistKey(key): try: assert get_channel(key=key)[0] except: raise ValueError("Invalid Playlist Key") return key
def enable_channel(uuid): '''set channel playable''' channel = get_channel(uuid=uuid)[0] update_channel(channel, playable=True)
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)
def get(self): ret_channels = get_channel(playable=True) return marshal(ret_channels, playlist_fields)