当前位置: 首页>>代码示例>>Python>>正文


Python Storage.save方法代码示例

本文整理汇总了Python中storage.Storage.save方法的典型用法代码示例。如果您正苦于以下问题:Python Storage.save方法的具体用法?Python Storage.save怎么用?Python Storage.save使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在storage.Storage的用法示例。


在下文中一共展示了Storage.save方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: FileConsumer

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
class FileConsumer(object):
	"""
	读取指定目录的文件
	"""
	def __init__(self):
		# zip 文件 path
		config = json.load(open(u'../config/config.json'))
		self.redisConf = config['redis']
		self.data = []
		self.lines = []
		self.redis = redis.Redis(host='127.0.0.1',port=6379,db=0)
		self.storage = Storage(config['db'])
		# self.initSelf()

	def progress(self):

		f = self.redis.rpop('logfile')
		if f and zipfile.is_zipfile(f):
			self.read_zip_file(f)
			if len(self.lines) > 0:
				try:
					# 分析每行数据
					#import pdb; pdb.set_trace()
					pubData = json.loads(self.lines.pop(0).decode('utf-8'),encoding="utf-8")
					for evt  in self.lines:
						evt = json.loads(evt.decode('utf-8'),encoding='utf-8')
						param = json.dumps(evt['param'],encoding="utf-8", ensure_ascii=False)
						_row = (evt['event'],param,str(pubData['uid']),pubData['deviceid'],pubData['devicemodel'],str(pubData['appid']),pubData['appversion'],pubData['os'],pubData['osversion'],time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(evt['timestamp']))),pubData['appname'],pubData['appbuildversion'])
						self.data.append(_row)

					if len(self.data) > 0 :
						self.storage.dbConnect()
						self.saved()
						self.storage.dbClose()
					os.remove(f)
				except OSError:
					pass

	def saved(self):
		if self.data is None or len(self.data) == 0:
			return False
		try:
			self.storage.save(self.data)
		except Exception as e:
			print("执行Mysql: 时出错:%s data is:%s" % ( e ,self.data))


	def read_zip_file(self,filepath):
		zfile = zipfile.ZipFile(filepath)
		for finfo in zfile.infolist():
			ifile = zfile.open(finfo)
			self.lines = ifile.readlines()

# if __name__ == "__main__":
# 	f = FileConsumer()
# 	f.progress()
开发者ID:firren123,项目名称:log,代码行数:58,代码来源:fileconsumer.py

示例2: TestStorage

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
class TestStorage(unittest.TestCase):
    def setUp(self):
        self.my_storage = Storage()

    def testNonexistence(self):
        data = self.my_storage.retrieve('not-exist')
        self.assertIsNone(data)

    def testSetAndGet(self):
        data = {
            random.getrandbits(128): [random.getrandbits(128)]
        }
        self.my_storage.save(data)
        self.assertEqual(self.my_storage.retrieve(), data)

        new_data = {
            random.getrandbits(128): [random.getrandbits(128)]
        }
        self.my_storage.save(new_data)
        self.assertEqual(self.my_storage.retrieve(), new_data)
开发者ID:bozhu,项目名称:IACRePrint,代码行数:22,代码来源:test_storage.py

示例3: main

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
def main():
    resp = requests.get(
        'http://eprint.iacr.org/eprint-bin/search.pl?last=31&title=1',
        headers=HTTP_HEADERS
    )

    if resp.status_code != 200:
        msg = 'request failed: ' + str(resp.status_code) \
            + '\n\n' + resp.text
        raise Exception(msg)

    my_parser = EPrintParser()
    curr_list = my_parser.feed(resp.text)

    if curr_list is None \
            or not isinstance(curr_list, list) \
            or len(curr_list) < 20:
        # in case the crawled page has problems
        return

    my_storage = Storage()
    prev_list = my_storage.retrieve()
    if prev_list is None \
            or not isinstance(prev_list, list) \
            or len(prev_list) == 0:
        my_storage.save(curr_list)

    else:
        sentry_client.user_context({
            'prev_list': prev_list,
            'curr_list': curr_list,
        })
        list_updated = [i for i in curr_list if i not in prev_list]
        if len(list_updated):
            list_untweeted = tweet(list_updated)
            list_to_save = [i for i in curr_list if i not in list_untweeted]
            my_storage.save(list_to_save)
开发者ID:bozhu,项目名称:IACRePrint,代码行数:39,代码来源:main.py

示例4: __init__

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
class Menu:
    def __init__(self):
        reload(sys)
        sys.setdefaultencoding("UTF-8")
        self.datatype = "main"
        self.title = "网易云音乐"
        self.datalist = ["排行榜", "艺术家", "新碟上架", "精选歌单", "我的歌单", "DJ节目", "打碟", "收藏", "搜索", "帮助"]
        self.offset = 0
        self.index = 0
        self.storage = Storage()
        self.storage.load()
        self.collection = self.storage.database["collections"][0]
        self.player = Player()
        self.ui = Ui()
        self.netease = NetEase()
        self.screen = curses.initscr()
        self.screen.keypad(1)
        self.step = 10
        self.stack = []
        self.djstack = []
        self.userid = None
        self.username = None
        self.resume_play = True
        signal.signal(signal.SIGWINCH, self.change_term)
        signal.signal(signal.SIGINT, self.send_kill)
        self.START = time.time()

    def change_term(self, signum, frame):
        self.ui.screen.clear()
        self.ui.screen.refresh()

    def send_kill(self, signum, fram):
        self.player.stop()
        self.storage.save()
        curses.endwin()
        sys.exit()

    def start(self):
        self.START = time.time() // 1
        self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, self.index, self.step, self.START)
        self.ui.build_process_bar(
            self.player.process_location,
            self.player.process_length,
            self.player.playing_flag,
            self.player.pause_flag,
            self.storage.database["player_info"]["playing_mode"],
        )
        self.stack.append([self.datatype, self.title, self.datalist, self.offset, self.index])
        while True:
            datatype = self.datatype
            title = self.title
            datalist = self.datalist
            offset = self.offset
            idx = index = self.index
            step = self.step
            stack = self.stack
            djstack = self.djstack
            self.screen.timeout(500)
            key = self.screen.getch()
            self.ui.screen.refresh()

            # term resize
            if key == -1:
                self.ui.update_size()
                self.player.update_size()

            # 退出
            if key == ord("q"):
                break

            # 退出并清除用户信息
            if key == ord("w"):
                self.storage.database["user"] = {"username": "", "password": ""}
                break

            # 上移
            elif key == ord("k"):
                self.index = carousel(offset, min(len(datalist), offset + step) - 1, idx - 1)
                self.START = time.time()

            # 下移
            elif key == ord("j"):
                self.index = carousel(offset, min(len(datalist), offset + step) - 1, idx + 1)
                self.START = time.time()

            # 数字快捷键
            elif ord("0") <= key <= ord("9"):
                if self.datatype == "songs" or self.datatype == "djchannels" or self.datatype == "help":
                    continue
                idx = key - ord("0")
                self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, idx, self.step, self.START)
                self.ui.build_loading()
                self.dispatch_enter(idx)
                self.index = 0
                self.offset = 0

            # 向上翻页
            elif key == ord("u"):
                if offset == 0:
                    continue
#.........这里部分代码省略.........
开发者ID:garfieldjty,项目名称:musicbox,代码行数:103,代码来源:menu.py

示例5: __init__

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
class NetEase:
    def __init__(self):
        self.header = {
            "Accept": "*/*",
            "Accept-Encoding": "gzip,deflate,sdch",
            "Accept-Language": "zh-CN,zh;q=0.8,gl;q=0.6,zh-TW;q=0.4",
            "Connection": "keep-alive",
            "Content-Type": "application/x-www-form-urlencoded",
            "Host": "music.163.com",
            "Referer": "http://music.163.com/search/",
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36",
        }
        self.cookies = {"appver": "1.5.2"}
        self.playlist_class_dict = {}
        self.session = requests.Session()
        self.storage = Storage()
        self.session.cookies = LWPCookieJar(self.storage.cookie_path)
        try:
            self.session.cookies.load()
            self.file = file(self.storage.cookie_path, "r")
            cookie = self.file.read()
            self.file.close()
            pattern = re.compile(r"\d{4}-\d{2}-\d{2}")
            str = pattern.findall(cookie)
            if str:
                if str[0] < time.strftime("%Y-%m-%d", time.localtime(time.time())):
                    self.storage.database["user"] = {"username": "", "password": "", "user_id": "", "nickname": ""}
                    self.storage.save()
                    os.remove(self.storage.cookie_path)
        except:
            self.session.cookies.save()

    def return_toplists(self):
        temp = []
        for i in range(len(top_list_all)):
            temp.append(top_list_all[i][0])
        return temp

    def httpRequest(self, method, action, query=None, urlencoded=None, callback=None, timeout=None):
        connection = json.loads(self.rawHttpRequest(method, action, query, urlencoded, callback, timeout))
        return connection

    def rawHttpRequest(self, method, action, query=None, urlencoded=None, callback=None, timeout=None):
        if method == "GET":
            url = action if (query == None) else (action + "?" + query)
            connection = self.session.get(url, headers=self.header, timeout=default_timeout)

        elif method == "POST":
            connection = self.session.post(action, data=query, headers=self.header, timeout=default_timeout)

        elif method == "Login_POST":
            connection = self.session.post(action, data=query, headers=self.header, timeout=default_timeout)
            self.session.cookies.save()

        connection.encoding = "UTF-8"
        return connection.text

    # 登录
    def login(self, username, password):
        pattern = re.compile(r"^0\d{2,3}\d{7,8}$|^1[34578]\d{9}$")
        if pattern.match(username):
            return self.phone_login(username, password)
        action = "https://music.163.com/weapi/login/"
        data = encrypted_login(username, password)
        try:
            return self.httpRequest("Login_POST", action, data)
        except:
            return {"code": 501}

    # 手机登录
    def phone_login(self, username, password):
        action = "https://music.163.com/weapi/login/cellphone"
        data = encrypted_phonelogin(username, password)
        try:
            return self.httpRequest("Login_POST", action, data)
        except:
            return {"code": 501}

    # 用户歌单
    def user_playlist(self, uid, offset=0, limit=100):
        action = (
            "http://music.163.com/api/user/playlist/?offset="
            + str(offset)
            + "&limit="
            + str(limit)
            + "&uid="
            + str(uid)
        )
        try:
            data = self.httpRequest("GET", action)
            return data["playlist"]
        except:
            return -1

    # 每日推荐歌单
    def recommend_playlist(self):
        action = "http://music.163.com/discover/recommend/taste"
        try:
            self.session.cookies.load()
            page = self.session.get(action, headers=self.header, timeout=default_timeout)
#.........这里部分代码省略.........
开发者ID:worldhope,项目名称:musicbox,代码行数:103,代码来源:api.py

示例6: __init__

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
class Menu:
    def __init__(self):
        reload(sys)
        sys.setdefaultencoding('UTF-8')
        self.config = Config()
        self.datatype = 'main'
        self.title = '网易云音乐'
        self.datalist = ['排行榜', '艺术家', '新碟上架', '精选歌单', '我的歌单', 'DJ节目', '每日推荐', '私人FM', '搜索', '帮助']
        self.offset = 0
        self.index = 0
        self.storage = Storage()
        self.storage.load()
        self.collection = self.storage.database['collections'][0]
        self.player = Player()
        self.player.playing_song_changed_callback = self.song_changed_callback
        self.cache = Cache()
        self.ui = Ui()
        self.netease = NetEase()
        self.screen = curses.initscr()
        self.screen.keypad(1)
        self.step = 10
        self.stack = []
        self.djstack = []
        self.userid = self.storage.database["user"]["user_id"]
        self.username = self.storage.database["user"]["nickname"]
        self.resume_play = True
        self.at_playing_list = False
        signal.signal(signal.SIGWINCH, self.change_term)
        signal.signal(signal.SIGINT, self.send_kill)
        self.START = time.time()

    def change_term(self, signum, frame):
        self.ui.screen.clear()
        self.ui.screen.refresh()

    def send_kill(self, signum, fram):
        self.player.stop()
        self.cache.quit()
        self.storage.save()
        curses.endwin()
        sys.exit()

    def update_alert(self, version):
        latest = Menu().check_version()
        if latest != version and latest != 0:
            if platform.system() == 'Darwin':
                os.system('/usr/bin/osascript -e \'display notification "MusicBox Update is available"sound name "/System/Library/Sounds/Ping.aiff"\'')
                time.sleep(0.5)
                os.system('/usr/bin/osascript -e \'display notification "NetEase-MusicBox installed version:' + version + '\nNetEase-MusicBox latest version:' + latest + '"\'')
            else:
                os.system('/usr/bin/notify-send "MusicBox Update is available"')

    def signin_alert(self, type):
        if type == 0:
            if platform.system() == 'Darwin':
                os.system('/usr/bin/osascript -e \'display notification "Mobile signin success"sound name "/System/Library/Sounds/Ping.aiff"\'')
            else:
                os.system('/usr/bin/notify-send "Mobile signin success"')
        else:
            if platform.system() == 'Darwin':
                os.system('/usr/bin/osascript -e \'display notification "PC signin success"sound name "/System/Library/Sounds/Ping.aiff"\'')
            else:
                os.system('/usr/bin/notify-send "PC signin success"')

    def check_version(self):
        # 检查更新 && 签到
        try:
            mobilesignin = self.netease.daily_signin(0)
            if  mobilesignin != -1 and mobilesignin['code'] != -2:
                self.signin_alert(0)
            time.sleep(0.5)
            pcsignin = self.netease.daily_signin(1)
            if pcsignin != -1 and pcsignin['code'] != -2:
                self.signin_alert(1)
            tree = ET.ElementTree(ET.fromstring(str(self.netease.get_version())))
            root = tree.getroot()
            return root[0][4][0][0].text
        except:
            return 0

    def start_fork(self, version):
        pid = os.fork()
        if pid == 0:
            Menu().update_alert(version)
        else:
            Menu().start()

    def play_pause(self):
        if len(self.storage.database["player_info"]["player_list"]) == 0:
            return
        if self.player.pause_flag:
            self.player.resume()
        else:
            self.player.pause()
        time.sleep(0.1)

    def next_song(self):
        if len(self.storage.database["player_info"]["player_list"]) == 0:
            return
        self.player.next()
#.........这里部分代码省略.........
开发者ID:dssljt,项目名称:musicbox,代码行数:103,代码来源:menu.py

示例7: __init__

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
class NetEase:
    def __init__(self):
        self.header = {
            'Accept': '*/*',
            'Accept-Encoding': 'gzip,deflate,sdch',
            'Accept-Language': 'zh-CN,zh;q=0.8,gl;q=0.6,zh-TW;q=0.4',
            'Connection': 'keep-alive',
            'Content-Type': 'application/x-www-form-urlencoded',
            'Host': 'music.163.com',
            'Referer': 'http://music.163.com/search/',
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36'
        }
        self.cookies = {
            'appver': '1.5.2'
        }
        self.playlist_class_dict = {}
        self.session = requests.Session()
        self.storage = Storage()
        self.session.cookies = LWPCookieJar(self.storage.cookie_path)
        try:
            self.session.cookies.load()
            self.file = file(self.storage.cookie_path, 'r')
            cookie = self.file.read()
            self.file.close()
            pattern = re.compile(r'\d{4}-\d{2}-\d{2}')
            str = pattern.findall(cookie)
            if str:
                if str[0] < time.strftime('%Y-%m-%d', time.localtime(time.time())):
                    self.storage.database['user'] = {
                        "username": "",
                        "password": "",
                        "user_id": "",
                        "nickname": "",
                    }
                    self.storage.save()
                    os.remove(self.storage.cookie_path)
        except:
            self.session.cookies.save()

    def return_toplists(self):
        temp = []
        for i in range(len(top_list_all)):
            temp.append(top_list_all[i][0])
        return temp

    def httpRequest(self, method, action, query=None, urlencoded=None, callback=None, timeout=None):
        connection = json.loads(self.rawHttpRequest(method, action, query, urlencoded, callback, timeout))
        return connection

    def rawHttpRequest(self, method, action, query=None, urlencoded=None, callback=None, timeout=None):
        if (method == 'GET'):
            url = action if (query == None) else (action + '?' + query)
            connection = self.session.get(url, headers=self.header, timeout=default_timeout)

        elif (method == 'POST'):
            connection = self.session.post(
                    action,
                    data=query,
                    headers=self.header,
                    timeout=default_timeout
            )

        elif (method == 'Login_POST'):
            connection = self.session.post(
                    action,
                    data=query,
                    headers=self.header,
                    timeout=default_timeout
            )
            self.session.cookies.save()

        connection.encoding = "UTF-8"
        return connection.text

    # 登录
    def login(self, username, password):
        pattern = re.compile(r'^0\d{2,3}\d{7,8}$|^1[34578]\d{9}$')
        if (pattern.match(username)):
            return self.phone_login(username, password)
        action = 'https://music.163.com/weapi/login/'
        data = encrypted_login(username, password)
        try:
            return self.httpRequest('Login_POST', action, data)
        except:
            return {'code': 501}

    # 手机登录
    def phone_login(self, username, password):
        action = 'https://music.163.com/weapi/login/cellphone'
        data = encrypted_phonelogin(username, password)
        try:
            return self.httpRequest('Login_POST', action, data)
        except:
            return {'code': 501}

    # 用户歌单
    def user_playlist(self, uid, offset=0, limit=100):
        action = 'http://music.163.com/api/user/playlist/?offset=' + str(offset) + '&limit=' + str(
                limit) + '&uid=' + str(uid)
        try:
#.........这里部分代码省略.........
开发者ID:WUJISHANXIA,项目名称:musicbox,代码行数:103,代码来源:api.py

示例8: __init__

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
class Menu:
    def __init__(self):
        reload(sys)
        sys.setdefaultencoding("UTF-8")
        self.config = Config()
        self.datatype = "main"
        self.title = "网易云音乐"
        self.datalist = ["排行榜", "艺术家", "新碟上架", "精选歌单", "我的歌单", "DJ节目", "每日推荐", "私人FM", "搜索", "帮助"]
        self.offset = 0
        self.index = 0
        self.storage = Storage()
        self.storage.load()
        self.collection = self.storage.database["collections"][0]
        self.player = Player()
        self.player.playing_song_changed_callback = self.song_changed_callback
        self.cache = Cache()
        self.ui = Ui()
        self.netease = NetEase()
        self.screen = curses.initscr()
        self.screen.keypad(1)
        self.step = 10
        self.stack = []
        self.djstack = []
        self.userid = self.storage.database["user"]["user_id"]
        self.username = self.storage.database["user"]["nickname"]
        self.resume_play = True
        self.at_playing_list = False
        signal.signal(signal.SIGWINCH, self.change_term)
        signal.signal(signal.SIGINT, self.send_kill)
        self.START = time.time()

    def change_term(self, signum, frame):
        self.ui.screen.clear()
        self.ui.screen.refresh()

    def send_kill(self, signum, fram):
        self.player.stop()
        self.cache.quit()
        self.storage.save()
        curses.endwin()
        sys.exit()

    def alert(self, version):
        latest = Menu().check_version()
        if latest != version:
            if platform.system() == "Darwin":
                os.system(
                    '/usr/bin/osascript -e \'display notification "MusicBox Update is available"sound name "/System/Library/Sounds/Ping.aiff"\''
                )
                time.sleep(0.5)
                os.system(
                    "/usr/bin/osascript -e 'display notification \"NetEase-MusicBox installed version:"
                    + version
                    + "\nNetEase-MusicBox latest version:"
                    + latest
                    + "\"'"
                )
            else:
                os.system('/usr/bin/notify-send "MusicBox Update is available"')

    def check_version(self):
        # 检查更新
        tree = ET.ElementTree(ET.fromstring(str(self.netease.get_version())))
        root = tree.getroot()
        return root[0][4][0][0].text

    def start_fork(self, version):
        # Hong, Fork a child process.
        # Return 0 in the child and the child’s process id in the parent.
        pid = os.fork()
        if pid == 0:
            Menu().alert(version)
        else:
            Menu().start()

    def play_pause(self):
        if len(self.storage.database["player_info"]["player_list"]) == 0:
            return
        if self.player.pause_flag:
            self.player.resume()
        else:
            self.player.pause()
        time.sleep(0.1)

    def next_song(self):
        if len(self.storage.database["player_info"]["player_list"]) == 0:
            return
        self.player.next()
        time.sleep(0.1)

    def previous_song(self):
        if len(self.storage.database["player_info"]["player_list"]) == 0:
            return
        self.player.prev()
        time.sleep(0.1)

    def start(self):
        # Hong, Return the time in seconds since the epoch as a floating point number.
        self.START = time.time() // 1
        self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, self.index, self.step, self.START)
#.........这里部分代码省略.........
开发者ID:RockHong,项目名称:netease-music-cli-player,代码行数:103,代码来源:menu.py

示例9: __init__

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
class Consumer:
    """
    获取redis的数据,取出后做处理
    """
    def __init__(self):
        self.config = json.load(open(u'../config/config.json'))
        self.redisConf = self.config['redis']
        self.queue_key = self.redisConf['queue_key']
        # 链接redis
        # self.redis = redis.Redis(host=str(self.redisConf['server']),port=int(self.redisConf['port']),db=int(self.redisConf['db']))
        self.redis = redis.Redis(host='127.0.0.1',port=6379,db=0)
        logging.basicConfig(filename = self.config['error_log'], level = logging.DEBUG)
        # self.db = None
        self.storage = Storage(self.config['db'])
        self.num = 50
        self.data = []

    def progress(self):
        #import pdb; pdb.set_trace()
        start = 0
        len_events = self.redis.llen('log')
        if int(len_events) > 0:
            self.data = []
            while start < min(len_events,self.num):
                _data = self.redis.rpop('log')
                self.parseData(_data)
                start+=1

            if len(self.data) > 0 :
                self.storage.dbConnect()
                self.saved()
                self.storage.dbClose()
        else:
            return


    def parseData(self,dataStr):
        """
        分析数据
        :return:
        """

        from urllib import unquote
        test = unquote(dataStr)
        dataStr = test
        if dataStr is None:
            return None
        try:
            data = json.loads(dataStr.decode('utf-8'),encoding="utf-8")
            events = data['events']
            if not isinstance(events,list):
                events = [events]
            for dict in events:
                param = json.dumps(dict['param'],encoding="utf-8", ensure_ascii=False)
                _row = (dict['event'],param,str(data['uid']),data['deviceid'],data['devicemodel'],str(data['appid']),data['appversion'],data['os'],data['osversion'],time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(int(dict['timestamp']))),data['appname'],data['appbuildversion'])
                #_row = (str(data['event']),param,str(data['uid']),data['deviceid'],data['deviceModel'])
                self.data.append(_row)
        except Exception as e:
            logging.error("convert data to json object error! --data is :" + dataStr + "; \nerror is " + str(e)  + ";\n===============================================================\n")
            return None
        # finally:



    def saved(self):
        """
        :return : bool
        """
        #连接数据库

        if self.data is None or len(self.data) == 0:
            return False
        if isinstance(self.data,type({})):
            self.singleSave()
            print("执行Mysql: 时出错:%s data is:%s" % ( e ,self.data))
        elif isinstance(self.data,(tuple, list)):
            """
            批量更新数据
            """
            self.mutilSave()

    def singleSave(self,row):
        """
        保存数据到数据库中
        :param data:
        :return:
        """
        if row is None or row =='':
            return
        print (row)

    def mutilSave(self):
        """
        批量插入数据
        :param data:
        :return:
        """
        # cursor = self.db.cursor()
        try:
            self.storage.save(self.data)
#.........这里部分代码省略.........
开发者ID:firren123,项目名称:log,代码行数:103,代码来源:consumer.py

示例10: __init__

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
class Menu:
    def __init__(self):
        reload(sys)
        sys.setdefaultencoding('UTF-8')
        self.datatype = 'main'
        self.title = '网易云音乐'
        self.datalist = ['排行榜', '艺术家', '新碟上架', '精选歌单', '我的歌单', 'DJ节目', '打碟', '收藏', '搜索', '帮助']
        self.offset = 0
        self.index = 0
        self.storage = Storage()
        self.storage.load()
        self.collection = self.storage.database['collections'][0]
        self.player = Player()
        self.cache = Cache()
        self.ui = Ui()
        self.netease = NetEase()
        self.screen = curses.initscr()
        self.screen.keypad(1)
        self.step = 10
        self.stack = []
        self.djstack = []
        self.userid = None
        self.username = None
        self.resume_play = True
        signal.signal(signal.SIGWINCH, self.change_term)
        signal.signal(signal.SIGINT, self.send_kill)
        self.START = time.time()

    def change_term(self, signum, frame):
        self.ui.screen.clear()
        self.ui.screen.refresh()

    def send_kill(self, signum, fram):
        self.player.stop()
        self.cache.quit()
        self.storage.save()
        curses.endwin()
        sys.exit()

    def start(self):
        self.START = time.time() // 1
        self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, self.index, self.step, self.START)
        self.ui.build_process_bar(self.player.process_location, self.player.process_length, self.player.playing_flag,
                                  self.player.pause_flag, self.storage.database['player_info']['playing_mode'])
        self.stack.append([self.datatype, self.title, self.datalist, self.offset, self.index])
        while True:
            datatype = self.datatype
            title = self.title
            datalist = self.datalist
            offset = self.offset
            idx = index = self.index
            step = self.step
            stack = self.stack
            djstack = self.djstack
            self.screen.timeout(500)
            key = self.screen.getch()
            self.ui.screen.refresh()

            # term resize
            if key == -1:
                self.ui.update_size()
                self.player.update_size()

            # 退出
            if key == ord('q'):
                break

            # 退出并清除用户信息
            if key == ord('w'):
                self.storage.database['user'] = {
                    "username": "",
                    "password": "",
                }
                break

            # 上移
            elif key == ord('k'):
                self.index = carousel(offset, min(len(datalist), offset + step) - 1, idx - 1)
                self.START = time.time()

            # 下移
            elif key == ord('j'):
                self.index = carousel(offset, min(len(datalist), offset + step) - 1, idx + 1)
                self.START = time.time()

            # 数字快捷键
            elif ord('0') <= key <= ord('9'):
                if self.datatype == 'songs' or self.datatype == 'djchannels' or self.datatype == 'help':
                    continue
                idx = key - ord('0')
                self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, idx, self.step, self.START)
                self.ui.build_loading()
                self.dispatch_enter(idx)
                self.index = 0
                self.offset = 0

            # 向上翻页
            elif key == ord('u'):
                if offset == 0:
                    continue
#.........这里部分代码省略.........
开发者ID:pastorgod,项目名称:musicbox,代码行数:103,代码来源:menu.py

示例11: Mainloop

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
class Mainloop(threading.Thread):
    def __init__(self, parent):
        threading.Thread.__init__(self)
        self.parent = parent
        self.network = Network()
        self.storage = Storage()

        self.controlFrame = Frame(parent)
        self.controlFrame.grid(row=0, column=0, columnspan=99, padx=10, pady=10, sticky=NW)

        self.recordingName = Textbox(self.controlFrame, 'Name of recording: ')
        self.recordingName.grid(row=0, column=0, sticky=NW, padx=10)

        self.buttonsFrame = Frame(self.controlFrame)
        self.buttonsFrame.grid(row=1, column=0, sticky=NW, pady=10)

        self.recordButton = Toggle(self.buttonsFrame, 'Record', lambda: self.record('on'), lambda: self.record('off'))
        self.TCPOverride = Toggle(self.buttonsFrame, 'Enable TCP', lambda: self.tcp('on'), lambda: self.tcp('off'))
        self.recordButton.grid(row=0, column=0, sticky=NW, padx=10)
        self.TCPOverride.grid(row=0, column=1, sticky=NW, padx=10)

        self.camerasFrame = Frame(parent)
        self.camerasFrame.grid(row=1, column=0, padx=10, pady=10, sticky=NW)

        self.gpMaster = GoProMaster(self.camerasFrame, self.network)

        self.TCPServer = tcp.TCP()
        self.localUDP = udp.UDP()

        self.shouldExit = False

        self.load()
        
    def run(self):
        self.localUDP.open('127.0.0.1', 6000, 7000, timeout=0)
        timer = 0
        while not self.shouldExit:
            self.save()
            self.addMountedCameras()
            self.sendAliveMessage()
            if self.TCPServer.isActive():
                self.processMessage(self.TCPServer.get())

            if timer % 20 == 0:
                for ssid in self.network.getSSIDList():
                    if self.network.isGoPro(ssid):
                        self.addCamera(ssid)
            time.sleep(0.1)
            timer += 1

    def addCamera(self, ssid):
        if not self.gpMaster.exists(ssid):
            self.gpMaster.addSlave(ssid)

    def record(self, state):
        self.gpMaster.record(state, self.recordingName.getText())

    def tcp(self, state):
        if state == 'on':
            self.recordButton.disable()
            self.TCPServer = tcp.TCP()
            self.TCPServer.listen(config.getTCPInfo()[0], int(config.getTCPInfo()[1]), timeout=0.01)

        elif state == 'off':
            self.recordButton.enable()
            self.TCPServer.close()

    def processMessage(self, message):
        if not message:
            return

        message = message.lower()
        if message == 'record on':
            self.TCPServer.put('Starts recording')
            self.record('on')
            self.recordButton.setState(True)
        elif message == 'record off':
            self.TCPServer.put('Stops recording')
            self.record('off')
            self.recordButton.setState(False)
        elif message[0:7] == 'recname':
            self.TCPServer.put('Recording name set to: ' + message[8:])
            self.recordingName.setText(message[8:])

    def exit(self):
        self.shouldExit = True
        self.localUDP.close()
        self.TCPServer.close()
        self.gpMaster.exit()

    def save(self):
        toSave = self.recordingName.getText() + ',' + str(self.recordButton.getState())
        self.storage.save('main', toSave)

    def load(self):
        loaded = self.storage.load('main')
        if not loaded:
            return
        loaded = loaded.split(',')
        self.recordingName.setText(loaded[0])
#.........这里部分代码省略.........
开发者ID:martinjensen91,项目名称:GoProFilm,代码行数:103,代码来源:mainloop.py

示例12: Menu

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
class Menu(object):
    def __init__(self):
        reload(sys)
        sys.setdefaultencoding('UTF-8')
        self.config = Config()
        self.datatype = 'main'
        self.title = 'NetEase Music'
        self.datalist = ['Charts', 'Artists', 'New Songs', 'Songs', 'My Songs', 'Radio Stations', 'Recommended',
                         'Personal Radio', 'Search', 'Help']
        self.offset = 0
        self.index = 0
        self.storage = Storage()
        self.storage.load()
        self.collection = self.storage.database['collections'][0]
        self.player = Player()
        self.player.playing_song_changed_callback = self.song_changed_callback
        self.cache = Cache()
        self.ui = Ui()
        self.netease = NetEase()
        self.screen = curses.initscr()
        self.screen.keypad(1)
        self.step = 10
        self.stack = []
        self.djstack = []
        self.userid = self.storage.database['user']['user_id']
        self.username = self.storage.database['user']['nickname']
        self.resume_play = True
        self.at_playing_list = False
        signal.signal(signal.SIGWINCH, self.change_term)
        signal.signal(signal.SIGINT, self.send_kill)
        self.START = time.time()

    def change_term(self, signum, frame):
        self.ui.screen.clear()
        self.ui.screen.refresh()

    def send_kill(self, signum, fram):
        self.player.stop()
        self.cache.quit()
        self.storage.save()
        curses.endwin()
        sys.exit()

    def update_alert(self, version):
        latest = Menu().check_version()
        if latest != version and latest != 0:
            notify('MusicBox Update is available', 1)
            time.sleep(0.5)
            notify('NetEase-MusicBox installed version:' + version +
                   '\nNetEase-MusicBox latest version:' + latest, 0)

    def check_version(self):
        # 检查更新 && 签到
        try:
            mobilesignin = self.netease.daily_signin(0)
            if mobilesignin != -1 and mobilesignin['code'] != -2:
                notify('Mobile signin success', 1)
            time.sleep(0.5)
            pcsignin = self.netease.daily_signin(1)
            if pcsignin != -1 and pcsignin['code'] != -2:
                notify('PC signin success', 1)
            tree = ET.ElementTree(ET.fromstring(str(self.netease.get_version(
            ))))
            root = tree.getroot()
            return root[0][4][0][0].text
        except TypeError as e:
            log.error(e)
            return 0

    def start_fork(self, version):
        pid = os.fork()
        if pid == 0:
            Menu().update_alert(version)
        else:
            Menu().start()

    def _is_playlist_empty(self):
        return len(self.storage.database['player_info']['player_list']) == 0

    def play_pause(self):
        if self._is_playlist_empty():
            return
        if self.player.pause_flag:
            self.player.resume()
        else:
            self.player.pause()
        time.sleep(0.1)

    def next_song(self):
        if self._is_playlist_empty():
            return
        self.player.next()
        time.sleep(0.5)

    def previous_song(self):
        if self._is_playlist_empty():
            return
        self.player.prev()
        time.sleep(0.5)

#.........这里部分代码省略.........
开发者ID:Zorgodon,项目名称:musicbox,代码行数:103,代码来源:menu.py

示例13: __init__

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
class KeePassHttpServer:
    def __init__(self, db_path, password):
        self.id = 'KeePassHttpX'
        self.host = 'localhost'
        self.port = 19455
        self.db_path = db_path
        self.password = password
        self.storage = Storage()

    def activate(self):
        server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        server_sock.bind((self.host, self.port))

        while True:
            #print '-- begin while ------'
            server_sock.listen(3)

            #print 'Waiting for connections...'
            client_sock, client_address = server_sock.accept()
            receive_message = client_sock.recv(4096)

            if receive_message.rstrip() == "":
                sys.exit()

            response = self.handle_request(receive_message)

            client_sock.sendall(response)
            client_sock.close()

        server_sock.close()

    def create_response(self, body):
        data = []
        data.append('HTTP/1.1 200 OK')
        data.append('Date: ' + time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime()))
        data.append('Server: python-keypass-http')
        data.append('Connection: close')
        data.append('Content-Type: application/json; charset=utf-8')
        data.append('')
        data.append(body)
        data.append('')

        response = "\n".join(data)

        return response

    def handle_request(self, request):

        #print '-- start handle_request ------'
        #print request
        #print '-- close handle_request ------'

        header, body = request.split('\r\n\r\n')
        response = json.loads(body)

        if response['RequestType'] == 'associate':
            response['Id'] = 'KeePassHttpX'
            response['Success'] = False

            key = base64.b64decode(response['Key'])
            iv  = base64.b64decode(response['Nonce'])
            verifier = base64.b64decode(response['Verifier'])

            kpc = keepass_crypt.KeePassCrypt(key, iv)

            if base64.b64encode(iv) == kpc.decrypt(verifier):
                response['Success'] = True

                self.storage.save('body', body);

        elif response['RequestType'] == 'test-associate':
            response = self.test_associate(response)

        elif response['RequestType'] == 'get-logins':
            response = self.get_logins(response)

        else:
            print '-- start unknown request type response ------'
            print response

        http_response = self.create_response(json.dumps(response))
        return http_response

    def test_associate(self, response):
        response['Id'] = self.id
        response['Success'] = False

        storage_data = self.storage.load('body')
        if storage_data is None:
            return response

        keyfile = json.loads(storage_data)

        key = base64.b64decode(keyfile['Key']);
        iv  = base64.b64decode(keyfile['Nonce'])
        verifier = base64.b64decode(keyfile['Verifier'])

        kpc = keepass_crypt.KeePassCrypt(key, iv)

#.........这里部分代码省略.........
开发者ID:ha1t,项目名称:KeePassHttpX,代码行数:103,代码来源:keepass_http.py

示例14: Main

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
class Main(Frame):
    """
    Main class of the system.
    """

    def __init__(self, master=None):
        """
        Main contstructor. Creates an instance of :class:`Storage<storage.Storage>` and starts the graphics-window.
        """
        args = {
            "fields": ["name", "date", "lifetime"],
            "ident": "name",
            "uniqueident": True,
            "objectname": "person",
            "gui": self,
        }
        self.storage = Storage(**args)
        self.is_clicked = False
        self.clicked_id = -1
        Frame.__init__(self, master)
        self.master.title("Medlemsregister Cybernetisk Selskab")
        self.grid(padx=15, pady=15)

        if not self.storage._testfile():
            path = os.path.abspath(__file__).rsplit("/", 1)[0]
            self._popup(
                "ERROR!",
                'Cannot write to file! make sure folder "{}/medlemslister" exists, then restart..'.format(path),
                "error",
            )
            self.destroy()
            self.master.destroy()
            return

        self.create_elements()

        loadmsg = self.storage.load()
        if "error" in loadmsg:
            self.infotext.set("ERROR! {}".format(loadmsg["error"]))
        elif "success" in loadmsg:
            self.infotext.set("Success! {}".format(loadmsg["success"]))

        self._populate_list()

    def create_elements(self):
        """
        creates all graphics elements and places them in the graphics grid.
        """

        # global shortcuts
        self.master.bind("<F1>", self.display_help)
        self.master.bind("<Control-f>", self.search)
        self.master.bind("<Control-d>", self.delete)
        self.master.bind("<Control-r>", self._populate_list)
        self.master.bind("<Control-s>", self.save_to_file)

        monospace = tkFont.Font(family="Courier", size=10, weight="normal")

        # menubar:
        menubar = Menu(self.master)

        backupmenu = Menu(menubar, tearoff=0)
        backupmenu.add_command(label="Backup to Google (Note: Slow!)", command=self.google_write)
        backupmenu.add_command(label="Read backup from Google", command=self.google_read)
        backupmenu.add_separator()
        backupmenu.add_command(label="Merge with Wiki", command=self.wiki_merge)
        backupmenu.add_command(label="Overwrite Wiki with local storage", command=self.wiki_overwrite)

        specialmenu = Menu(menubar, tearoff=0)
        specialmenu.add_command(label="Set as lifetime member", command=self.set_lifetime)
        specialmenu.add_command(label="Remove lifetime membership", command=self.unset_lifetime)
        specialmenu.add_command(label="Change a users id", command=self.update_id)

        menubar.add_cascade(label="Backup", menu=backupmenu)
        menubar.add_cascade(label="Special Actions", menu=specialmenu)
        menubar.add_command(label="Help (F1)", command=self.display_help)

        self.master.config(menu=menubar)

        # Info-label
        self.infotext = StringVar()
        self.info = Label(self, textvariable=self.infotext)
        self.info.pack()
        self.info.grid(row=0, column=0, columnspan=10)
        self.infotext.set("Welcome")

        # Save-button
        self.savebtn = Button(self, text="Save (enter)", command=self.create, width=11)
        self.savebtn.grid(row=3, column=7)

        # Omnibar (entry-field for add/search/delete)
        self.omnibar = Entry(self, width=28)
        self.omnibar.grid(row=3, column=0, columnspan=1)
        self.omnibar.bind("<Return>", self.create)
        self.omnibar.configure(font=monospace)

        # List of members
        self.memlist = SL(self, height=25, width=71, callback=self._click_list)
        self.memlist.grid(row=7, column=0, columnspan=10)
        self.memlist.listbox.configure(font=monospace)
#.........这里部分代码省略.........
开发者ID:vegarang,项目名称:cybmedlem,代码行数:103,代码来源:cyb_medlem2.py

示例15: GoPro

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import save [as 别名]
class GoPro(threading.Thread):
    def __init__(self, parent, goproinfo, network):
        threading.Thread.__init__(self)
        self.info = goproinfo
        self.camera = GoProHero(password=self.info.getPassword(), log_level=logging.CRITICAL)
        self.storage = Storage()
        self.status = goprostatus.GoProStatus()
        self.files = goprofiles.GoProFiles()
        self.recordings = goprorecordings.GoProRecordings()
        self.gui = GoProGUI(parent, self.info.getSSID(), lambda: self.addObjective('snap'), lambda: self.addObjective('transfer'), self.status.clearObjectives)
        self.network = network
        self.exitVar = False

        self.load()
        self.files.unmount(self.info.getUSBid(), self.info.getUSBserial(), self.info.getModel())
        print self.info.getSSID() + ': Initialized'

    def addObjective(self, objective):
        self.status.addObjective(objective)

    def run(self):
        actions = {
                'record': self.record,
                'snap': self.snap,
                'transfer': self.transfer
                }
        actionThread = threading.Thread()

        while not self.exitVar:
            self.save()
            self.files.mount(self.info.getUSBid(), self.info.getUSBserial(), self.info.getModel())
            self.status.setName(self.gui.getName())
            self.gui.setUnsaved(self.recordings.isEmpty())
            self.gui.setMounted(self.files.isMounted())
            self.gui.setRecording(self.status.isRecording())
            self.gui.displayObjectives(self.status.getObjectives())

            action, args = self.status.decodeObjective()
            if action in actions and not actionThread.isAlive():
                actionThread = threading.Thread(target=actions[action], args=(args,))
                actionThread.start()

            time.sleep(0.1)

    def record(self, args):
        if args[0] == 'on' and self.status.isRecording() == False and self.gui.shouldRecord():
            if not self.command(['mode video', 'record on']):
                self.status.completeObjective()
                return
            self.status.isRecording(True)
            self.recordings.stage(' '.join(args[1:]), self.status.getName())

        elif args[0] == 'off' and self.status.isRecording() == True:
            time.sleep(1)
            if not self.command(['record off']):
                self.status.completeObjective()
                return
            self.status.isRecording(False)
            self.recordings.commit()
        self.status.completeObjective()

    def transfer(self, args):
        if self.files.isMounted() and not self.recordings.isEmpty():
            patterns = self.files.findMatchingFiles(self.recordings.getRecordings())
            correctPattern = self.gui.confirmPattern(self.recordings.getRecordings(), patterns)
            self.files.trackAllExcept(correctPattern)
            self.save()
            successfulIndices = self.files.copy(self.recordings.getRecordings(), correctPattern)
            self.files.trackAll()
            self.save()

            for i in reversed(successfulIndices):
                self.recordings.delete(i)
        self.status.completeObjective()

    def snap(self, args):
        try:
            self.connect()
            _, image = self.camera.image().split(',')
            if not os.path.isdir('tmp'):
                os.mkdir('tmp')
            file = open('tmp/image.png', 'wb')
            file.write(image.decode('base64'))
            file.close()
            os.system('eog tmp/image.png &')
        except:
            pass
        finally:
            self.disconnect()
            self.status.completeObjective()

    def connect(self):
        self.network.connect(self.info.getSSID(), self.info.getPassword())

    def disconnect(self):
        self.network.disconnect()

    def testConnection(self):
        self.connect()
        self.disconnect()
#.........这里部分代码省略.........
开发者ID:martinjensen91,项目名称:GoProFilm,代码行数:103,代码来源:gopro.py


注:本文中的storage.Storage.save方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。