Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Radek Ladič
Člen
Avatar
Radek Ladič:4.3.2018 18:21

Dobry chtěl bych se zeptat jakym způsobem bych se mohl prihlasit do hry "darkorbit" tak aby se v programu nezobrazoval celý proces přihlašování ale aby když bych dal login zobrazila by se uz jen mapa,další dotaz lze "minimapu" nějakým zpusobem zvětšit tak aby šla vidět jen ta minimapa ? Jedná se o webbrowser hru

 
Odpovědět
4.3.2018 18:21
Avatar
DHPICO
Tvůrce
Avatar
Odpovídá na Radek Ladič
DHPICO:4.3.2018 18:30

zkoušel jsi hledat, zda mají nějaké věřejné API, které bys mohl volat a urychlit tím proces přihlašování ?

Nahoru Odpovědět
4.3.2018 18:30
Požehnáni budíš oráj
Avatar
Radek Ladič
Člen
Avatar
Odpovídá na DHPICO
Radek Ladič:4.3.2018 18:34

Omlouvám se jsem na cestě s práce a na telefonu hned jak budu doma mrknu na to a dám vědět

 
Nahoru Odpovědět
4.3.2018 18:34
Avatar
Radek Ladič
Člen
Avatar
Radek Ladič:4.3.2018 20:12

Tak veřejné API mají takže toto je vyřešné ale teď otázka lze zvětštit minimapu do maxima ? Viz foto

 
Nahoru Odpovědět
4.3.2018 20:12
Avatar
Radek Ladič
Člen
Avatar
Radek Ladič:4.3.2018 20:46

import re
import xml.etree.Ele­mentTree as ElementTree
import urllib.request, urllib.parse

class HttpLogin:

def __init__(self, username, password, server):
self.username = username
self.password = password
self.server = server

self.userAgent = 'Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9) Gecko/2008060309 Firefox/3.0'
self.basehost = 'darkorbit.big­point.com'

self.opener = urllib.reques­t.build_opener(ur­llib.request.HTTPCo­okieProcessor())
urllib.reques­t.install_ope­ner(self.opener)
self.opener.ad­dheaders = [('User-agent', self.userAgent)]

def makeLogin(self):
# Local $sLogin = _POST("darkor­bit.bigpoint.com", "/?locale=de&a­id=0", "loginForm_de­fault_username=" & $sUser & "&loginForm_de­fault_passwor­d=" & $sPass & "&loginForm_de­fault_login_sub­mit=Login")

source = self.request("http://" + self.basehost + "/?locale=de&a­id=0", {"loginForm_de­fault_username": self.username, "loginForm_de­fault_passwor­d": self.password, "loginForm_de­fault_login_sub­mit": "Login"})

if source.find('clas­s="instanceSe­lectionHeadli­ne">') != -1:
result = self.regex(source, "onclick=.redi­rect\('http://" + self.server + "\.darkorbit\­.bigpoint\.com/([^']*)­'\)")

return self._selectSer­ver("http://" + self.server + ".darkorbit.big­point.com/" + result[0])

def _selectServer(self, url):

source = self.request(url)

if source.find('<div class="userIn­fo_left') != -1:
sidSearch = self.regex(source, "var SID='([^']*)';")
mapSearch = self.regex(source, 'onclick="open­MiniMap\(([0-9]),([0-9]),([0-9]*)\);"')

FlashUrl = "indexInternal­.es?action=in­ternalMapRevo­lution&" + sidSearch[0]

if mapSearch[0][2] != "0":
FlashUrl += "&factionID=" + mapSearch[0][2]

return self._loadFlash("http:­//" + self.server + ".darkorbit.big­point.com/" + FlashUrl)

def _loadFlash(self, url):

source = self.request(url)

print(source)

FlashVars = {}

if source.find('FlashVar­s') != -1:
flashVarsSearch = self.regex(source, "'FlashVars', '([^']*)',")

Pairs = flashVarsSear­ch[0].split("&")

for KeyValuePair in Pairs:
Parts = KeyValuePair.split("=")

if Parts[0] != "" and Parts[1] != "":
FlashVars[Parts[0]] = Parts[1]

# get server ip
xmldoc = self.request("http://" + self.server + ".darkorbit.big­point.com/spa­cemap/xml/map­s.php")

f = open('tmp_dar­korbit.xml', 'w')
f.write(xmldoc)
f.close()

Tree = ElementTree.par­se('tmp_darkor­bit.xml')
TreeRoot = Tree.getroot()
for Entry in TreeRoot.getchil­dren():
if Entry.get('id') == FlashVars["mapID"]:
ip = Entry.find('ga­meserverIP').text

FlashVars["ser­verIP"] = ip

return FlashVars

def regex(self, source, expr):
compiled = re.compile(expr)
result = compiled.finda­ll(source)
return result

def request(self, url, params={}):

if len(params) != 0:
req = urllib.parse.ur­lencode(param­s).encode('utf-8')
sock = self.opener.o­pen(url, req)
else:
sock = self.opener.o­pen(url)

data = sock.read().de­code('utf-8')
sock.close()

return data

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
4.3.2018 20:46
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.