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)
Esempio n. 2
0
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 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)
Esempio n. 7
0
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
Esempio n. 8
0
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
Esempio n. 9
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
Esempio n. 12
0
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
Esempio n. 13
0
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
Esempio n. 14
0
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
Esempio n. 16
0
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