def __init__(self, name='appNewSong'): self.name = name self.fu = fileUtils(self.name) self.ktvid = None self.dogname = '' self.tempDir = os.path.join(TMPDIR, self.name) self.downDir = os.path.join(DOWNLOADDIR, self.name) if not os.path.exists(self.downDir): os.makedirs(self.downDir) self._common_init(self.name) self.setting = get_all_config() self.lasttime = 0 if 'NewSong_Update' in self.setting.keys(): cfg = self.setting.get('NewSong_Update') if cfg: self.lasttime = try_to_int(cfg.get('config_value'), 0) self.cm_type = 2 if 'CloudMusic_type' in self.setting.keys(): cfg = self.setting.get('CloudMusic_type') self.cm_type = try_to_int(cfg.get('config_value'), 2) #self.dbhelper=Thunder().Ins().Karaokdbhelper self.remain = 0
def do_get_new_song(self): try: cfg = get_config('cloudmusic_update') if cfg: self.lasttime = try_to_int(cfg.get('config_value'), 0) self._lastmsg = '获取新歌信息' nos_list = self.getNewSongList(self.lasttime) logger.debug("new songs, list: %s" % nos_list) if not nos_list: self._lastmsg = '没有获取到新歌信息' if self.lastime <= int(time.time()) - 20 * 3600 * 24: self.bll.ResetSort() return else: nlist = nos_list.split("\r\n") logger.debug("new song list is : %s" % nlist) nos = [] for no in nlist: nos.append(try_to_int(no, 0)) if nlist and len(nlist) > 0: total = medias_set_newsong(nos) logging.debug(u'import newsong, total %s songs' % total) except Exception as e: logger.error("Failed: ktvmoduleservice.updatenewsong()", e) logger.error(traceback.format_exc())
def post(self, op): if not self.check_login(): return if op == 'update': ret = {} ret['code'] = 1 ret['data'] = None ret['msg'] = '' imageid = try_to_int(self.get_argument('singleID', '')) sectionid = self.get_argument('picmenu', '') picorder = try_to_int(self.get_argument('picorder', '')) picdesc = self.get_argument('picdesc', '0') picurl = self.get_argument('filepath', '') if imageid <= 0: ret['msg'] = '图片信息ID不能为空!' if sectionid == '': ret['msg'] = '模块区域代码不能为空!' if picorder == '': ret['msg'] = '显示顺序不能为空且应为数字!' if picdesc == '': ret['msg'] = '图片说明不能为空!' if picurl == '': ret['msg'] = '图片链接不能为空,请确认文件上传成功!' res = update_image(imageid, sectionid, picorder, picdesc, picurl) if res: ret['code'] = 0 ret['msg'] = '图片信息修改成功!' else: ret['msg'] = '添加图片信息失败!' self.send_json(ret) elif op == 'add': ret = {} ret['code'] = 1 ret['data'] = None ret['msg'] = '' sectionid = self.get_argument('picmenu', '') picorder = self.get_argument('picorder', '') picdesc = self.get_argument('picdesc', '0') picurl = self.get_argument('filepath', '') if sectionid == '': ret['msg'] = '模块区域代码不能为空!' if picorder == '': ret['msg'] = '显示顺序不能为空且应为数字!' if picdesc == '': ret['msg'] = '图片说明不能为空!' if picurl == '': ret['msg'] = '图片链接不能为空,请确认文件上传成功!' res = add_new_image(sectionid, picorder, picdesc, picurl) if res: ret['code'] = 0 ret['msg'] = '图片信息添加成功!' else: ret['msg'] = '保存信息失败!' self.send_json(ret) else: raise tornado.web.HTTPError(405)
def get(self, op): if not self.check_login(): return if op == None: #get arguments sectionid = try_to_int(self.get_argument('sectionid', '0')) if sectionid <= 0: raise tornado.web.HTTPError(500) #get date from controller: res = get_image_by_sectionid(sectionid) if isinstance(res, list): images = res else: images = [] self.render('image.html', images=images, short_desc=self.short_desc) if op == 'list': result = {} result['code'] = 1 result['msg'] = '' result['data'] = None #get date from controller: res = get_all_image() if isinstance(res, dict): result['data'] = res self.send_json(result) #self.render('image.html', total=total, page=page, psize=psize, images=images, short_desc=self.short_desc) elif op == 'get': ret = {} ret['code'] = 1 ret['data'] = None sid = try_to_int(self.get_argument('id', '0')) if sid > 0: sect = get_image_by_id(sid) if isinstance(sect, dict): ret['code'] = 0 ret['data'] = sect self.send_json(ret) elif op == 'update': raise tornado.web.HTTPError(405) elif op == 'add': raise tornado.web.HTTPError(405) elif op == 'del': ret = {} ret['code'] = 1 ret['data'] = None sid = try_to_int(self.get_argument('id', '0')) if sid > 0: res = delete_image_by_id(sid) if res: ret['code'] = 0 ret['msg'] = '删除image信息成功!' else: ret['msg'] = '删除模块区域信息失败!' self.send_json(ret) else: raise tornado.web.HTTPError(405)
def post(self, op): if op == 'add': ret = {} ret['code'] = 1 ret['data'] = None ret['msg'] = '' try: AddMedia_Name = self.get_argument('AddMedia_Name', '') AddMedia_Path = self.get_argument('AddMedia_Path', '') AddMedia_Type = self.get_argument('AddMedia_Type', '') AddMedia_Size = self.get_argument('AddMedia_Size', '') AddMedia_SerialNo = self.get_argument('AddMedia_SerialNo', '') out = commands.getoutput('df | grep /video/disk') out = out.split('\n') for i, j in enumerate(out): out[i] = out[i].split(' ') out[i] = [k for k in out[i] if k != ''] path = [] for i, j in enumerate(out): path.append(j[4]) for i, j in enumerate(path): path[i] = int(re.sub('\D', '', j)) rate = path.index(min(path)) upload_path = out[rate][5] AddMedia_Path_New = os.path.join(upload_path, AddMedia_Path) command = 'mv {} {}'.format(AddMedia_Path, AddMedia_Path_New) commands.getoutput(command) add_new_mediafile(AddMedia_SerialNo, AddMedia_Path_New) upload_media(AddMedia_SerialNo, AddMedia_Path_New, AddMedia_Name) ret['code'] = 0 ret['msg'] = u'添加成功!' except: ret['error'] = traceback.format_exc() ret['msg'] = u'添加失败!' self.send_json(ret) elif op == 'del': ret = {} try: ret['code'] = 1 ret['data'] = None sid = try_to_int(self.get_argument('AddMedia_ID', '0')) sno = try_to_int(self.get_argument('AddMedia_SerialNo', '0')) if sid > 0 or sno > 0: res = delete_addmedia_by_id(sid, sno) if res: ret['code'] = 0 ret['msg'] = u'删除成功!' else: ret['msg'] = u'删除失败!' except: print traceback.format_exc() self.send_json(ret)
def get(self, op): if not self.check_login(): return if op == None: #get arguments page = try_to_int(self.get_argument('page', '0')) psize = try_to_int(self.get_argument('psize', '15')) #use default value if it's not valid if page < 1: page = 1 if psize < 5 or psize > 51: psize = 15 #get date from controller: res = get_song_search_bypage(page, psize) total = 0 searches = [] if isinstance(res, dict): total = res['total'] searches = res['matches'] pageinfo = self.page_info('/search/artist', total, psize, page) self.render('searchartist.html', pageinfo=pageinfo, searches=searches, short_desc=self.short_desc) if op == 'list': result = {} result['code'] = 1 result['msg'] = '' result['data'] = None #get date from controller: res = get_all_artist_search() if isinstance(res, list): result['data'] = {} result['data']['matches'] = res result['data']['total'] = len(res) self.send_json(result) elif op == 'get': raise tornado.web.HTTPError(405) elif op == 'update': raise tornado.web.HTTPError(405) elif op == 'add': raise tornado.web.HTTPError(405) elif op == 'del': raise tornado.web.HTTPError(405) else: raise tornado.web.HTTPError(405)
def post(self, op): if op == 'add': _res = dict(code=0, msg='添加成功', result=None) skin_name = self.get_argument('skin_name', '') if skin_name: ret = add_skin(dict(skin_name=skin_name, skin_desc=skin_name)) if not ret: _res['code'] = 1 _res['msg'] = '添加失败' else: _res['code'] = 1 _res['msg'] = '无效的皮肤名称' self.send_json(_res) return elif op == 'del': _res = dict(code=0, msg='删除成功', result=None) skin_id = try_to_int(self.get_argument('skin_id', '0')) if skin_id > 0: ret = delete_skin(skin_id) if not ret: _res['code'] = 1 _res['msg'] = '删除失败' else: _res['code'] = 1 _res['msg'] = '无效的参数' self.send_json(_res) return else: raise tornado.web.HTTPError(405)
def get(self,op): if op == 'list': result = {} result['code'] = 1 result['msg'] = '' result['data'] = None page = try_to_int(self.get_argument('page', '0')) psize = try_to_int(self.get_argument('psize', '15')) res = get_all_mediafile(page, psize) if isinstance(res, dict): result['data'] = res self.send_json(result) elif op == 'count': result = {} result['code'] = 1 result['msg'] = '' result['data'] = None res = get_by_count() result['data']=res self.send_json(result) elif op == 'exists': _res = {} _res['code'] = 1 _res['msg'] = 'ok' _res['result'] = None mno = self.get_argument('no', '') if not mno: _res['code'] = 0 _res['msg'] = '无效的歌曲编号!' self.send_json(_res) return fpath = get_file_by_no(mno) if fpath: _res['msg'] = '成功取得文件路径!' _res['result'] = fpath else: _res['code'] = 0 _res['msg'] = '没有找到文件路径!' self.send_json(_res) return else: pass
def post(self, op): if op == 'update': ret = {} ret['code'] = 1 ret['data'] = None ret['msg'] = '' Language_ID = try_to_int(self.get_argument('Language_ID', '')) Language_Name = self.get_argument('Language_Name', '') Language_Description = self.get_argument('Language_Description', '') if Language_ID <= 0: ret['msg'] = u'语种ID错误!' self.send_json(ret) return if Language_Name == '': ret['msg'] = u'语种名称不能为空!' self.send_json(ret) return res = update_languages(Language_ID, Language_Name, Language_Description) if res > 0: ret['code'] = 0 ret['msg'] = u'语种信息修改成功!' ret['data'] = res else: ret['msg'] = u'语种信息修改失败!' self.send_json(ret) elif op == 'add': ret = {} ret['code'] = 1 ret['data'] = None ret['msg'] = '' Language_ID = self.get_argument('Language_ID', '') Language_Name = self.get_argument('Language_Name', '') Language_Description = self.get_argument('Language_Description', '') if Language_Name == '': ret['msg'] = u'语种名称不能为空!' self.send_json(ret) return res = add_new_language(Language_ID, Language_Name, Language_Description) if res > 0: ret['code'] = 0 ret['msg'] = u'榜单歌曲信息添加成功!' else: ret['msg'] = u'榜单歌曲信息保存失败!' self.send_json(ret)
def post(self, op): if op == 'uploads': result = {} upload_path='' fileN= self.get_argument('fileName', '') no = fileN[0:fileN.find(".")] if noAndPathMap.has_key(no): upload_path = noAndPathMap[no] start= try_to_int(self.get_argument('start', '0')) end= try_to_int(self.get_argument('end', '0')) filepath=os.path.join(upload_path,fileN) size = 0 if os.path.exists(filepath): # size=os.path.getsize(filepath) if start==0: os.remove(filepath) if size < end: file_metas=self.request.files['file'] meta=file_metas[0] with open(filepath,'ab') as up: up.write(meta['body']) up.close() result['result']='success' result['data']=size result['path']=filepath self.send_json(result) elif op == 'add': ret = {} ret['code'] = 1 ret['data'] = None ret['msg'] = '' MediaFile_MediaManage_ID = try_to_int(self.get_argument('MediaFile_MediaManage_ID', '')) MediaFile_Name = try_to_int(self.get_argument('MediaFile_Name', '')) res = add_new_mediafile(MediaFile_MediaManage_ID, MediaFile_Name) ret['data'] = res self.send_json(ret)
def post(self, op): if not self.check_login(): return if op == 'update': ret = {} ret['code'] = 1 ret['data'] = None ret['msg'] = '' #verid=1&moudlecode=HOME_01&moudledesc=%E4%B8%BB%E9%A1%B5%E8%83%8C%E6%99%AF&imgwidth=1920&imgheight=1081 se_id = try_to_int(self.get_argument('sectionid', '0')) sectioncode = self.get_argument('sectioncode', '') sectiondesc = self.get_argument('sectiondesc', '') imgwidth = self.get_argument('imgwidth', '0') imgheight = self.get_argument('imgheight', '0') if se_id <= 0: ret['msg'] = '无效的ID值' self.send_json(ret) elif sectioncode == '' or sectiondesc == '': ret['msg'] = '模块区域代码或者模块区域描述不能为空!' self.send_json(ret) else: res = update_section(se_id, sectioncode, sectiondesc, imgwidth, imgheight) if res: ret['code'] = 0 ret['msg'] = '模块区域保存成功!' else: ret['msg'] = '保存信息失败!' self.send_json(ret) elif op == 'add': ret = {} ret['code'] = 1 ret['data'] = None ret['msg'] = '' #verid=1&moudlecode=HOME_01&moudledesc=%E4%B8%BB%E9%A1%B5%E8%83%8C%E6%99%AF&imgwidth=1920&imgheight=1081 #se_id = try_to_int(self.get_argument('sectionid', '0')) sectioncode = self.get_argument('sectioncode', '') sectiondesc = self.get_argument('sectiondesc', '') imgwidth = self.get_argument('imgwidth', '0') imgheight = self.get_argument('imgheight', '0') if sectioncode == '' or sectiondesc == '': ret['msg'] = '模块区域代码或者模块区域描述不能为空!' elif imgwidth <= 0 or imgheight <= 0: ret['msg'] = '模块区域高度和宽度不能小于0!' else: res = add_new_section(sectioncode, sectiondesc, imgwidth, imgheight) if res: ret['code'] = 0 ret['msg'] = '模块区域保存成功!' else: ret['msg'] = '保存信息失败!' self.send_json(ret) else: raise tornado.web.HTTPError(405)
def get(self, op): if op == 'list': result = {} result['code'] = 1 result['msg'] = '' result['data'] = None #get arguments page = try_to_int(self.get_argument('page', '0')) psize = try_to_int(self.get_argument('psize', '15')) text = self.get_argument('text', '') #get date from controller: res = get_all_actors(page, psize, text) if isinstance(res, dict): result['data'] = res self.send_json(result) elif op == 'count': result = {} result['code'] = 1 result['msg'] = '' result['data'] = None text = self.get_argument('text', '') res = get_by_count(text) result['data'] = res self.send_json(result)
def get(self, op): print 'my op is %s' % (op) if op == 'list': result = {} result['code'] = 1 result['msg'] = '' result['data'] = None #get arguments page = try_to_int(self.get_argument('page', '0')) psize = try_to_int(self.get_argument('psize', '15')) #get date from controller: res = get_all_mediamanage(page, psize) if isinstance(res, dict): result['data'] = res self.send_json(result) if op == 'count': result = {} result['code'] = 1 result['msg'] = '' result['data'] = None res = get_by_count() result['data'] = res self.send_json(result)
def post(self, op): if op == 'update': ret = {} ret['code'] = 1 ret['data'] = None ret['msg'] = '' MediaType_ID = try_to_int(self.get_argument('MediaType_ID', '')) MediaType_Name = self.get_argument('MediaType_Name', '') MediaType_Description = self.get_argument('MediaType_Description', '') MediaType_IsMovie = self.get_argument('MediaType_IsMovie', '') MediaType_IsKaraok = self.get_argument('MediaType_IsKaraok', '') MediaType_IsAds = self.get_argument('MediaType_IsAds', '') MediaType_NewTypeID = self.get_argument('MediaType_NewTypeID', '') if MediaType_ID <= 0: ret['msg'] = u'歌曲类型ID错误!' self.send_json(ret) return if MediaType_Name == '': ret['msg'] = u'歌曲类型名称不能为空!' self.send_json(ret) return res = update_mediatype(MediaType_ID, MediaType_Name, MediaType_Description, MediaType_IsMovie, MediaType_IsKaraok, MediaType_IsAds, MediaType_NewTypeID) if res: ret['code'] = 0 ret['msg'] = u'语种信息修改成功!' else: ret['msg'] = u'语种信息修改失败!' self.send_json(ret) elif op == 'add': ret = {} ret['code'] = 1 ret['data'] = None ret['msg'] = '' jsonData = json.loads(self.request.body) add_mediatype(**jsonData)
def post(self, op): if not self.check_login(): self.redirect('/login') return #if op == 'update': _res = {} _res['code'] = 1 _res['msg'] = u"密码修改失败失败!" oldpwd = self.get_argument('oldpwd', '') newpwd = self.get_argument('newpwd', '') renewpwd = self.get_argument('renewpwd', '') if oldpwd == '': _res['msg'] = "旧密码不能为空!" self.send_json(_res) return if newpwd == '': _res['msg'] = "新密码不能为空!" self.send_json(_res) return if not renewpwd == newpwd: _res['msg'] = "两次输入的新密码不一致!"; self.send_json(_res) return if not is_safe_pwd(newpwd, 6, 16): _res['msg'] = "密码设置的太过简单(密码必须包含数字、字母,长度6-16位)!"; self.send_json(_res) return userid = try_to_int(self.user['UserNo']) if userid <= 0: #if user info invalid, logout directly self.redirect('/logout') return res = UpDataAdminPsw(userid, oldpwd, newpwd); if res: _res['code'] = 0 _res['msg'] = "密码修改成功!"; else: _res['msg'] = "密码修改失败!"; self.send_json(_res)
def get(self, op): if op == 'musicinfo': _res = {} _res['code'] = 1 _res['msg'] = "错误!" _res['data'] = None #get arguments musicno = try_to_int(self.get_argument('no', '0')) lista = get_musicinfos(musicno) if lista: for item in lista: if item['songid'] == musicno: _res['code'] = 0 _res['msg'] = "数据加载完成!" _res['data'] = item break else: _res['msg'] = "获取数据失败,请稍后重试!" self.send_json(_res) else: raise tornado.web.HTTPError(405)
def post(self, op): if not self.check_login(): return if op == 'update': ret = {} ret['code'] = 1 ret['data'] = None ret['msg'] = '' pageid = try_to_int(self.get_argument('pageid', '0')) pagename = self.get_argument('pagename', '') pagedesc = self.get_argument('pagedesc', '') channelid = try_to_int(self.get_argument('channelid', '')) bgimage = self.get_argument('filepath', '') pubdate = self.get_argument('pubdate', '') pubstate = try_to_int(self.get_argument('pubstate', '')) if pageid <= 0: ret['msg'] = '无效的ID值' self.send_json(ret) return if channelid <= 0: ret['msg'] = '渠道信息无效!' self.send_json(ret) return if pagename == '': ret['msg'] = '页面名称不能为空!' self.send_json(ret) return else: res = update_mainpage(pageid, pagename, pagedesc, channelid, bgimage, pubdate, pubstate) if res: ret['code'] = 0 ret['msg'] = '保存信息成功!' else: ret['msg'] = '保存信息失败!' self.send_json(ret) elif op == 'add': ret = {} ret['code'] = 1 ret['data'] = None ret['msg'] = '' pagename = self.get_argument('pagename', '') pagedesc = self.get_argument('pagedesc', '') channelid = try_to_int(self.get_argument('channelid', '')) bgimage = self.get_argument('bgimage', '') pubdate = self.get_argument('pubdate', '') pubstate = try_to_int(self.get_argument('pubstate', '')) if channelid <= 0: ret['msg'] = '渠道信息无效!' self.send_json(ret) return if pagename == '': ret['msg'] = '页面名称不能为空!' self.send_json(ret) return res = add_new_mainpage(pagename, pagedesc, channelid, bgimage, pubdate, pubstate) if res: ret['code'] = 0 ret['msg'] = '信息添加成功!' else: ret['msg'] = '信息保存失败!' self.send_json(ret) else: raise tornado.web.HTTPError(405)
def get(self, op): if not self.check_login(): return if op == None: #get arguments page = try_to_int(self.get_argument('page', '0')) psize = try_to_int(self.get_argument('psize', '15')) #use default value if it's not valid if page < 1: page = 1 if psize < 5 or psize > 51: psize = 15 #get date from controller: res = get_all_mainpage_bypage(page, psize) total = 0 pages = [] if isinstance(res, dict): total = res['total'] pages = res['matches'] pageinfo = self.page_info('/mainpage', total, psize, page) self.render('mainpage.html', pageinfo=pageinfo, pages=pages, short_desc=self.short_desc) elif op == 'list': result = {} result['code'] = 1 result['msg'] = '' result['data'] = None #get date from controller: res = get_all_mainpage() if isinstance(res, dict): result['code'] = 0 result['data'] = res self.send_json(result) #self.render('page.html', total=total, pages=pages, short_desc=self.short_desc) elif op == 'get': ret = {} ret['code'] = 1 ret['data'] = None sid = try_to_int(self.get_argument('id', '0')) if sid > 0: sect = get_mainpage_by_id(sid) if isinstance(sect, dict): ret['code'] = 0 ret['data'] = sect #print str(ret) self.send_json(ret) elif op == 'update': raise tornado.web.HTTPError(405) elif op == 'add': raise tornado.web.HTTPError(405) elif op == 'del': ret = {} ret['code'] = 1 ret['data'] = None sid = try_to_int(self.get_argument('id', '0')) if sid > 0: res = delete_mainpage_by_id(sid) if res: ret['code'] = 0 ret['msg'] = '删除信息成功!' else: ret['msg'] = '删除信息失败!' self.send_json(ret) else: self.render('page.html')
def get(self, op): _res = dict(code=0, msg='ok', result=None) if op == 'list': ret = get_all_servers() logger.error("serverinfo: %s" % ret) if isinstance(ret, dict): _res['result'] = ret self.send_json(_res) return elif op == 'count': ret = get_all_servers() logger.error("serverinfo: %s" % ret) if isinstance(ret, dict): _res['result'] = ret['total'] self.send_json(_res) return elif op == 'get': server_id = try_to_int(self.get_argument('server_id', '0')) res = get_server(server_id) _res['result'] = res self.send_json(_res) return elif op == 'ls': #获取服务器信息 server_ip = self.get_argument('server_ip', '') print 'x' * 76 #需要去调用获取服务的信息 mjson = {} mjson['server'] = lsService() #result = get_server_info(server_ip) result = None if result == 0: mjson['sbtinfo'] = result else: mjson['sbtinfo'] = {} _res = {} _res['msg'] = "获取成功" _res['code'] = 0 _res['data'] = mjson self.send_json(_res) return elif op == 'filecount': ret = {} ret['code'] = 1 ret['data'] = 0 output = commands.getoutput( 'find /video -iname "*.ts" -o -iname "*.mpg" | wc -l') if output.isdigit(): ret['code'] = 0 ret['data'] = int(output) self.send_json(ret) elif op == 'listdisk': ret = {} ret['code'] = 1 ret['data'] = None res = list_disk_all() if res: ret['code'] = 0 ret['data'] = res self.send_json(ret) elif op == 'listdir': ret = {} ret['code'] = 1 ret['data'] = None fpath = self.get_argument('path', '') if fpath: res = list_dir(fpath) ret['code'] = 0 ret['data'] = res self.send_json(ret) else: raise tornado.web.HTTPError(405)
def get(self, op): if op == 'list': result = {} result['code'] = 1 result['msg'] = '' result['data'] = None #get arguments page = try_to_int(self.get_argument('page', '0')) psize = try_to_int(self.get_argument('psize', '15')) #get date from controller: res = get_all_medias(page, psize) if isinstance(res, dict): result['data'] = res self.send_json(result) elif op == 'count': result = {} result['code'] = 1 result['msg'] = '' text = self.get_argument('text', '') res = get_media_count(text) result['data'] = res result['state'] = parseFileDataToSQLDataState self.send_json(result) elif op == 'bylang': result = dict(code=0, msg='ok', result=None) #get arguments page = try_to_int(self.get_argument('page', '0')) psize = try_to_int(self.get_argument('psize', '15')) lname = self.get_argument('lang', '') result['result'] = get_by_lang(lname, page, psize) self.send_json(result) elif op == 'bytag': result = dict(code=0, msg='ok', result=None) #get arguments page = try_to_int(self.get_argument('page', '0')) psize = try_to_int(self.get_argument('psize', '15')) tag = self.get_argument('type', '') result['result'] = get_by_tag(tag, page, psize) self.send_json(result) elif op == 'export': result = dict(code=0, msg='ok', result=None) textPath = os.path.join(os.path.dirname(__file__), '../static/text') if not os.path.isdir(textPath): os.makedirs(textPath) fpath = os.path.join(textPath, 'export.txt') if os.path.exists(fpath): os.remove(fpath) scope = self.get_argument('scope', 'all') if scope == 'all': ret = export_medias(fpath) else: ret = export_medias(fpath, True) if ret: result['code'] = 0 result['msg'] = '导出成功' result['data'] = 'static/text/export.txt' else: result['code'] = 1 result['msg'] = '导出失败' result['data'] = 'static/text/export.txt' if os.path.exists(fpath): os.remove(fpath) self.send_json(result) return elif op == 'lostfiles': result = {} result['code'] = 1 result['data'] = None res = get_lost_files() if res: result['code'] = 0 result['data'] = res elif op == 'uselessfiles': result = {} result['code'] = 1 result['data'] = None res = get_useless_files() if res: result['code'] = 0 result['data'] = res else: raise tornado.web.HTTPError(405)
def get(self, op): _res = {'code': 1, 'msg': 'ok', 'result': None} if op == 'list': key = self.get_argument('key', '') offset = try_to_int(self.get_argument('offset', '0')) limit = try_to_int(self.get_argument('limit', '10')) result = search_cloudmusic_list(key, offset, limit) #result = get_cloudmusic_list(offset, limit) _res['result'] = result self.send_json(_res) return elif op == 'search': key = self.get_argument('key', '') offset = try_to_int(self.get_argument('offset', '0')) limit = try_to_int(self.get_argument('limit', '10')) result = search_cloudmusic_list(key, offset, limit) _res['result'] = result self.send_json(_res) return elif op == 'info': mnos = [] nos = self.get_argument('nos', '') for n in nos.split(';'): if n.isdigit: mnos.append(n) if not mnos: _res['code'] = 0 _res['msg'] = '没有发现有效的歌曲编号!' self.send_json() return res = get_musicinfo_bylist(mnos) print res if res: _res['result'] = res self.send_json(_res) return elif op == 'rtdl': #Read setting from db at first. rtdl = 0 try: cfg = get_config('CloudMusic_realdown') if isinstance(cfg, dict): rtdl = cfg['config_value'] except: pass if str(rtdl).isdigit(): rtdl = int(rtdl) else: rtdl = 0 if rtdl == 0: _res['code'] = 1 _res['msg'] = '系统设置中未开启实时下载!' _res['result'] = rtdl self.send_json(_res) return None #if enabled rtdl in db, continue to check the login status: ses = get_cloud_session() if not isinstance(ses, dict): _res['code'] = 0 _res['msg'] = '云客户端未登录!' self.send_json(_res) return None if ses['mealtype'] == 0: _res['code'] = 1 _res['msg'] = '云客户端已经登录!' _res['result'] = 1 self.send_json(_res) return None else: _res['code'] = 1 _res['msg'] = '云客户端已经登录!' _res['result'] = 1 self.send_json(_res) return None _res['code'] = 0 _res['msg'] = '出错啦!' self.send_json(_res) return None elif op == 'dlog': offset = try_to_int(self.get_argument('offset', '0')) limit = try_to_int(self.get_argument('limit', '10')) res = get_music_downlog(offset, limit) if isinstance(res, dict): _res['code'] = 1 _res['result'] = res self.send_json(_res) return None else: pass
def get(self, op): server_uri = SERVER_URI_FORMAT.format('127.0.0.1', '6800') server = xmlrpclib.ServerProxy(server_uri, allow_none=True) options = None position = None _res = {'code': 1, 'msg': 'ok', 'result': None} if op == 'list': offset = try_to_int(self.get_argument('offset', '0')) limit = try_to_int(self.get_argument('limit', '10')) jobs = [] ret1 = server.aria2.tellActive() if ret1: for r in ret1: job = {} job['gid'] = r['gid'] job['total'] = r['totalLength'] job['complete'] = r['completedLength'] job['status'] = r['status'] job['url'] = r['files'][0]['uris'][0]['uri'] job['fpath'] = r['files'][0]['path'] total = int(r['totalLength']) done = int(r['completedLength']) if not done == 0 and total > 0: job['percent'] = round( float(done) / float(total) * 99, 2) else: job['percent'] = 0 jobs.append(job) ret2 = server.aria2.tellStopped(0, 50) if ret2: for r in ret2: job = {} job['gid'] = r['gid'] job['total'] = r['totalLength'] job['complete'] = r['completedLength'] job['status'] = r['status'] job['url'] = r['files'][0]['uris'][0]['uri'] job['fpath'] = r['files'][0]['path'] total = int(r['totalLength']) done = int(r['completedLength']) if not done == 0 and total > 0: job['percent'] = round( float(done) / float(total) * 99, 2) else: job['percent'] = 0 jobs.append(job) ret3 = server.aria2.tellWaiting(0, 50) if ret3: for r in ret3: job = {} job['gid'] = r['gid'] job['total'] = r['totalLength'] job['complete'] = r['completedLength'] job['status'] = r['status'] job['url'] = r['files'][0]['uris'][0]['uri'] job['fpath'] = r['files'][0]['path'] total = int(r['totalLength']) done = int(r['completedLength']) if not done == 0 and total > 0: job['percent'] = round( float(done) / float(total) * 99, 2) else: job['percent'] = 0 jobs.append(job) for job in jobs: sno = redis_cli.hget(get_dljobs_map_key(), job['gid']) job['musicno'] = sno if sno and sno.isdigit(): minfo = get_musicinfo_byno(sno) if isinstance(minfo, dict): job['music_name'] = minfo['Music_Caption'] job['music_singers'] = ','.join([minfo['Music_SingerName'],minfo['Music_SingerNameTwo'],\ minfo['Music_SingerNameThree'],minfo['Music_SingerNameFour']]).strip(',') job['music_language'] = minfo['Music_Language'] job['music_type'] = minfo['Music_3d1'] pass else: job['music_name'] = '' job['music_singers'] = '' job['music_language'] = '' job['music_type'] = '' pass pass _res['result'] = { 'data': jobs[offset:(offset + limit)], 'total': len(jobs) } self.send_json(_res) return elif op == 'status': mno = self.get_argument('no', '') rt = try_to_int(self.get_argument('rt', '0')) if mno: gid = aria2_mno2gid(mno) else: gid = self.get_argument('gid', '') if not gid: #看是否有缓存信息,实时下载的请求可返回此信息 if rt == 1: tinfo = get_aria2_complete_task(mno) if isinstance(tinfo, dict): _res['result'] = tinfo self.send_json(_res) return _res['msg'] = '下载任务已经失效,请重新添加下载任务!' self.send_json(_res) return r = server.aria2.tellStatus(gid) if isinstance(r, dict): job = {} job['gid'] = r['gid'] job['total'] = r['totalLength'] job['complete'] = r['completedLength'] job['status'] = r['status'] job['url'] = r['files'][0]['uris'][0]['uri'] job['fpath'] = r['files'][0]['path'] total = int(r['totalLength']) done = int(r['completedLength']) if not done == 0 and total > 0: job['percent'] = round(float(done) / float(total) * 99, 2) else: job['percent'] = 0 else: job = get_aria2_complete_task(mno) if isinstance(job, dict): job['percent'] = 100 if not isinstance(job, dict): _res['msg'] = '无此歌曲下载信息!' self.send_json(_res) return minfo = get_musicinfo_byno(mno) if isinstance(minfo, dict): job['music_name'] = minfo['Music_Caption'] job['music_singers'] = ','.join([minfo['Music_SingerName'],minfo['Music_SingerNameTwo'],\ minfo['Music_SingerNameThree'],minfo['Music_SingerNameFour']]).strip(',') job['music_language'] = minfo['Music_Language'] job['music_type'] = minfo['Music_3d1'] else: job['music_name'] = '' job['music_singers'] = '' job['music_language'] = '' job['music_type'] = '' _res['result'] = job self.send_json(_res) return else: pass
def post(self, op): server_uri = SERVER_URI_FORMAT.format('127.0.0.1', '6800') server = xmlrpclib.ServerProxy(server_uri, allow_none=True) options = None position = None _res = {'code': 1, 'msg': 'ok', 'result': None} if op == 'add': url = '' mno = self.get_argument('no', '') realtime = try_to_int(self.get_argument('rt', '0')) cl_sec = get_cloud_session() if not isinstance(cl_sec, dict) or 'validkey' not in cl_sec.keys(): _res['code'] = 0 _res['msg'] = '云端未登录!请先在系统设置页面设置云端登录的用户名和密码,重启服务后再试!' self.send_json(_res) return if cl_sec['Wpayment'] == 0: _res['code'] = 0 _res['msg'] = cl_sec['paymentError'] self.send_json(_res) return if cl_sec['dcount'] == 0 and not cl_sec['mealtype'] == 0: _res['code'] = 0 _res['msg'] = "套餐额度已经用完!" self.send_json(_res) return if self.check_task_exists(mno, realtime): if realtime == 1: set_mno_realtime_download(mno) _res['msg'] = '已经添加了下载任务' self.send_json(_res) return url_info = get_cloudmusic_url(mno) if isinstance(url_info, dict) and 'Music_Link' in url_info.keys(): url = url_info['Music_Link'] #TODO: Convert songno to url here if not url: url = self.get_argument('url', '') minfo = get_musicinfo_byno(mno) if not url or not minfo: _res['code'] = 0 _res['msg'] = '无法获得歌曲的下载链接!' self.send_json(_res) return speed_cfg = get_download_limit() down_limit = 0 if speed_cfg: if realtime == 1: down_limit = speed_cfg['always_speed'] else: down_limit = speed_cfg['normal_speed'] base_dir = '/data/download/cloudmusic' if not os.path.exists(base_dir): os.makedirs(base_dir, mode=0755) options = { 'dir': base_dir, 'max-download-limit': "%sK" % str(down_limit) } #gid = server.aria2.addUri([url], options, position) gid = server.aria2.addUri([url], options) if gid: if mno: #need set the redis here gret = set_musictask_gid(mno, gid, realtime) if not gret: logger.error("Failed to cache gid for %s, url: %s" % (mno, url)) _res['result'] = gid _res['msg'] = '添加下载任务成功!' _res['code'] = 1 dlinfo = {} dlinfo['down_gid'] = gid dlinfo['music_no'] = mno if minfo: dlinfo['music_caption'] = minfo['Music_Caption'] if isinstance(minfo['Singers'], list): dlinfo['music_singer'] = ','.join( [s['Singer_Name'] for s in minfo['Singers']]) else: dlinfo['music_singer'] = '' dlinfo['music_lang'] = minfo['Music_Language'] dlinfo['music_ver'] = minfo['Music_LastVersion'] #"/Date(1332169506000)/" #dlinfo['music_verdate'] = minfo['Music_LastVersionDate'] dlinfo['music_type'] = minfo['Music_Normal1'] #dlinfo['down_path'] = gid #dlinfo['down_url'] = url dlinfo['down_stime'] = datetime.datetime.now() #dlinfo['down_etime'] = dlinfo['down_status'] = 0 dlinfo['down_type'] = realtime #dlinfo['music_addtime'] = gid #dlinfo['music_replace'] = gid #dlinfo['file_md5'] = gid #dlinfo['file_type'] = gid #dlinfo['file_size'] = gid dlinfo['movie_type'] = 1 add_music_downlog(dlinfo) self.send_json(_res) return elif op == 'remove': mno = self.get_argument('no', '') if not mno: _res['code'] = 0 _res['msg'] = '无效的歌曲编号!' self.send_json(_res) return gid = aria2_mno2gid(mno) if not gid: _res['code'] = 0 _res['msg'] = '无此下载任务!' self.send_json(_res) return #gid = self.get_argument('gid', '') #TODO: Convert songno to url here #url = self.get_argument('url', '') ret = server.aria2.remove(gid) if not ret: _res['code'] = 2 _res['msg'] = '删除任务失败!' self.send_json(_res) return elif op == 'start': mno = self.get_argument('no', '') if not mno: _res['code'] = 0 _res['msg'] = '无效的歌曲编号!' self.send_json(_res) return gid = aria2_mno2gid(mno) if not gid: _res['code'] = 0 _res['msg'] = '无此下载任务!' self.send_json(_res) return #gid = self.get_argument('gid', '') #TODO: Convert songno to url here ret = server.aria2.unpause(gid) if not ret: _res['code'] = 0 _res['msg'] = '无法重新唤起此任务!请稍后再试.' self.send_json(_res) return elif op == 'pause': mno = self.get_argument('no', '') if not mno: _res['code'] = 0 _res['msg'] = '无效的歌曲编号!' self.send_json(_res) return gid = aria2_mno2gid(mno) if not gid: _res['code'] = 0 _res['msg'] = '无此下载任务!' self.send_json(_res) return gid = server.aria2.pause(gid) _res['code'] = 1 _res['msg'] = '任务已经停止!' _res['gid'] = gid self.send_json(_res) return elif op == 'stop': mno = self.get_argument('no', '') if not mno: _res['code'] = 0 _res['msg'] = '无效的歌曲编号!' self.send_json(_res) return gid = aria2_mno2gid(mno) if not gid: _res['code'] = 0 _res['msg'] = '无此下载任务!' self.send_json(_res) return tsinfo = server.aria2.tellStatus(gid) if not isinstance(tsinfo, dict): _res['code'] = 0 _res['msg'] = '任务不存在!' self.send_json(_res) return if tsinfo['status'] in ['error', 'completed', 'removed']: ret = self.server.aria2.removeDownloadResult(tsinfo['gid']) else: ret = server.aria2.remove(tsinfo['gid']) ret = self.server.aria2.removeDownloadResult(tsinfo['gid']) fpath = tsinfo['files'][0]['path'] if fpath: os.remove(fpath) del_musictask_gid(mno, tsinfo['gid']) self.send_json(_res) return elif op == 'pauseall': ret = server.aria2.pauseAll() if ret: _res['code'] = 0 self.send_json(_res) return else: pass
def post(self, op): if not self.check_login(): return if op == 'update': ret = {} ret['code'] = 1 ret['data'] = None ret['msg'] = '' artsid = try_to_int(self.get_argument('artsid', '')) artsname = self.get_argument('artsname', '') artstitle = self.get_argument('artstitle', '') artsdesc = self.get_argument('artsdesc', '') bgimage = self.get_argument('filepath', '') artslist = self.get_argument('artslist', '') artistsorder = try_to_int(self.get_argument('artistsorder', '')) if artsid <= 0: ret['code'] = 1 ret['msg'] = u'推荐信息ID不正确,请重新加载页面!' self.send_json(ret) return if artsname == '' or len(artsname) > 70: ret['code'] = 1 ret['msg'] = u'推荐名称不能为空!' self.send_json(ret) return if artstitle == '' or len(artstitle) > 70: ret['code'] = 1 ret['msg'] = u'推荐标题不能为空且不能超过70字!' self.send_json(ret) return arts = artslist.strip().split('\n') arts = self._strip_artiste_list(arts) if len(arts) == 0 or len(arts) > 70: ret['code'] = 1 ret['msg'] = u'推荐歌星不能为空且最多不能超过70个!' self.send_json(ret) return #if bgimage == '': # ret['code'] = 1 # ret['msg'] = u'图片链接不能为空,请确认文件上传成功!' # self.send_json(ret) # return res = update_artists(artsid, artsname, artstitle, artsdesc, arts, bgimage) if res: ret['code'] = 0 ret['msg'] = u'推荐歌星信息修改成功!' else: ret['msg'] = u'推荐歌星信息修改失败!' self.send_json(ret) elif op == 'add': ret = {} ret['code'] = 1 ret['data'] = None ret['msg'] = '' artsname = self.get_argument('artsname', '') artstitle = self.get_argument('artstitle', '') artsdesc = self.get_argument('artsdesc', '') bgimage = self.get_argument('filepath', '') artslist = self.get_argument('artslist', '') artistsorder = try_to_int(self.get_argument('artistsorder', '')) if artsname == '' or len(artsname) > 70: ret['code'] = 1 ret['msg'] = u'推荐名称不能为空!' self.send_json(ret) return if artstitle == '' or len(artstitle) > 70: ret['code'] = 1 ret['msg'] = u'推荐标题不能为空且不能超过70字!' self.send_json(ret) return arts = artslist.strip().split('\n') arts = self._strip_artiste_list(arts) if len(arts) == 0 or len(arts) > 70: ret['code'] = 1 ret['msg'] = u'推荐歌星不能为空且最多不能超过70个!' self.send_json(ret) return res = add_new_artists(artsname, artstitle, artsdesc, arts, bgimage) if res: ret['code'] = 0 ret['msg'] = u'推荐信息添加成功!' else: ret['msg'] = u'推荐信息添加失败!' self.send_json(ret) else: raise tornado.web.HTTPError(405)
def get(self, op): if not self.check_login(): return if op == None: #get arguments page = try_to_int(self.get_argument('page', '0')) psize = try_to_int(self.get_argument('psize', '70')) #use default value if it's not valid if page < 1: page = 1 if psize < 5 or psize > 70: psize = 70 #get date from controller: res = get_all_artists_bypage(page, psize) total = 0 artslist = {} if isinstance(res, dict): total = res['total'] artslist = res['matches'] pageinfo = self.page_info('/artists', total, psize, page) self.render('artists.html', pageinfo=pageinfo, artslist=artslist, short_desc=self.short_desc) if op == 'list': result = {} result['code'] = 1 result['msg'] = '' result['data'] = None #get date from controller: res = get_all_artists() if isinstance(res, list): result['data'] = {} result['data']['matches'] = res result['data']['total'] = len(res) self.send_json(result) elif op == 'get': ret = {} ret['code'] = 1 ret['data'] = None sid = try_to_int(self.get_argument('id', '0')) if sid > 0: res = get_artists_by_id(sid) if isinstance(res, dict): ret['code'] = 0 #res['artistssongs'] = res['artistssongs'].replace(',', '\n') ret['data'] = res self.send_json(ret) elif op == 'update': raise tornado.web.HTTPError(405) elif op == 'add': raise tornado.web.HTTPError(405) elif op == 'del': ret = {} ret['code'] = 1 ret['data'] = None sid = try_to_int(self.get_argument('id', '0')) if sid > 0: res = delete_artists_by_id(sid) if res: ret['code'] = 0 ret['msg'] = u'删除歌星推荐信息成功!' else: ret['msg'] = u'删除歌星推荐信息失败!' self.send_json(ret) else: raise tornado.web.HTTPError(405)
def post(self, op): if op == 'update': ''' ''' sinfo = json.loads(self.request.body) _res = dict(code=0, msg='修改成功!', result=None) ret = update_server(sinfo) if ret: pass else: _res['code'] = 1 _res['msg'] = "保存失败!" self.send_json(_res) return elif op == 'add': ''' ''' sinfo = json.loads(self.request.body) _res = dict(code=0, msg='保存成功!', result=None) ret = add_server(sinfo) if ret: pass else: _res['code'] = 1 _res['msg'] = "保存失败!" self.send_json(_res) return elif op == 'del': _res = dict(code=0, msg='删除成功!', result=None) svrid = try_to_int(self.get_argument('server_id', '0')) ret = del_server(svrid) if ret: pass else: _res['code'] = 1 _res['msg'] = "删除失败!" self.send_json(_res) return elif op == 'servicerestart': mjsondata = json.loads(self.request.body) _res = {} _res['msg'] = '' try: for sign in mjsondata: if restartService(sign) == 0: if _res['msg'] == '': _res['msg'] = serverjson[sign] + "操作成功!" else: _res['msg'] = _res['msg'] + "\n" + serverjson[ sign] + "操作成功!" else: if _res['msg'] == '': _res['msg'] = serverjson[sign] + "操作失败!" else: _res['msg'] = _res['msg'] + "\n" + serverjson[ sign] + "操作失败!" except: _res['msg'] = "启动失败!" _res['code'] = 0 self.send_json(_res) return elif op == 'servicestop': mjsondata = json.loads(self.request.body) #elif updatatype=="stopserver": _res = {} _res['msg'] = '' for sign in mjsondata: if sign == "twm": continue if stopService(sign) == 0: if _res['msg'] == '': _res['msg'] = serverjson[sign] + "停止服务成功!" else: _res['msg'] = _res['msg'] + "\n" + serverjson[ sign] + "停止服务成功!" else: if _res['msg'] == '': _res['msg'] = serverjson[sign] + "停止失败!" else: _res['msg'] = _res['msg'] + "\n" + serverjson[ sign] + "停止失败!" _res['code'] = 0 self.send_json(_res) return else: raise tornado.web.HTTPError(405)