Új hozzászólás Aktív témák
-
válasz
Hege1234
#3840
üzenetére
>>> value6=True>>> f"{['nincs','van'][value6]} Magyar szinkron"'van Magyar szinkron'>>> value6=False>>> f"{['nincs','van'][value6]} Magyar szinkron"'nincs Magyar szinkron'
igy egyben:
out = f'{value1} - S{value2}E{value3} |{kek+["nincs","van"][value6]} Magyar szinkron|{zold+"|Magyar felirat|"*value5}{sarga+"|Magyar forced|"*value7+feher}{sarga+"|Magyar forced|"*value7+feher}{"|"+value8+"|"} {value4}' -
válasz
Hege1234
#3838
üzenetére
value5 = any(a.value.lower().split()[0] in "hunmagyar" for a in list5)
persze ez meg mindig nem talaja meg a forced - hun es ehhez hasonlo dolgokat (ahol nem az elso szo a hu vagy hun vagy magyar
esetlegvalue5 = any(any("hunmagyar".__contains__, a.value.lower().split()) for a in list5) -
válasz
sztanozs
#3832
üzenetére
Nem tudtam mar letesztelni, vsz a maradek jsont adja vissza, igy esetleg?
jsonpath_expression0 = parse('[*].data.DmcEpisodes.videos[*]')for match0 in jsonpath_expression0.find(myresponses):value = match0.valuevalue1 = parse(f'text.title.full.series.default.content').find(value)[0].valuevalue2 = parse(f'seasonSequenceNumber').find(value)[0].valuevalue3 = parse(f'episodeSequenceNumber').find(value)[0].valuevalue4 = parse(f'text.title.full.program.default.content').find(value)[0].valuelist5 = parse(f'mediaMetadata.captions[*].renditionName').find(value)value5 = any(a.value.lower().split()in("hunmagyar")for a in list5)print(f'{value1} - S{value2}E{value3} - {value4}{" |Magyar felirat|"*value5}') -
Ez esetleg?
jsonpath_expression0 = parse('[*].data.DmcEpisodes.videos[*]')for match0 in jsonpath_expression0.find(myresponses):
full_path=str(match0.full_path)
value = match0.value
value1 = parse(f'{full_path}.text.title.full.series.default.content').find(value)[0].value
value2 = parse(f'{full_path}.seasonSequenceNumber').find(value)[0].value
value3 = parse(f'{full_path}.episodeSequenceNumber').find(value)[0].value
value4 = parse(f'{full_path}.text.title.full.program.default.content').find(value)[0].value
list5 = parse(f'{full_path}.mediaMetadata.captions[*].renditionName').find(value)
value5 = any(a.value.lower()in("hunmagyar")for a in list5)
print(f'{value1} - S{value2}E{value3} - {value4}{" |Magyar felirat|"*value5}') -
válasz
Hege1234
#3826
üzenetére
Dobj fel valahova egy json forrast, este megprobalok ranezni.
mod1: btw az
in (*args)csak pontos talaltra ad eredmenyt, nem regex.
mod2: a in("dsfgdfgh") szetszedi a sztringet, tehat valojaban ezt csinalja:in("d","s","f","g","d","f","g","h")bar, ahogy nezem 3.10 mintha mashogy csinalna...
esetleg ez:{zold+" |Magyar felirat|"*any(a.lower().split()[0]in"hunmagyar"for a in match5.value)} -
válasz
Hege1234
#3823
üzenetére
for match1,match2,match3,match4,match5 in zip(jsonpath_expression1.find(my_responses),jsonpath_expression2.find(my_responses),jsonpath_expression3.find(my_responses),jsonpath_expression4.find(my_responses),jsonpath_expression5.find(my_responses))):
print(f'{match1.value} - S{match2.value}E{match3.value} - {match4.value}{" - Magyar"*any(a.lower()in("hu","hun","magyar")for a in match5.value)}') -
-
Asszem com port sniffing nem lehetseges, hacsak nem egy kifejezetten olyan hardvert hasznalsz, ami ezt tamogatja (masik csatornan).
Ami meg lehetseges lehet, hogy letrehozol virtualis com portokat es csinlasz egy programot, ami a virtualis es fizikai com portok kozott tolja at az adatokat es azokat logolod: [link]
A programban, pedig amit sniffelni akarsz atallitod a fizikai COM portokrol a forgalmat a virtualisakra.
-
-
-
válasz
Hege1234
#3766
üzenetére
Regex nem rak sorba, a pipe csak egy egyszeru OR operator, minden egyezest felkap.
ha sorban akarod feltolteni a listat, akkor csinalj egy listata a regexekkel es ciklusban toltsd be a talalatokat a vegso listaba.hd = open("hd-links.txt").read()
sorted_rex = [r".*1080p.*dash.*|.*dash.*1080p.*", r".*720p.*dash.*|.*dash.*720p.*", r".*hd_dash.*", r".*sd_dash.*|.*dash.*540p.*|.*540p.*dash.*"]
sorted_list = []
for rex in sorted_rex:
sorted_list += re.findall(rex, hd)
hd_link = sorted_list[0]
print('1080p \ 720p \ 540p: \n'+hd_link)
print(hd_link, file=open("dash.txt", "w")) -
válasz
MasterMark
#3761
üzenetére
Ott kell lefutnia ahol van…
viszont a pythonban nincs normalis szalkezeles, tehat az eredmeny nem biztos hogy olyan lesz ahogy elkepzeles. -
válasz
Hege1234
#3742
üzenetére
gyakorlatban nalam:
>>> filename
'c:\\temp\\a.jpg'
>>> date.fromtimestamp(os.path.getmtime(filename))
datetime.date(2018, 11, 21)
>>> date.fromtimestamp(os.path.getctime(filename))
datetime.date(2022, 10, 2)Persze jobban belegondolva valos a kiirt datum, hiszen a faj regi, de csak nemreg masoltam at egy masik geprol. Tehet ebben a konyvtarban ekkor lett letrehozva a fajl, de utoljara modositva sokkal korabban volt...
-
válasz
Hege1234
#3740
üzenetére
Nekem a getctime valami hulyeseget ad vissza...
getctime(filename)
Return the metadata change time of a file, reported by os.stat().
Ez biztos nem a creation time...tobb, mint 5 napos torles:
delete_this = glob.glob(filename)
today = date.today()
for f in delete_this:
if (today - date.fromtimestamp(os.path.getmtime(f)).days > 5:
os.remove(f) -
válasz
stellaz
#3730
üzenetére
Oh, kell a darabszam is?
from random import randintszamok = [randint(1,12) for i in range(20)]harommal_oszthato = [i for i in szamok if i%3 == 0]# vagy# harommal_oszthato = [*filter(lambda i: i%3 == 0, szamok)]print(f'{len(harommal_oszthato)} harommal oszthato szam volt:', *harommal_oszthato) -
válasz
stellaz
#3726
üzenetére
majdnem jo, csak az import kell kulon sorba
import randomfor i in range(20):szam = random.randint(1, 12)if szam % 3 == 0:print(szam)Ja, es hasznalj kodformazast
tomorebben kb igy:
from random import randint[print(i) for i in randint(1,12) if i%3 == 0]vagy ha egysoros kell

[print(i)for i in __import__('random').randint(1,12)if i%3<1] -
válasz
jerry311
#3715
üzenetére
1) en a payload logolast elorebb hoznam, lehet hogy azzal lesz a gond.
2) Illetve megneznem, hoggy tennyleg be tudja-e tolteni rendesen requests modul-t,
3) az except logolasban kiiratnam az aktualis kivetelt is:
except Exception as e:logging.critical(e)# vagylogging.critical(e, exc_info=True)
4) elsore (negyedikre) SSL problemanak tunik, probald meg kikapcsolni az SSL ellenorzest (vagy lecsekkolni, hogy a root profile alatt honnan akarja betolteni a certificate store-t). Ha ez lesz a gond akkor
a) frissitsd/telepitsd fel a root profile alatt a certifi modult; vagy
b) add hozza a szerver CA-t a ca store-hoz kezzel; vagy
c) "kezzel" allitsd be a cert file-t a keresnel. -
válasz
Hege1234
#3688
üzenetére
import glob
import os
currentFile = __file__
realPath = os.path.realpath(currentFile)
dirPath = os.path.dirname(realPath)
dirName = os.path.basename(dirPath)
video = dirPath + glob.glob('/files/0vid*.mp4')[0]
audio = dirPath + glob.glob('/files/0vid*.m4a')[0]
# vagy kézzel...
videoout = dirPath + glob.glob('/files/1videoO*.mp4')[0]
audioout = dirPath + glob.glob('/files/1audioO*.m4a')[0]ha nincs létrehozva már a kért kimeneti fájl, akkor kézzel kel legyártani a helyes path-t a glob nem lesz jó.
-
válasz
Bjørgersson
#3649
üzenetére
A globals() függvény által viasszaadott objektum (dict) tartalmazza a futtatókörnyezet globális változóit (beleértve a betöltött modulokat és azok változóit is).
Érdemes óvatosan piszkálni, mert ha már létezik azonos néven változó/függvény/objektum, akkor simán felülcsaphatod. -
Projektet kétféleképp lehet létrehozni PyCharmban:
- New Environment
-> itt a TKinternek mindenféleképp kell valami külön machináció, kivéve, ha bekattintod az [Inherit global site-packages] opciót
- Previously configured interpreter
-> itt megadhatsz egy korábban már bekonfigurált VENV-et (ha publikussá tetted korábban), de akár az alap interpretert is (ezzel vsz nem lesz gondod)Ha módosítani akarod a venv környezetet, akkor a
projekt\venv\Scripts\könyvtárban azactivate.*fájlokat kell szerkeszteni (OS-től függően). -
Gondolom mert a tkinternek vannak OS dependenciái, és a dependenciák frissítése elcseszi a csomagot. Két lehetőség van a megoldásra (kb 2 perc google után):
1. rendszercsomagok közé feltelepíteni a TKinter-t és a venv-et a --system-site-packages kapcsolóval létrehozni (ven ennek megfelelő UI kapcsolója PyCharm-ban)
2. módosítani a venv futtatót, hogy a TKinter foldert adja hozzá a referenciákhoz: [link] -
Visual Studiora (nem Code) gondoltam - de látom, hogy linuxot használsz, szóval asszem oda felejtős.
Amúgy nem értem mi ez a para a venv-től?
Csak annyit csinál, hogy nem a globális csomagtárt szemeteled tele a különböző dependenciákkal, hanem projektenként van egy saját csomagtár, amit használni tudsz. Persze ez azt is jelenti, hogy az adott projekthez mindig le kell húzni újra az összes csomagot, amire szükséged van. De azért ez nem lehet akkora probléma, vagy...? -
válasz
Hege1234
#3596
üzenetére
pedig ez feldolgozható kellene legyen beautful souppal is, kb így:
durations = [[*d.strings][1][:8]for d in soup.find_all("span", {"class": "duration"})]#3597 - strptime is elegáns...
Igazából a milisechez se kell külön modul, csak összedogatni a részeket:
for duration in durations:
format = "%H:%M:%S"
x = time.strptime(duration, format)
delta_ms = (x.tm_hour * 3600 + x.tm_min * 60 + x.tm_sec) * 1000
# vagy
h, m, s = map(int, duration.split(':'))
delta_ms = (h* 3600 + m * 60 + s) * 1000 -
válasz
Hege1234
#3592
üzenetére
Én requests modullal szedném le, és nem file-ba, hanem egyből stringbe. Melóban sajna nem tudom kipróbálni a linket ami a kódban van.
BTW a time.txt meg duration.txt honnan jön? Nem úgy tűnik, hogy azt a kód töltené le... Write módban miért olvasol belőle?
Nem egészen értem, mit csinálna a kód. Vissza is szeretnél írni bele?Milyen formában jön le a html adat, példát tudsz mutatni?
-
válasz
Hege1234
#3588
üzenetére
Sorry, csak fejből írtam

map(int,...)-tel lehet még egyszerűsíteni:from datetime import timedelta
lista = ['00:10:00', '00:40:00', '01:00:00']
for elem in lista:
h, m, s = map(int, elem.split(':'))
delta = timedelta(hours=h, minutes=m, seconds=s)
print(delta.total_seconds() * 1000) -
-
válasz
bLaCkDoGoNe
#3569
üzenetére
Van egy Python listám, ami tartalmaz 8 random számot
Ez legyen inkább egy dict:lista = [17, 42, 3, 84, 999, 5, 72, 36]dict_lista = {v:0 for v in lista}df = pandas.read_csv('test.csv')for row in df.iterrows():for v in row[1].values:if v in dict_lista: dict_lista[v] += 1print(dict_lista) -
válasz
RedHarlow
#3533
üzenetére
ha python 2 és 3 is van a gépen, akkor sima python és pip parancsokra a 2.x verzió indul el, python3 és pip3 parancsokra pedig a 3.x verzió.
Lehet több 2.x és 3.x verzió is telepítve, akkor a pontos verziószámmal indítható, pl
python3.8 -m pip install -r requirements.txt -
válasz
RedHarlow
#3531
üzenetére
kell egy requirements.txt fájl, amiben összegyűjtöd, hogy milyen csomagok kellenek és odapakolod a könyvtáradba. amikor átviszed a programot máshová, akkor kiadod a következő parancsot:
pip install -r requirements.txt
vagypython -m pip install -r requirements.txt
Persze, ha pip sincs fent (ami régebbi telepítéseknél előfurdulhat), akkor azt előbb kézzel telepíteni kell.Amúgy python 2.7-et (meg az egész 2-es vonalat) illendő volna már elfelejteni, mert 2020 január 1. óta End of Life (azaz semmilyen formában nincs támogatva).
-
válasz
Hege1234
#3444
üzenetére
import re
f = open("log.txt_log").read()
link = re.findall(r"https?:.+\.mpd(?!\?)", f)[0].strip()
link = re.sub("_w[0-9]+", "_w999999999", link)
link = re.sub("_ps[0-9]+", "_ps0000100", link)
link = re.sub("_pd[0-9]+", "_pd60000000", link)
print(link)
print(link, file=open("final.txt", "w")) -
Az a gond az autoconecthtel, hogy az eszköznek (RPi) csatlakoztatható típusúnak kell lennie (pl hangszóró), és ha csatlakozik, akkor az eszköz azt használni is fogja. Ezért én nem tartanám ez egy jó megoldásnak.
Vsz valami alternatívát kellene találni (pl közelségérzékelő), vagy valami más szenzor. -
Mármint mi autoconnecteljen mire?
Amúgy az e-paper-ben pont az a jó, hogy kijelzés közben minimális fogyasztása van, csak a változtatáskor fogyaszt jelentősebben. Ez alapján a ki-be kapcsolgatás nem biztos, hogy jó ötlet, lehet, hogy érdemes volna csak bekapcsolva hagyni. -
válasz
Hege1234
#3358
üzenetére
filter kell neked:
file = open("characters.txt")
lines = [*filter(lambda line:len(line)<=150, file.readlines())]
characters = lines[0]ha nem kell, hogy indexelhető legyen hanem elég az iterátor, akkor nem kell listává alakítás:
file = open("characters.txt")
for line in filter(lambda line:len(line)<=150, file.readlines()):
# művelet
characters = line -
válasz
olivera88
#3356
üzenetére
Gondolom valamelyik újabb verziójú komponensnek a requirementjei között újabb verziójú alkomponens kell (min version 1.x), míg egy másiknak meg ugyanabból kikényszerítve egy régebbi (max version 1.y - ahol 1.y < 1.x).
Keresd meg melyik komponenst frissítetted és próbálj ki kikényszeríteni egy régebbi verziót belőle.
-
válasz
Gyuri27
#3323
üzenetére
print(*[muvelet(x,y) for x in X_1_11 for y in Y_1_11])
Végig kell iterálni a két listát és minden elemen keresztül kell vágni. Ez gyakorlatilag két egymásba ágyazott ciklus, csak python list-expression formában.a muvalat meg valami ilyesmi:def muvelet(x,y):
import random
nev = ''.join(chr(random.randbetween(ord('A'),ord('Z')) for _ in range(3))
return nev+str(x*y)Bocsi mobilról írtam az egészet…
-
válasz
böng ész ő
#3320
üzenetére
Curses-hez kell grafikus felület, tisztán konzolból (pl ssh) nem működik.
-
válasz
anorche1
#3317
üzenetére
1) próbáld újraindítani a VSC-t
2) nézd meg hogy be van-e állítva a környezet (jobb alsó sarokban Python 3.x.x kell legyen)
3) nézd meg, jól rakta-e fel a csomagot (ha van python2 és python3 is telepítve, akkor pip3 install kell, nem pip install)
4) az import jira sor bekerült a kód elejére?
5) ugye nem jira.py a file neve, mert azzal rendesen összezavarod a csomagkezelőtpy fájl futtatása VSC-ből: Shift+Ctrl+D (Debug/Run menü - negyedik a sorban, baloldalt)
-
válasz
magortaltos
#3312
üzenetére
Itt van non-blocking módban is:
from os import system
from sys import platform
from pynput import keyboard
from pynput.keyboard import Key
from time import sleep
def print_at_x(y, x, text):
print(f"\033[{y};{x}H{text}")
def print_at_w(r, c, s):
h = windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
windll.kernel32.SetConsoleCursorPosition(h, COORD(c, r))
prev_codepage = windll.kernel32.GetConsoleOutputCP()
windll.kernel32.SetConsoleOutputCP(65001)
c = s.encode("UTF-8")
windll.kernel32.WriteConsoleA(h, c_char_p(c), len(c), None, None)
windll.kernel32.SetConsoleOutputCP(prev_codepage)
def on_press(key):
global dx, dy, run
if key == keyboard.Key.esc:
run = False
return run
elif key == Key.up:
dx, dy = 0, -1
elif key == Key.left:
dx, dy = -1, 0
elif key == Key.down:
dx, dy = 0, 1
elif key == Key.right:
dx, dy = 1, 0
else:
return
if platform == "linux" or platform == "linux2":
# linux
system('clear')
print_at = print_at_x
elif platform == "darwin":
# MacOS, talán működik itt is
system('clear')
print_at = print_at_x
elif platform == "win32":
# Windows...
from ctypes import *
class COORD(Structure):
pass
STD_OUTPUT_HANDLE = -11
COORD._fields_ = [("X", c_short), ("Y", c_short)]
system('cls')
print_at = print_at_w
print_at(3, 15, 'Próbálj bent maradni a négyzetben!')
for n in range(5,50):
print_at(5, n, '*')
print_at(20, n, '*')
for n in range(5,20):
print_at(n, 5, '*')
print_at(n, 50, '*')
x, y = 25, 7
dx, dy = 0, 0
run = True
print_at(y, x, 'O')
listener = keyboard.Listener(on_press=on_press, suppress=True)
listener.start()
while run:
print_at(y, x, ' ')
x, y = x + dx, y + dy
print_at(y, x, 'O')
if not (5 < x < 50) or not (5 < y < 20):
run = False
sleep(0.1)
print_at(20, 55, 'A játéknak vége !') -
válasz
magortaltos
#3308
üzenetére
indítsd a következő módon:
python3 programneve.py
vagy
python3.8 programneve.pyDe szerintem itt a válasz a Geany-s kérdésre:
https://askubuntu.com/a/976670 -
válasz
sztanozs
#3306
üzenetére
pygame tutorial - kezdésnek:
import pygame
pygame.init()
win = pygame.display.set_mode((500,500))
pygame.display.set_caption("Első játékom")
x = 50
y = 50
width = 40
height = 60
vel = 5
run = True
while run:
pygame.time.delay(100)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
x -= vel
if keys[pygame.K_RIGHT]:
x += vel
if keys[pygame.K_UP]:
y -= vel
if keys[pygame.K_DOWN]:
y += vel
win.fill((0,0,0)) # Fills the screen with black
pygame.draw.rect(win, (255,0,0), (x, y, width, height))
pygame.display.update()
pygame.quit() -
válasz
magortaltos
#3305
üzenetére
Ugye python 3.6+ vagy annál magasabb van python 2.x-re más nem érdemes fejleszteni.
Parancssorban a következő visszaadja a verziószámot:
python --versionilletve ha van egymás mellett 2.x és 3.x verzió, akkor
python3 --versionAmúgy oktatni szerintem pygame-mel élvezetesebb (ha van grafikus felület is, nem csak terminal).
-
No, nem annyira nehéz, csak meg kellett találni a megfelelő modult (meg, hogy windows-on is működjön).
from os import system
from sys import platform
from pynput import keyboard
from pynput.keyboard import Key
def print_at_x(y, x, text):
print(f"\033[{y};{x}H{text}")
def print_at_w(r, c, s):
h = windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
windll.kernel32.SetConsoleCursorPosition(h, COORD(c, r))
prev_codepage = windll.kernel32.GetConsoleOutputCP()
windll.kernel32.SetConsoleOutputCP(65001)
c = s.encode("UTF-8")
windll.kernel32.WriteConsoleA(h, c_char_p(c), len(c), None, None)
windll.kernel32.SetConsoleOutputCP(prev_codepage)
if platform == "linux" or platform == "linux2":
# linux
system('clear')
print_at = print_at_x
elif platform == "darwin":
# MacOS, talán működik itt is
system('clear')
print_at = print_at_x
elif platform == "win32":
# Windows...
from ctypes import *
class COORD(Structure):
pass
STD_OUTPUT_HANDLE = -11
COORD._fields_ = [("X", c_short), ("Y", c_short)]
system('cls')
print_at = print_at_w
print_at(3, 15, 'Próbálj bent maradni a négyzetben!')
for n in range(5,50):
print_at(5, n, '*')
print_at(20, n, '*')
for n in range(5,20):
print_at(n, 5, '*')
print_at(n, 50, '*')
x, y = 25, 7
print_at(y, x, 'O')
def on_press(key):
global x, y
if key == keyboard.Key.esc:
return False
elif key == Key.up:
dx, dy = 0, -1
elif key == Key.left:
dx, dy = -1, 0
elif key == Key.down:
dx, dy = 0, 1
elif key == Key.right:
dx, dy = 1, 0
else:
return
print_at(y, x, ' ')
x, y = x + dx, y + dy
print_at(y, x, 'O')
if not (5 < x < 50) or not (5 < y < 20):
return False
with keyboard.Listener(on_press=on_press) as listener:
try:
listener.join()
finally:
listener.stop()
print_at(20, 55, 'A játéknak vége !') -
válasz
magortaltos
#3286
üzenetére
Próbáld meg leírni, kb mit csinál ez a kis program? A pascalt mindig rühelltem...
Ez valami kígyószerű játék lenne? -
válasz
magortaltos
#3299
üzenetére
Mármint?
-
válasz
cousin333
#3264
üzenetére
import os
start_string = 'START'
stop_string = 'STOP'
name_string = 'Adat:'
start = False
with open('szoveg.txt', 'r') as input_file:
with open('output.txt', 'w') as output_file:
for line in input_file:
if line.startswith(start_string):
start = True
elif line.startswith(stop_string):
start = False
elif start and name_string in line:
loc = line.find(name_string )
loc += len(name_string ) + 2
filename = line[loc:loc+8]
output_file.write(filename + '\n') -
Ha nem kell több sorban keresni akkor így:
fajl = open("forrásfile.TXT", "r")
kifejezes = 'valami'
hossz = 8
talalatok = []
for sor, szoveg in enumerate(fajl.readlines()):
try:
# ha a kifejezes nem kell +2 space, csak utána 8
talalat = szoveg[szoveg.index(kifejezes)+len(kifejezes)+2:][:hossz]
talaltok += [sor, talalat]
print(sor, talalat)
except:
pass -
ha a kifejezés csak egyszer van:
szoveg = 'valami másvalami'
kifejezes = 'más'
hossz = 3
try:
ix = szoveg.index(kifejezes)
# ha a kifejezes is kell + hossz
print('kif szoveg: ', szoveg[ix:ix+len(kifejezes)+hossz])
# ha a kifejezes nem kell
print('csak szoveg: ', szoveg[ix+len(kifejezes):ix+len(kifejezes)+hossz])
except:
passha a kifejezés többször is van:
szoveg = '''valami másvalami
még másvalami
egészen más'''
kifejezes = 'más'
hossz = 3
try:
while True:
ix = szoveg.index(kifejezes)
# ha a kifejezes is kell + hossz
print('kif szoveg: ', szoveg[ix:ix+len(kifejezes)+hossz])
# ha a kifejezes nem kell
print('csak szoveg: ', szoveg[ix+len(kifejezes):ix+len(kifejezes)+hossz])
szoveg = szoveg[ix+len(kifejezes)+hossz:]
except:
passha a kifejezés többször is van, és eleje-vége között kell a szöveg:
szoveg = '''random szöveg
valami másvalami
még másvalami
egészen más
szöveg ami bekavarhat :D'''
eleje = 'más'
vege = 'mi'
try:
while True:
ix = szoveg.index(eleje )
iy = szoveg[ix:].index(vege)
# találat
print(szoveg[ix:ix+iy+len(vege)])
szoveg = szoveg[ix+iy+len(vege):]
except:
pass -
válasz
Hege1234
#3178
üzenetére
Ezekkel a linkekkel nincs semmi baj (legalább is a kapcsolat létrejön), csak a szerveroldalon van valami gond velük. A címből nem lehet megállapítani, hogy problémás-e, meg kell nézni, hogy jön-e adat a stream-en, és ha nem csak discard...
Az alábbi funkcióval ellenőrizhető, hogy megnyitható-e a cím, és hogy 5 mp-en belül jön-e adat:
def check_server(url):
try:
with requests.get(url, timeout=5, stream=True) as r:
next(r.iter_content())
return True
except requests.exceptions.ConnectionError:
return FalseA következő sor helyére tehető be az ellenőrzés:
if src:
ígyif src and check_server(src): -
válasz
Hege1234
#3159
üzenetére
Összeraktam inkább rendesen...
import requests
from bs4 import BeautifulSoup
def parse_src(text_response, src=''):
try:
soup = BeautifulSoup(text_response, 'html.parser')
for vid in soup.find_all('source'):
src = vid['src']
except:
pass
return src
def parse_text(text_response, line, src=''):
try:
return text_response.split("\n")[line]
except:
return src
m3_data = [
{
'name': 'CINE LIFE HD',
'url': 'http://streamstat.net/videoplayer.cgi?sid=14358315&ext=.m3u8',
'logo': 'https://cinelife.com/wp-content/uploads/2020/04/cinelife_logo.png',
'parser': parse_src,
'parser_args': {},
},
{
'name': 'FEM 3',
'url': 'https://onlinestream.live/fem3/videoplayer/6455-1',
'logo': 'http://1241.hu/userfiles/image/tvcsatornak/fem3.jpg',
'parser': parse_src,
'parser_args': {},
},
{
'name': 'Extreme Sports Channel',
'url': 'https://raw.githubusercontent.com/Special2020/Iptv-hu.m3u/master/Uj%20T%20A.m3u',
'logo': 'https://cdn.pngsumo.com/tv-guide-extreme-sports-channel-the-home-of-action-sports-action-sports-png-320_240.png',
'parser': parse_text,
'parser_args': {'line': 308},
},
{
'name': 'FIX TV',
'url': 'http://streamstat.net/videoplayer.cgi?sid=148177550&ext=.m3u8',
'logo': 'http://1241.hu/userfiles/image/tvcsatornak/pic_atkoto_55_fix_tv.png',
'parser': parse_src,
'parser_args': {},
},
]
exif_info = '#EXTM3U\n'
for channel in m3_data:
html_response = requests.get(channel['url'])
parser = channel['parser']
extra = channel['parser_args']
src = parser(html_response.text, **extra)
if src:
channel['src'] = src
exif_info += f'#EXTINF:0,tvg-logo={channel["logo"]}, {channel["name"]}\n{src}\n'
print(exif_info, file=open("test.m3u8", "w"))
Új hozzászólás Aktív témák
- HiFi műszaki szemmel - sztereó hangrendszerek
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Kuponkunyeráló
- Gitáros topic
- Milyen billentyűzetet vegyek?
- Épített vízhűtés (nem kompakt) topic
- Futás, futópályák
- MWC 2026: csápolt a robot, majd dobott egy hátraszaltót
- Path of Exile (ARPG)
- További aktív témák...
- GARANCIÁLIS, ÚJ ÁLLAPOT MacBook Air 15 M3 16GB 256GB SSD midnight (éjfekete )
- ASUS GeForce RTX 4080 16GB GDDR6X Noctua OC Edition
- Dell Latitude 7280,12.5",FHD,i7-6600U,8GB DDR4, 128GB SSD,WIN11, 2 KAMERA
- HP ProLiant DL360e G8 8xSFF 1U 2xE5-2450L (16 mag/32 szál), 144GB DDR3, iLO4, B120i, P410 1GB BBU
- Iphone 11 64Gb-Felújított-patika-100% akku
- Dell Latitude E7270,12.5",FHD,i7-6600U,8GB DDR4,256GB SSD,WIN11
- GYÖNYÖRŰ iPhone XR 128GB Red-1 ÉV GARANCIA - Kártyafüggetlen, MS3984, 100% Akkumulátor
- 146 - 147 - 167 - 168 - 169 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4090
- Keresünk Galaxy S23/S23+/S23 Ultra/S23 Fe
- Intel Processzorok sok db : Xeon E5-1620V3 // Pentium G4400T // i3 6100, 6100T, 4130, 2140T
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest




