def train_new_model(): game_env = PongGame() # init env agent = DqnAgent(game_env) # init agent # input from user print("Enter num of iteration:") while True: try: Dqn.total_num_of_training = int(input()) break except ValueError: print("That's not an integer!") continue # create new file output_directory = JP.create_results_directory() file_name = output_directory + "/data_file.txt" checkpoint_dir = JP.create_checkpoints_directory(output_directory) print(checkpoint_dir) saver = tf.train.Saver() # call train model with tf.Session() as sess: sess.run(tf.global_variables_initializer()) # for initialized Dqn.run_dqn(sess, game_env, agent, output_directory, file_name, saver, checkpoint_dir)
def login(r, ud: dict, ip: dict, logg=None): '登录至B站' global lan try: driver = webdriver.Chrome() if logg is not None: logg.write( "OEPN https://passport.bilibili.com/ajax/miniLogin/minilogin in ChromeDriver", currentframe(), "OPEN WEB") driver.get('https://passport.bilibili.com/ajax/miniLogin/minilogin') aa = True while aa: time.sleep(1) if driver.current_url == 'https://passport.bilibili.com/ajax/miniLogin/redirect': aa = False sa = [] for i in driver.get_cookies(): r.cookies.set(i['name'], i['value'], domain=i['domain'], path=i['path']) t = { 'name': i['name'], 'value': i['value'], 'domain': i['domain'], 'path': i['path'] } sa.append(t) driver.close() except Exception: if logg is not None: logg.write(traceback.format_exc(), currentframe(), "CHROME DRIVER FAILED") print(traceback.format_exc()) print(lan['ERROR1']) # 使用ChromeDriver登录发生错误,尝试采用用户名、密码登录 read = login2(r, logg) if read in [-1, -2]: if read == -1: print(lan['ERROR2']) # 登录失败! read = loginwithqrcode(r, logg) if read == -1: print(lan['ERROR2']) # 登录失败! return 2 sa = read rr = tryok(r, ud, logg) if rr is True: if 's' not in ip: print(lan['OUTPUT1']) # 登录成功! JSONParser.savecookie(sa) return 0 elif rr is False: print(lan['ERROR3']) # 网络错误! return 1 else: print(lan['ERROR4'] + str(rr['code']) + "," + str(rr['message'])) # 登录失败: return 2
def main(): ais = ANTLRFileStream(sys.argv[1]) lexer = JSONLexer(ais) tokens = CommonTokenStream(lexer) parser = JSONParser(tokens) parser.setBuildParseTree(True) tree = parser.json() print tree #print tree.toStringTree(parser) walker = ParseTreeWalker() converter = XMLEmitter() walker.walk(converter, tree) print tree
def run_single_game(): game_env = PongGame() # init env agent = DqnAgent(game_env) # init agent while True: print("enter directory to load:") work_dir = input() if os.path.isdir("./" + work_dir): break episode, last_epsilon = JP.load_data(work_dir) Dqn.current_training = episode + 1 Dqn.total_num_of_training += Dqn.current_training agent.epsilon = last_epsilon saver = tf.train.Saver() with tf.Session() as sess: # Load a previous checkpoint if we find one latest_checkpoint = tf.train.latest_checkpoint( work_dir + "/checkpoints_directory") if latest_checkpoint: print("Loading model checkpoint {}...\n".format(latest_checkpoint)) sess.run(tf.global_variables_initializer()) # for initialized saver.restore(sess, latest_checkpoint) game_env.run_single_episode(sess, agent)
def represent_result(): while True: print("enter directory to load:") work_dir = input() if os.path.isdir("./" + work_dir): break data = JP.read_data(work_dir) VR.visual_interface(data)
def login(r, ud: dict, ip: dict): '登录至B站' global lan try: driver = webdriver.Chrome() driver.get('https://passport.bilibili.com/ajax/miniLogin/minilogin') aa = True while aa: time.sleep(1) if driver.current_url == 'https://passport.bilibili.com/ajax/miniLogin/redirect': aa = False sa = [] for i in driver.get_cookies(): r.cookies.set(i['name'], i['value'], domain=i['domain'], path=i['path']) t = { 'name': i['name'], 'value': i['value'], 'domain': i['domain'], 'path': i['path'] } sa.append(t) driver.close() except Exception: print(traceback.format_exc()) print(lan['ERROR1']) #使用ChromeDriver登录发生错误,尝试采用用户名、密码登录 read = login2(r) if read == -1: print(lan['ERROR2']) #登录失败! return 2 sa = read rr = tryok(r, ud) if rr == True: if not 's' in ip: print(lan['OUTPUT1']) #登录成功! JSONParser.savecookie(sa) return 0 elif rr == False: print(lan['ERROR3']) #网络错误! return 1 else: print(lan['ERROR4'] + str(rr['code']) + "," + str(rr['message'])) #登录失败: return 2
def downsub(r: Session,fn: str,i: dict,ip: dict,se: dict,data: dict,pr: bool = False,pi: int = 1, width: int = None, height: int = None): "下载字幕" ass = False if JSONParser.getset(se, 'ass') == True: ass = True if 'ass' in ip: ass = ip['ass'] global lan fq=spfn(fn)[0] if not ass: fn = f"{fq}.{i['lan']}.srt" else: fn = f"{fq}.{i['lan']}.ass" i['fn']=fn if os.path.exists(fn) : fg=False bs=True if 's' in ip: fg=True bs=False if 'y' in se: fg = se['y'] bs = False if 'y' in ip : fg = ip['y'] bs = False while bs: inp=input(f'{lan["INPUT1"]}(y/n)'.replace("<filename>",fn))#"<filename>"文件已存在,是否覆盖? if len(inp)>0 : if inp[0].lower()=='y' : fg=True bs=False elif inp[0].lower()=='n' : bs=False if fg: try : os.remove('%s'%(fn)) except : print(lan['OUTPUT1'])#删除原有文件失败,跳过下载 return 0 re=r.get(i['url']) re.encoding='utf8' re=re.json() if not ass: if assrt(fn, re['body']) == 0 and pr : print(lan['OUTPUT2'].replace('<number>', str(pi)).replace('<languagename>', i['land'])) # 第<number>P<languagename>字幕下载完毕! else: if width is None: width = 1920 if height is None: height = 1080 if asass(fn, re, width, height) == 0 and pr : print(lan['OUTPUT2'].replace('<number>', str(pi)).replace('<languagename>', i['land'])) # 第<number>P<languagename>字幕下载完毕! return 0
def do_harvest(query, iterations): book_data = {} currentPosition = 0 query_string = QUERY_FORMAT_STRING.format(query) graph = Graph() parser = JSONParser.JSONParser() # map for collecting nodes nodes = {} while (iterations > len(nodes)): page = requests.get(query_string) tree = html.fromstring(page.content) links = tree.xpath('//table[@id="searchresult"]//a/@href') if (len(links) == 0): break for link in links: book_info_response = requests.get(BASE_URL_DNB + link) get_data_from_book_info(book_data, book_info_response, "Titel") get_data_from_book_info(book_data, book_info_response, "Person(en)") get_data_from_book_info_link(book_data, book_info_response, "Schlagwörter") if (len(book_data['Schlagwörter']) > 0): for v in book_data.values(): print(v) for s in book_data['Schlagwörter']: node = None node = graph.add_node(s) nodes[s] = node s1 = book_data['Schlagwörter'][0] for s in book_data['Schlagwörter']: if s != s1: edge = graph.add_edge(nodes[s1], nodes[s]) edge['label'] = book_data['Titel'] query_string = QUERY_FORMAT_STRING_2.format(query, str(currentPosition)) currentPosition += len(links) iterations -= 1 return parser.tostring(graph)
def continue_train_model(): game_env = PongGame() # init env agent = DqnAgent(game_env) # init agent while True: print("enter directory to load:") work_dir = input() if os.path.isdir("./" + work_dir): break # input from user print("Enter num of iteration:") while True: try: Dqn.total_num_of_training = int(input()) break except ValueError: print("That's not an integer!") continue episode, last_epsilon = JP.load_data(work_dir) Dqn.current_training = episode + 1 Dqn.total_num_of_training += Dqn.current_training agent.epsilon = last_epsilon file_name = work_dir + "/data_file.txt" checkpoint_dir = work_dir + "/checkpoints_directory" saver = tf.train.Saver() with tf.Session() as sess: # Load a previous checkpoint if we find one latest_checkpoint = tf.train.latest_checkpoint( work_dir + "/checkpoints_directory") if latest_checkpoint: print("Loading model checkpoint {}...\n".format(latest_checkpoint)) sess.run(tf.global_variables_initializer()) # for initialized saver.restore(sess, latest_checkpoint) Dqn.run_dqn(sess, game_env, agent, work_dir, file_name, saver, checkpoint_dir)
def performStageTwo(data, link): content = openPageRequest(link) # print ("page Open") # open("store","w").write(content) try: content = content.decode("unicode_escape").encode("ascii", "ignore") # content = unicodedata.normalize('NFDK',content).encode('ascii','ignore') # open("k","w").write(filterContent(content)) # jsonData = json.loads(filterContent(content)) jsonData = JSONParser.parseJson(filterContent(content)) print "got json" # print ("loaded content") parsePage(data, bs(filterContent(jsonData["content_html"]))) print ("parsing completed") if "load_more_widget_html" in jsonData: if jsonData["load_more_widget_html"]: next_link = getCallLink(bs(jsonData["load_more_widget_html"])) else: next_link = "" else: next_link = "" updateTrack(data["sub_channel_link"], next_link) if next_link != "": performStageTwo(data, next_link) except Exception as x: print x, "Hello !" try: db1 = pymysql.connect("127.0.0.1", "root", "#srmseONserver1", "yt") cursor = db1.cursor() cursor.execute( "UPDATE track_table SET next_link = 'completed', next_link_nc='%s',status = 10 WHERE next_link= '%s'" % (str(link), link) ) db1.commit() except Exception as y: print y
def nicoLogin(r: requests.Session, ud: dict, ip: dict, logg: Logger = None): '''登录Niconico 0 登录成功 1 网络错误 2 登录失败''' global lan reurl = "https://www.nicovideo.jp/" url = "https://account.nicovideo.jp/login?site=niconico&next_url=%2F" try: option = webdriver.ChromeOptions() option.add_argument("disable-logging") option.add_argument('log-level=3') driver = webdriver.Chrome(options=option) if logg is not None: logg.write(f"OEPN {url} in ChromeDriver", currentframe(), "OPEN WEB") driver.get(url) aa = True while aa: time.sleep(1) if driver.current_url == reurl or driver.current_url == reurl[:-1]: aa = False sa = [] for i in driver.get_cookies(): r.cookies.set(i['name'], i['value'], domain=i['domain'], path=i['path']) t = { 'name': i['name'], 'value': i['value'], 'domain': i['domain'], 'path': i['path'] } sa.append(t) driver.close() except: if logg is not None: logg.write(traceback.format_exc(), currentframe(), "CHROME DRIVER FAILED") print(traceback.format_exc()) try: driver = webdriver.Firefox() if logg is not None: logg.write(f"OEPN {url} in FirefoxDriver", currentframe(), "OPEN WEB") driver.get(url) aa = True while aa: time.sleep(1) if driver.current_url == reurl: aa = False sa = [] for i in driver.get_cookies(): r.cookies.set(i['name'], i['value'], domain=i['domain'], path=i['path']) t = { 'name': i['name'], 'value': i['value'], 'domain': i['domain'], 'path': i['path'] } sa.append(t) driver.close() except: if logg is not None: logg.write(traceback.format_exc(), currentframe(), "GECKO DRIVER FAILED") print(traceback.format_exc()) return 2 rr = nicoCheckLogin(r, ud, logg) if rr is True: if 's' not in ip: print(lan['OUTPUT1']) # 登录成功! JSONParser.savecookie(sa, "nico_cookies.json") return 0 elif rr is False: print(lan['ERROR3']) # 网络错误! return 1 else: print(lan['ERROR4'] + str(rr['code']) + "," + str(rr['error_msg'])) # 登录失败: return 2
def login(r, ud: dict, ip: dict, logg=None): '登录至B站' global lan url = "https://passport.bilibili.com/ajax/miniLogin/minilogin" try: option = webdriver.ChromeOptions() option.add_argument("disable-logging") option.add_argument('log-level=3') driver = webdriver.Chrome(options=option) if logg is not None: logg.write(f"OEPN {url} in ChromeDriver", currentframe(), "OPEN WEB") driver.get(url) input('Please login and then press enter in this window...') sa = [] for i in driver.get_cookies(): r.cookies.set(i['name'], i['value'], domain=i['domain'], path=i['path']) t = { 'name': i['name'], 'value': i['value'], 'domain': i['domain'], 'path': i['path'] } sa.append(t) driver.close() except Exception: if logg is not None: logg.write(traceback.format_exc(), currentframe(), "CHROME DRIVER FAILED") print(traceback.format_exc()) try: driver = webdriver.Firefox() if logg is not None: logg.write(f"OEPN {url} in FirefoxDriver", currentframe(), "OPEN WEB") driver.get(url) input('Please login and then press enter in this window...') sa = [] for i in driver.get_cookies(): r.cookies.set(i['name'], i['value'], domain=i['domain'], path=i['path']) t = { 'name': i['name'], 'value': i['value'], 'domain': i['domain'], 'path': i['path'] } sa.append(t) driver.close() except: if logg is not None: logg.write(traceback.format_exc(), currentframe(), "GECKO DRIVER FAILED") print(traceback.format_exc()) print(f"{lan['ERROR1']} {lan['QRCODE']}" ) # 使用ChromeDriver登录发生错误,尝试采用用户名、密码登录 read = login2(r, logg) if read in [-1, -2]: if read == -1: print(lan['ERROR2']) # 登录失败! read = loginwithqrcode(r, logg) if read == -1: print(lan['ERROR2']) # 登录失败! return 2 sa = read rr = tryok(r, ud, logg) if rr is True: if 's' not in ip: print(lan['OUTPUT1']) # 登录成功! JSONParser.savecookie(sa) return 0 elif rr is False: print(lan['ERROR3']) # 网络错误! return 1 else: print(lan['ERROR4'] + str(rr['code']) + "," + str(rr['message'])) # 登录失败: return 2
from command import gopt from inspect import currentframe from json import dumps from os.path import exists, abspath from os import mkdir, remove from random import randint, randrange from urllib.parse import quote_plus, parse_qsl, urlsplit from qrcode import QRCode, constants as qrconst from qrcode.image.svg import SvgImage from platform import system from Logger import Logger from HTMLParser import NicoUserParser from JSParser import getNicoUser lan = None se = JSONParser.loadset() if se == -1 or se == -2: se = {} ip = {} if len(sys.argv) > 1: ip = gopt(sys.argv[1:]) lan = getdict('biliLogin', getlan(se, ip)) def login(r, ud: dict, ip: dict, logg=None): '登录至B站' global lan url = "https://passport.bilibili.com/ajax/miniLogin/minilogin" try: option = webdriver.ChromeOptions() option.add_argument("disable-logging")
def run_dqn(sess, game_env, agent, output_directory, fileName, saver, checkpoint_dir): global current_training, c_steps, total_num_of_training # 1. Initialize replay memory D to capacity N initialize_replay_memory(game_env, agent, sess) # 2.1 Initialize action-value function Q with random weights # 2.2 Initialize target action-value function Q' with weight θ^=θ # happen in agent constructor # 3. for episode = 1, M do while current_training < total_num_of_training: # 4. Initialise sequence s1 = {x1} and preprocessed sequenced φ1 = φ(s1) state = game_env.env.reset() state = agent.nn_img_pre_process.process(sess, state) state = np.stack([state] * 4, axis=2) # shape (84,84,4) score_per_episode = 0 # 5. for t = 1, T do t = 0 for t in range(MAX_STEPS): game_env.env.render() # 6. With probability epsilon select a random action a_t # 7. otherwise select a_t = max_a Q∗(φ(s_t), a; θ) action = agent.get_next_action(sess, game_env.env, state) # 6 + 7 # 8. Execute action a_t in emulator and observe reward r_t and image x_t+1 next_state, reward, done, info = game_env.env.step(action) # 8 next_state = agent.nn_img_pre_process.process(sess, next_state) next_state = np.append(state[:, :, 1:], np.expand_dims(next_state, 2), axis=2) score_per_episode += reward # 10. Store transition (φ_t, a_t, r_t, φ_t+1) in D game_env.store_episode(state, action, reward, next_state, done) # 9. Set s_t+1 = s_t, a_t, x_t+1 and preprocess φ_t+1 = φ(s_t+1) state = next_state # 11. Sample random minibatch of transitions (φ_j , a_j , r_j , φ_j+1) from D mini_batch = game_env.get_random_order_memory() # unzip batch elements states_batch, actions_batch, rewards_batch, next_states_batch, dones_batch = map( np.array, zip(*mini_batch)) # 12. Set y_j = # r_j for terminal φj+1 (if episode terminates at step j+1) # r_j + γ max_a' Q'(φ_j+1, a' ; θ^) for non-terminal φj+1 (otherwise) q_values_next = agent.nn_q_learn.predict(sess, next_states_batch) # Returns the indices of the maximum values along an axis. best_actions = np.argmax(q_values_next, axis=1) q_values_next_target = agent.nn_q_target.predict( sess, next_states_batch) toggle_dones_batch = [] for done in dones_batch: if done: toggle_dones_batch.append(0.0) else: toggle_dones_batch.append(1.0) # np.arange(x) = array([0, 1, 2,...,x-1]) targets_batch = \ rewards_batch + np.array(toggle_dones_batch) * GAMMA \ * q_values_next_target[np.arange(game_env.BATCH_SIZE), best_actions] # 13. Perform a gradient descent step on (y_j − Q(φ_j ,a_j ; θ))^2 according to equation 3 (according theta) states_batch = np.array(states_batch) loss = agent.nn_q_learn.update(sess, states_batch, actions_batch, targets_batch) # decrease epsilon agent.epsilon_decay() # 14. Every C steps reset Q'=Q if c_steps == C_MAX_STEPS: NnTf.reset_q_target(sess, agent.nn_q_learn, agent.nn_q_target) c_steps = 0 c_steps += 1 print("episode", current_training, "steps", t, "reward", score_per_episode, "loss", loss) if done: break # save reward and one per 100 episodes save model if Jp.save_reward(current_training, t, score_per_episode, agent.epsilon, loss, fileName): saver.save(sess, checkpoint_dir + "/myModel") print("episode", current_training, "steps", t, "reward", score_per_episode) current_training += 1 # option to increase num of episodes if current_training == total_num_of_training: print("Enter num > 0 for continue training or 0") temp = 0 while True: try: temp = int(input()) break except ValueError: print("That's not an integer!") continue total_num_of_training += temp
def downsub(r: Session, fn: str, i: dict, ip: dict, se: dict, data: dict, pr: bool = False, pi: int = 1, width: int = None, height: int = None): "下载字幕" log = False logg = None if 'logg' in ip: log = True logg = ip['logg'] oll = None if 'oll' in ip: oll = ip['oll'] ass = False if JSONParser.getset(se, 'ass') is True: ass = True if 'ass' in ip: ass = ip['ass'] global lan fq = spfn(fn)[0] if not ass: fn = f"{fq}.{i['lan']}.srt" else: fn = f"{fq}.{i['lan']}.ass" if log: logg.write(f"ass = {ass}\nfn = {fn}\ni = {i}", currentframe(), "Normal Video Subtitle Download Var") i['fn'] = fn if os.path.exists(fn): fg = False bs = True if 's' in ip: fg = True bs = False if 'y' in se: fg = se['y'] bs = False if 'y' in ip: fg = ip['y'] bs = False while bs: inp = input(f'{lan["INPUT1"]}(y/n)'.replace("<filename>", fn)) # "<filename>"文件已存在,是否覆盖? if len(inp) > 0: if inp[0].lower() == 'y': fg = True bs = False elif inp[0].lower() == 'n': bs = False if fg: try: os.remove('%s' % (fn)) except: if log: logg.write(format_exc(), currentframe(), "Normal Video Subtitle Download Remove File Failed") print(lan['OUTPUT1']) # 删除原有文件失败,跳过下载 return 0 if log: logg.write(f"GET {i['url']}", currentframe(), "Normal Video Subtitle Download Request") re = r.get(i['url']) re.encoding = 'utf8' if log: logg.write(f"status = {re.status_code}\n{re.text}", currentframe(), "Normal Video Subtitle Download Result") re = re.json() if not ass: if assrt(fn, re['body'], logg) == 0: if oll: oll.add(fn) if pr: print(lan['OUTPUT2'].replace('<number>', str(pi)).replace('<languagename>', i['land'])) # 第<number>P<languagename>字幕下载完毕! else: if width is None: width = 1920 if height is None: height = 1080 if asass(fn, re, width, height, logg) == 0: if oll: oll.add(fn) if pr: print(lan['OUTPUT2'].replace('<number>', str(pi)).replace('<languagename>', i['land'])) # 第<number>P<languagename>字幕下载完毕! return 0