Új hozzászólás Aktív témák
-
Hege1234
addikt
programozás topikból folytatás
röviden .txt fájlból elérési utat a data rész-be illeszteniimport requests
import time
import os
import webbrowser
file = open("c:\kodi\save.txt")
lines = file.readlines()
line = lines[1]
os.startfile("c:\Program Files\Kodi2\kodi.exe")
from pynput.keyboard import Key, Controller as K
time.sleep(2)
K().type(line+' ')
file = open("c:\kodi\save.txt")
lines2 = file.readlines()
url = lines2[0]
headers = {
'Content-Type': 'application/json',
}
data = data = {"jsonrpc":"2.0","method":"Player.Open","params":{"item":{"file": url}}}
requests.post('http://kodi:kodi@192.168.1.10:8080/jsonrpc?Base', headers = headers, json = data).txt
smb://192.168.1.10/e filmek/---==Szinkronos==---/@.mkv
nem tudom, hogyan kell kiprintelni a hibákat így most csak simán beillesztettem ami a .py fájlban van
>>> import requests
>>> import time
>>> import os
>>> import webbrowser
>>>
>>> file = open("c:\kodi\save.txt")
>>> lines = file.readlines()
>>> line = lines[1]
>>>
>>> os.startfile("c:\Program Files\Kodi2\kodi.exe")
>>> from pynput.keyboard import Key, Controller as K
>>> time.sleep(2)
>>> K().type(line+' ')
>>>
>>> file = open("c:\kodi\save.txt")
>>> lines2 = file.readlines()
>>> url = lines2[0]
>>>
>>> headers = {
... 'Content-Type': 'application/json',
... }
>>>
>>> data = data = {"jsonrpc":"2.0","method":"Player.Open","params":{"item":{"file": url}}}
>>> requests.post('http://kodi:kodi@192.168.1.10:8080/jsonrpc?Base', headers = headers, json = data)kodi log
kodi áttért a python3-ra a fenti kód mennyire lehet kompatibilis vele?[ Szerkesztve ]
-
Hege1234
addikt
válasz Hege1234 #3102 üzenetére
upsz elfelejtettem entert nyomni
amit bemásoltam python-ba ez a folytatása
a kodi-ban nincs pynput ezért azt bemásoltam mappástól úgy már felismerte
ugyan ezt próbáltam a requests-el is ez lehet nem volt jó ötlet..
addig minden jól működik amíg az url string helyett elérési utat adok megTraceback (most recent call last):
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 597, in urlopen
httplib_response = self._make_request(conn, method, url,
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "<string>", line 2, in raise_from
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 1345, in getresponse
response.begin()
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 307, in begin
version, status, reason = self._read_status()
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 276, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:\kodi\requests\adapters.py", line 439, in send
resp = conn.urlopen(
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 637, in urlopen
retries = retries.increment(method, url, error=e, _pool=self,
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\util\retry.py", line 368, in increment
raise six.reraise(type(error), error, _stacktrace)
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\packages\six.py", line 685, in reraise
raise value.with_traceback(tb)
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 597, in urlopen
httplib_response = self._make_request(conn, method, url,
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "<string>", line 2, in raise_from
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 1345, in getresponse
response.begin()
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 307, in begin
version, status, reason = self._read_status()
File "C:\Users\hadam\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 276, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\kodi\requests\api.py", line 119, in post
return request('post', url, data=data, json=json, **kwargs)
File "c:\kodi\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "c:\kodi\requests\sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "c:\kodi\requests\sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "c:\kodi\requests\adapters.py", line 498, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')) -
sztanozs
veterán
válasz Hege1234 #3103 üzenetére
Hogy néz ki a save.txt?
import requests
import os
from pynput.keyboard import Key, Controller as K
file = open("c:\kodi\save.txt")
lines = file.readlines()
line = lines[1]
os.startfile("c:\Program Files\Kodi2\kodi.exe")
time.sleep(2)
K().type(line+' ')
file = open("c:\kodi\save.txt")
lines2 = file.readlines()
url = lines2[0]
headers = { 'Content-Type': 'application/json' }
json = {"jsonrpc":"2.0","method":"Player.Open","params":{"item":{"file": url}}}
requests.post('http://kodi:kodi@192.168.1.10:8080/jsonrpc?Base', headers= headers, data= str(json))És ez a rész minek kell?
K().type(line+' ')
Amúgy a request-es rész csak akkor működik, ha engedélyezed a kodiban a http-n keresztüli távoli vezérlést.
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
JoinR
senior tag
válasz Hege1234 #3102 üzenetére
data = data = {...}
helyettdata = {...}
elég. Egyprint(url)
vagyprint(data)
sorral ki tudnád írni a tartalmat, hogy tuti jó-e amit beküldesz.
Nem ismerem a Kodit, úgyhogy lehet hülye kérdés, de ha ezt a kódot a gépedről futtatod, akkor minek oda másolgatni bármilyen modult? A kodi csak egy http post request-et fog látni, mindegy, az már az ő dolga, hogyan dolgozza fel.[ Szerkesztve ]
-
sztanozs
veterán
válasz Hege1234 #3103 üzenetére
Kodi RPC engedélyezése:
https://www.tinymediamanager.org/blog/kodi-json-rpc-api/JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
-
Hege1234
addikt
van egy save verzió is amivel mentem, hogy hol tart a film
ezzel amit bemásoltam pedig vissza tudom állítani a poziciót, hogy hol tartott a film
mert ha végigmegy és leáll akkor már látottként jelöli meg (ez akkor jó ha bealudnék egy filmen vagy több órás vod nézésénél csak rányomok a távirányítón arra a gombra ami lementi a poziciót, menüböl meg elérem azt amit bemásoltam + ezt is hozzáadtam egy gombhoz)azt hiszem ez belőle a lényeg
>>> print(url)
smb://192.168.1.10/e filmek/---==Szinkronos==---/Nobody.2021.720p.BluRay.DD5.1.x264.HuN-No1/nobody.720p-no1.mkv
>>> print(data)
{'jsonrpc': '2.0', 'method': 'Player.Open', 'params': {'item': {'file': 'smb://192.168.1.10/e filmek/---==Szinkronos==---/Nobody.2021.720p.BluRay.DD5.1.x264.HuN-No1/nobody.720p-no1.mkv\n'}}} -
Hege1234
addikt
válasz sztanozs #3108 üzenetére
ez mind engedélyezve is van, ha beleírom ezt így működik
{"jsonrpc":"2.0","method":"Player.Open","params":{"item":{"file":"smb://192.168.1.10/e filmek/---==Szinkronos==---/Nobody.2021.720p.BluRay.DD5.1.x264.HuN-No1/nobody.720p-no1.mkv"}}}
odaugrik a 00:36:56 hoz és nyom egy entert hogy valóban oda is ugorjon, ha nincs enter akkor csak eltűnik ami be lett pötyögve
ez nem az új sort jelenti? \n
[ Szerkesztve ]
-
Hege1234
addikt
ohh most értettem meg amit kérdeztél
ezt a kodi kezeli azért kellett a pynput-ot is beleraknom a mappábaRunScript("c:\kodi\load-pos.py")
ha csak a gépről futtatnám akkor + ablakok is megjelennek ilyen volt az első változatban
ezért tértem át pythonra mivel a kodiban fut le így nincsen felugró ablak -
-
Hege1234
addikt
ez így tökéletes
\n ez tett be mindennek...sokat tanultam ma, köszönöm szépen a kitartást és segítséget!
JoinR, sztanozs -
Hege1234
addikt
Hali
mi okozhatja azt, hogy a result-al nem látom a data első részét? (time)
ezzel szűrveprint (resp['result']['item']['file'])
szépen megkapom az elérési utat de a "time" részt nem tudom elérniprint (resp['result']['time']['hours'])
print (resp['result']['time']['minutes'])
print (resp['result']['time']['seconds'])>>> import json
>>> import base64
>>> from urllib.request import Request, urlopen
>>>
>>> credentials = b'kodi:kodi'
>>> encoded_credentials = base64.b64encode(credentials)
>>> authorization = b'Basic ' + encoded_credentials
>>>
>>> headers = { 'Content-Type': 'application/json', 'Authorization': authorization }
>>> url = 'http://192.168.1.10:8080/jsonrpc?Base'
>>> data = [{"jsonrpc":"2.0","method":"Player.GetProperties","params":[1,["time"]],"id":17},{"jsonrpc":"2.0","method":"Player.GetItem","params":[1,["file"]],"id":18}]
>>>
>>> json_data = json.dumps(data)
>>> post_data = json_data.encode('utf-8')
>>> request = Request(url, post_data, headers)
>>> result = urlopen(request)
>>> print(result.read())
b'[{"id":17,"jsonrpc":"2.0","result":{"time":{"hours":0,"milliseconds":416,"minutes":52,"seconds":59}}},{"id":18,"jsonrpc":"2.0","result":{"item":{"file":"smb://192.168.1.10/n filmek 720p/@.mkv","id":340,"label":"The Expendables 3","type":"movie"}}}]'
>>>
>>> print (resp['result'])
{'item': {'file': 'smb://192.168.1.10/n filmek 720p/@.mkv', 'id': 340, 'label': 'The Expendables 3', 'type': 'movie'}} -
sztanozs
veterán
válasz Hege1234 #3114 üzenetére
Hogyan került bele a resp-be a result? az nem látszik a kódból...
mondjuk urllib helyett requests modult használnék:import json
import base64
import requests
credentials = b'kodi:kodi'
encoded_credentials = base64.b64encode(credentials)
authorization = b'Basic ' + encoded_credentials
headers = { 'Content-Type': 'application/json', 'Authorization': authorization }
url = 'http://192.168.1.10:8080/jsonrpc?Base'
data = [
{"jsonrpc":"2.0","method":"Player.GetProperties","params":[1,["time"]],"id":17},
{"jsonrpc":"2.0","method":"Player.GetItem","params":[1,["file"]],"id":18}]
response = requests.post(url, headers=headers, data=json.dumps(data))
# vagy
# response = requests.post(url, headers=headers, json=data)
result = response.json()
print(result)JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Hege1234
addikt
válasz sztanozs #3115 üzenetére
köszi, a requests modullal is megkapom a választ!
Hogyan került bele a resp-be a result? az nem látszik a kódból...
ha jól értem a kérdést akkor azt a szervertől kapom vissza?hogyan lehetne ezt még tovább szűrni?
a print(result) ezt adja vissza:
[{'id': 17, 'jsonrpc': '2.0', 'result': {'time': {'hours': 0, 'milliseconds': 416, 'minutes': 52, 'seconds': 59}}}, {'id': 18, 'jsonrpc': '2.0', 'result': {'item': {'file': 'smb://192.168.1.10/n filmek 720p/@.mkv', 'id': 340, 'label': 'The Expendables 3', 'type': 'movie'}}}]
az átláthatóság kedvéért megformáztam kézzel
[
{
"id": 17,
"jsonrpc": "2.0",
"result": {
"time": {
"hours": 0,
"milliseconds": 416,
"minutes": 52,
"seconds": 59
}
}
},
{
"id": 18,
"jsonrpc": "2.0",
"result": {
"item": {
"file": "smb://192.168.1.10/n filmek 720p/@.mkv",
"id": 340,
"label": "The Expendables 3",
"type": "movie"
}
}
}
]print (resp['result']['item']['file'])
smb://192.168.1.10/n filmek 720p/@.mkvde ha pl a "hours" -t szeretném akkor már ezt kapom vissza:
print (resp['result']['time']['hours'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'time'egyébként a célom az lenne hogy így szerepeljenek egy .txt fájlban
smb://192.168.1.10/n filmek 720p/@.mkv
0
52
59ahogy kigondoltam ez valahogy így nézne ki
print (resp['result']['item']['file'])
print (resp['result']['time']['hours'])
print (resp['result']['time']['minutes'])
print (resp['result']['time']['seconds'])majd a számokat a 2. sorba egybefűzni és ha valamelyik értéknél csak egy szám van mindig kerüljön elé egy 0
smb://192.168.1.10/n filmek 720p/@.mkv
005259ilyen lehetséges python-ban?
-
JoinR
senior tag
válasz Hege1234 #3116 üzenetére
Nem konzisztens, amit írsz; keverjük a result és resp változót.
Ha aprint(result)
az egy lista, ahogy itt írod, akkor csak integerrel tudsz hivatkozni (pl.result[0]
) egy adott elemére. Viszont a resp-es kódrészletben meg key-re hivatkozol (resp['result']
), mivel ott már a beágyazott dict-be kerülsz valahogy.Ha a result egy dict-ek listája, akkor meg kell keresned, hogy melyik elemében (azaz melyik dict-ben) van
time
key és melyikbenitem
key.
Pl:result = [{"id":17,"jsonrpc":"2.0","result":{"time":{"hours":0,"milliseconds":416,"minutes":52,"seconds":59}}},
{"id":18,"jsonrpc":"2.0","result":{"item":{"file":"smb://192.168.1.10/n filmek 720p/@.mkv","id":340,"label":"The Expendables 3","type":"movie"}}}]
for i in result:
if i['result'].get('time'):
mytime = i['result']['time']
if i['result'].get('item'):
myfile = i['result']['item']['file']
print(mytime)
print(myfile)
[ Szerkesztve ]
-
sztanozs
veterán
válasz Hege1234 #3116 üzenetére
Igen, ahogy a kolléga is írja a visszaadott jon egy lista [ ], amiben dictionary-k vannak { }
A listán végig-iterálva szépen meg tudod nézni, hogy mi van bennük.Amúgy mivel az elküldött data is két elemet tartalmaz, így láthatóan erre a két elemre kapsz választ a response-ban. Szerintem, ha a kérésben megadsz "id":valami_egyedi_szám mezőt is, akkor a válaszokat ehhez hozzá tudod majd kötni.
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Hege1234
addikt
köszi pár órával ezelőtt kezdtem bele hogyan is lehetne megoldani még keverem minek mi a pontos neve és jelentősége
>>> import json
>>> import base64
>>> import requests
>>>
>>> credentials = b'kodi:kodi'
>>> encoded_credentials = base64.b64encode(credentials)
>>> authorization = b'Basic ' + encoded_credentials
>>> headers = { 'Content-Type': 'application/json', 'Authorization': authorization }
>>> url = 'http://192.168.1.10:8080/jsonrpc?Base'
>>> data = [
... {"jsonrpc":"2.0","method":"Player.GetProperties","params":[1,["time"]],"id":17},
... {"jsonrpc":"2.0","method":"Player.GetItem","params":[1,["file"]],"id":18}]
>>> response = requests.post(url, headers=headers, data=json.dumps(data))
>>> result = response.json()
>>>
>>>
>>>
>>> print(result[0])
{'id': 17, 'jsonrpc': '2.0', 'result': {'time': {'hours': 0, 'milliseconds': 416, 'minutes': 52, 'seconds': 59}}}
>>>
>>>
>>>
>>> print(result[1])
{'id': 18, 'jsonrpc': '2.0', 'result': {'item': {'file': 'smb://192.168.1.10/n filmek 720p/@.mkv', 'id': 340, 'label': 'The Expendables 3', 'type': 'movie'}}}
>>>
>>>ez alapján akkor kiderült, hogy a [0]-ban van a time és [1]-esben pedig az item
amit példának írtál szerintem azt valahogy rosszul használom
>>> import json
>>> import base64
>>> import requests
>>>
>>> credentials = b'kodi:kodi'
>>> encoded_credentials = base64.b64encode(credentials)
>>> authorization = b'Basic ' + encoded_credentials
>>> headers = { 'Content-Type': 'application/json', 'Authorization': authorization }
>>> url = 'http://192.168.1.10:8080/jsonrpc?Base'
>>> data = [
... {"jsonrpc":"2.0","method":"Player.GetProperties","params":[1,["time"]],"id":17},
... {"jsonrpc":"2.0","method":"Player.GetItem","params":[1,["file"]],"id":18}]
>>> response = requests.post(url, headers=headers, data=json.dumps(data))
>>> result = response.json()
>>> print(result)
[{'id': 17, 'jsonrpc': '2.0', 'result': {'time': {'hours': 0, 'milliseconds': 416, 'minutes': 52, 'seconds': 59}}}, {'id': 18, 'jsonrpc': '2.0', 'result': {'item': {'file': 'smb://192.168.1.10/n filmek 720p/@.mkv', 'id': 340, 'label': 'The Expendables 3', 'type': 'movie'}}}]
>>> for i in result:
... if i['result'].get('time'):
... mytime = i['result']['time']
... if i['result'].get('item'):
... myfile = i['result']['item']['file']
... print(mytime)
File "<stdin>", line 6
print(mytime)
^
SyntaxError: invalid syntax
>>> print(myfile)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'myfile' is not defined -
sztanozs
veterán
válasz Hege1234 #3119 üzenetére
használj valami kódszerkesztőt vagy IDE-t szerintem, interaktív módban nem túl vidám a python: Atom, Visual Studio Code, PyCharm
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Hege1234
addikt
azt egyébként még mindig nem értem, ha a result csak [0] és [1] -et fogad és mást nem írhatok bele
pl : print(result[0])
ezzel sehogy nem fogom a "minutes" értékét (52) megkapni
mit kellene helyette használnom?sztanozs: notepad++ ból szoktam a terminálba behúzni az egész scriptet
annyira nem gáz, a pycharm amúgy teccik azt lehet majd felrakom -
-
Hege1234
addikt
válasz sztanozs #3122 üzenetére
áhhháá köszi
egybe tettem az egészet ami kell
print(result[1]['result']['item']['file'],result[0]['result']['time']['hours'],result[0]['result']['time']['minutes'],result[0]['result']['time']['seconds'])
ezzel most így néz ki
smb://192.168.1.10/n filmek 720p/@.mkv 0 52 49
print részbe a file után lehet esetleg szúrni valahogy egy új sort?
ezzel próbálkoztam de nem sikerült '\n' -
Hege1234
addikt
köszi ezzel ismét közelebb kerültem a célhoz
print(result[1]['result']['item']['file']+'\n',result[0]['result']['time']['hours'],result[0]['result']['time']['minutes'],result[0]['result']['time']['seconds'])
sikerült új sorba tenni de belekerül egy space is az elejére amivel lehet lesz baj a későbbiekben
most már csak azt kellene elérni hogy a 2. sorba került
számok ha a szám 0-9 akkor mindig kerüljön elé egy 0 és össze legyenek húzva
majd ezt elmenteni egy txt fájlba0 52 49
00524902 09 11
02091101 25 07
012507 -
cousin333
addikt
válasz Hege1234 #3125 üzenetére
No offense, de ez így kissé gányolásnak tűnik az elemek egyesével történő kiírásával.
A helyedben megnézném beépített a datetime modult: [link]
A kiolvasott időadatokból készítenék egy datetime objektumot, majd, közvetlenül kiírás előtt megformáznám a time.strftime() függvénnyel.A lényeg, hogy a beolvasott adatokat valami kulturált belső objektumban tárolnám, és azt dolgoznám fel, írnám ki. Javaslom például a pandas modult. Van read_json() metódusa is, bár én még azt nem használtam.
"We spared no expense"
-
sztanozs
veterán
válasz Hege1234 #3123 üzenetére
h,m,s = map(int, [result[0]['result']['time'][val] for val in ['hours','minutes','seconds']])
time = f'{h:02}{m:02}{d:02}'
print(result[1]['result']['item']['file'],time, sep='\n')
# fájlba menteni
with open('filenév.txt', 'w') as outfile:
outfile.write(time)[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
-
sztanozs
veterán
-
cousin333
addikt
válasz Hege1234 #3127 üzenetére
Lényegét tekintve ennyi:
import datetime
t = datetime.time(hour=result[0]['result']['time']['hours'], minute=result[0]['result']['time']['minutes'], second=result[0]['result']['time']['seconds'])
print(t.strftime("%H %M %S"))
Ha az elemek nevei nem lennének többesszámban (hours) még egyszerűbb lenne a dolog:
t = datetime.time(**result[0]['result']['time'])
[ Szerkesztve ]
"We spared no expense"
-
Hege1234
addikt
válasz sztanozs #3131 üzenetére
amit kapok terminálba az úgy tökéletes!
amikor txt-be menteném ott már csak a szám szerepel és a link nemimport json
import base64
import requests
credentials = b'kodi:kodi'
encoded_credentials = base64.b64encode(credentials)
authorization = b'Basic ' + encoded_credentials
headers = { 'Content-Type': 'application/json', 'Authorization': authorization }
url = 'http://192.168.1.10:8080/jsonrpc?Base'
data = [
{"jsonrpc":"2.0","method":"Player.GetProperties","params":[1,["time"]],"id":17},
{"jsonrpc":"2.0","method":"Player.GetItem","params":[1,["file"]],"id":18}]
response = requests.post(url, headers=headers, data=json.dumps(data))
result = response.json()
h,m,s = map(int, [result[0]['result']['time'][val] for val in ['hours','minutes','seconds']])
time = f'{h:02}{m:02}{s:02}'
print(result[1]['result']['item']['file'],time, sep='\n')
smb://192.168.1.10/n filmek 720p/@.mkv
012456with open('c:\\kodi\\info.txt', 'w') as outfile:
outfile.write(time)itt próbáltam a time-hoz még hozzáírni a "file"-t
így de az úgy nem működikwith open('c:\\kodi\\info.txt', 'w') as outfile:
outfile.write(result[1]['result']['item']['file'],time))[ Szerkesztve ]
-
sztanozs
veterán
válasz Hege1234 #3133 üzenetére
mondjuk nem ártana egy python gyorstalpalót lenyomnod, szvsz már rég meg tudtad volna csinálni magadtól, ha végigtolsz egy 2-3 órás python-alapok videót...
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Hege1234
addikt
print(result[1]['result']['item']['file'],time,result[1]['result']['item']['label'], '------------', sep='\n', file=open("c:\\kodi\\save.txt", "a+"))
smb://192.168.1.10/@.mkv
004741
The Mitchells vs. The Machines
------------
smb://192.168.1.10/@.mkv
000541
Childrick of Mort
------------az "a+" -helyett melyik az ami nem a végére ír hanem az elejére?
a "w+" hasznos lenne csak az felül is írja az egész fájlt
a seek(0) -t lehet valahogy használni a print részbe?sztanozs: igen, az tényleg jó lenne ha lenne olyan amiben egy témában benne van minden részlet de általában a videó végére az szokott lenni, hogy mindenről volt szó csak arról nem amihez nekem kellet volna.
-
Hege1234
addikt
válasz Hege1234 #3137 üzenetére
with open('c:\\kodi\\save.txt', 'a+') as outfile:
outfile.write(result[1]['result']['item']['file']+'\n'+time+'\n'+result[1]['result']['item']['label']+'\n'+'----------'+'\n')
outfile.seek(0)futtatás után a seek(0) miatt nem úgy kellene működnie, hogy az új 4 sor a fájl elejére kerüljön és ne végére?
-
-
válasz cousin333 #3139 üzenetére
Én sem tudok olyan fájlrendszerről, ami tudna prependet. Simán beolvasnám az egész fájl tartalmát memóriába ha ilyen kéne egy read()-del, aztán hozzáfűzném az új adatot sima concattal "uj_sorok + fajl_tartalma", majd ezt írnám ki az eredeti fájl helyére.
Hogy hívják az éhes horgászt? Gyere Pista, kész a kaja!
-
Hege1234
addikt
köszönöm a tanácsokat délután lesz vele időm foglalkozni
amiket írtatok ezek szerint jobban át kell gondolnom hogyan is kellene megoldaniha egy példával kellene akkor talán úgy nézne ki mint egy todo list
csak itt az átlag 1 soros todo list helyett 4 sort írna egyszerre mindiga fájl minden sorát megtartva csak az elejére mindig 4 sor kerülne
az "r+" azért nem jó mivel azzal a már meglévő sorokhoz nem ír pluszban hozzá
hanem csak mindig az elejére írja -
Hege1234
addikt
outfile.seek(-1) kipróbálom majd köszi
nem csak pár sort kellett volna beszúrnom ez igaz
délután leírok mindent azt is ami "értelmezi" a txt fájlt -
sztanozs
veterán
válasz Hege1234 #3144 üzenetére
beszúrást nem tud, ahogy a többiek is írták:
- file megnyit olvsásra, beolvas sztringbe, bezár
- file megnyit írásra, beleírod az elejét, visszaírod a beolvasottat, bezár
https://stackoverflow.com/questions/4454298/prepend-a-line-to-an-existing-file-in-pythonAmúgy még mindig tartom magam az előző véleményemhez - egyáltalán nem bántásból -, de ha olyan kérdések merülnek fel, hogy miért nem ír ki valmit, amikor nem rakod bele print-be vagy write-ba a változót, akkor még csiszolj kicsit az alapokon.
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Hege1234
addikt
válasz sztanozs #3145 üzenetére
#3145 sztanozs:
köszönöm ami a linkben van az úgy tökéletes és a kodi se találta hibásnak!import json
import base64
import requests
import xbmc
credentials = b'kodi:kodi'
encoded_credentials = base64.b64encode(credentials)
authorization = b'Basic ' + encoded_credentials
headers = { 'Content-Type': 'application/json', 'Authorization': authorization }
url = 'http://192.168.1.10:8080/jsonrpc?Base'
data = [
{"jsonrpc":"2.0","method":"Player.GetProperties","params":[1,["time"]],"id":17},
{"jsonrpc":"2.0","method":"Player.GetItem","params":[1,["file"]],"id":18}]
response = requests.post(url, headers=headers, data=json.dumps(data))
result = response.json()
h,m,s = map(int, [result[0]['result']['time'][val] for val in ['hours','minutes','seconds']])
time = f'{h:02}{m:02}{s:02}'
with open('c:\\kodi\\save.txt', 'r') as original: data = original.read()
with open('c:\\kodi\\save.txt', 'w') as modified: modified.write(result[1]['result']['item']['file']+'\n'+time+'\n'+result[1]['result']['item']['label']+'\n'+'----------'+'\n' + data)
xbmc.executebuiltin('Action(CreateBookmark)')megfogadom a tanácsod még magyarul is találtam oktatóanyagokat
#3148 v.hulladék
egyébként miért ördögtől való az, hogy a fájl elejére szeretnék írni?