Új hozzászólás Aktív témák
-
Atomantiii
addikt
Sziasztok!
Találtam egy python-ban írt kis programot, ami weboldalról grabbelne le tv műsort xml fájlba, de valamilyen encoding problémája van. Úgy gondolom, hogy az ékezetes betűkkel van problémája. Hogyan tudnám kijavítani a hiányzó karaktereket? -
Atomantiii
addikt
válasz #79484416 #4147 üzenetére
Lehet korábbi pythonnal kellene próbálkozni? Vagy feldobni valamire egy ubuntut vagy valamilyen linuxot és azon jó eséllyel elindulna?
Pl ha a \xfb-t hozzáadom valamilyen karakterrel az 1250-es encodinghoz akkor már azon nem problémázik, hanem ha másikat talál, amit nem ismer akkor problémázik. Csak nem mindig írja ki, hogy melyiket nem ismeri, de úgy tűnik az ékezetes karakterek nem tetszenek neki.
[ Szerkesztve ]
-
Atomantiii
addikt
válasz #79484416 #4154 üzenetére
Igen telepítettem és helyileg próbálom futtatni ahogy írod ezzel a py_epg.xml-el, amiből veszi, hogy mely csatornákat akarom. Bár mondjuk ez a notepad++ szerint unicode kódolású és win 10-en próbálom futtatni parancssorból.
Bár most éppen nem írt hibát, de ha más csatornával próbálom akkor van amikor valószínűleg olyan karakterre akad, amivel nem tud mit kezdeni.
[ Szerkesztve ]
-
Atomantiii
addikt
válasz Atomantiii #4159 üzenetére
Most éppen mintha jó lenne, kipróbálom több csatornával is. Illetve mégsem ha mondjuk több napra állítom.
Tehát ennyi szerepel a py_epg.xml-ben a cool csatornára és 10 napra szeretném lehúzni. Ekkor ez szerepel a logban.
[ Szerkesztve ]
-
Atomantiii
addikt
válasz sztanozs #4162 üzenetére
Most éppen melóhelyen: Win 10 Enterprise 22H2, pythonra azt írja, hogy fent van a 3.11.2 és a 3.12.1 is. Most éppen cmd-be írom be a parancsot neki. Mondjuk otthoni gépemen még nem próbáltam, de majd este megpróbálom.
Ha a hiányolt \xc3-at hozzáadnám a cp1250-be, akkor valószínűleg nem problémázna rá, csak előbb-utóbb mindig talál olyat, ami nem tetszik neki.
[ Szerkesztve ]
-
-
Atomantiii
addikt
Xml fájlt hogyan tudnék xz formátumba tömöríteni? Találtam egy ilyen kódot, de akárhogy próbálom nálam mindig 0 byte lesz a mérete.
import lzma as xz
in_file = open('input.xml', 'rb')
input_data = in_file.read()
compressed_data = xz.compress(input_data)
out_file = open('input.xml.xz', 'wb')
in_file.close()
out_file.close()
-
Atomantiii
addikt
Újabb xml fájlos kérdésem lenne, hátha valakinek lenne ötlete hogyan induljak el.
Ilyen tartalom van az xml fájomban, hogy pl:
<programme start="20240226052500 +0100" channel="5.port.hu" stop="20240226060000 +0100" clumpidx="0/1">
<title>Fókusz</title>
<sub-title lang="hu">(magazinműsor, 2024)</sub-title>
<desc lang="hu">Hétköznaponként jelentkező riportmagazin a legfrissebb hírekkel, aktuális információkkal, eseményekkel, emberi sorsokkal, érdekes történetekkel és helyszínekkel a világ minden részéről az RTL Gold-on is. Az RTL Klub mai adása felvételről.</desc>
<date>2024</date>
<category lang="en">Magazines/Reports/Documentary</category>
<category lang="hu">Magazinok/Riportok/Dokumentumfilm</category>
<category lang="en">tvshow</category>
<url system="port.hu">https://port.hu/adatlap/film/tv/fokusz/event-tv-1416159575-5/movie-3806</url>
<previously-shown/>
<rating>
<value>12</value>
<icon src="https://port.hu/img/agelimit/raster/12_age_icon_black.png"/>
</rating>
</programme>Hogy tudnék egy olyan xml-t csinálni belőle, amivel törölném a felesleges sorokat belőle?
Pl ne legyenek benne ezek a sorok:
<url system="port.hu">https://port.hu/adatlap/film/tv/fokusz/event-tv-1416159575-5/movie-3806</url>
<value>12</value>
<icon src="https://port.hu/img/agelimit/raster/12_age_icon_black.png"/>
<category lang="en">Magazines/Reports/Documentary</category>Valakinek ötlete akár arra is, hogy neten hol keresgéljek?
-
Atomantiii
addikt
válasz Hege1234 #4217 üzenetére
Ez a teljes fájl. Ebből szeretnék kitakarítani felesleges dolgokat.
Pl az url-eket, ikonokat esetleg még másokat is, de ha már az egyik összejönne az is sokat jelentene méretben, mert több ezer van benne.
<url system="port.hu">http://port.hu/adatlap/szemely/peter-breitmayer/person-293341</url>
<icon src="https://port.hu/img/agelimit/raster/12_age_icon_black.png" />[ Szerkesztve ]
-
Atomantiii
addikt
válasz Hege1234 #4221 üzenetére
Abban tudnál még segíteni, hogy ezt hogy tudom átírni, hogy ne a tárhelyről, hanem a saját gépemről töltse be a forrás xml-t és oda is mentse le?
Próbáltam, de nem igazán akar összejönni, mindig hibát ír erre a sorra:
edited_tv_programs = ET.tostring(root, encoding='unicode')
Traceback (most recent call last):
File "d:\EPG\xmlremove.py", line 24, in <module>
edited_tv_programs = ET.tostring(root, encoding='unicode')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python312\Lib\xml\etree\ElementTree.py", line 1083, in tostring
ElementTree(element).write(stream, encoding,
File "C:\Python312\Lib\xml\etree\ElementTree.py", line 728, in write
serialize(write, self._root, qnames, namespaces,
File "C:\Python312\Lib\xml\etree\ElementTree.py", line 851, in _serialize_xml
tag = elem.tag
^^^^^^^^
AttributeError: 'ElementTree' object has no attribute 'tag'[ Szerkesztve ]
-
Atomantiii
addikt
-
Atomantiii
addikt
Ez így nagyon szuper, de esetleg lehetne neki mondani valahogy egy olyat, hogy törölje még ezt ki az xml-ből? " clumpidx="0/1" és helyette csak egy ilyet rakjon be: "
Notepad++-ban egy sima keresés és cserével megoldható, de jó lett volna valahogy automatizálni.
-
Atomantiii
addikt
válasz Hege1234 #4226 üzenetére
Közben találtam még egy olyat, hogy egyes sorokban van feleslegben egy ilyen a <desc lang="hu"> után, hogy zárójel nulla pont zárójel szóköz, ami felesleges. Ezt próbáltam kitörölni, de sehogy sem sikerül.
<desc lang="hu">(0.) Get ready as we bring you all of the greatest hits from singing sensation Ariana Grande!</desc>
edited_tv_programs = re.sub(r'<desc lang="hu">(0.) ', r'<desc lang="hu">', edited_tv_programs)
Akárhogy csináltam mindig csak a kezdő zárójel tűnt el de a 0 és a többi maradt.
[ Szerkesztve ]
-
Atomantiii
addikt
válasz Hege1234 #4229 üzenetére
Köszi, jó lett.
edited_tv_programs = re.sub(r'<desc lang="hu">(\(.*\.\) )', r'<desc lang="hu">', edited_tv_programs)
Elvileg elég lenne a desc lang hu-s rész nélkül is, de így is jó. Már itt kínlódtam vele egy jó ideje, sehol sem találtam meg, hogy hivatkozzak a zárójelre, a 0-ra és a .-ra egyszerre.
Így az eredeti 85 MB-os fájlból lett 33 MB.
[ Szerkesztve ]
-
Atomantiii
addikt
válasz sztanozs #4231 üzenetére
Működik Hege javaslata is, persze biztos meg lehet csinálni máshogy is. Itt a forrás fájl.
import xml.etree.ElementTree as ET
import re
xml_content = ET.parse('forras.xml')
root = xml_content.getroot()
not_needed = ["credits", "category", "country", "date", "episode-num", "icon", "length", "previously-shown", "rating", "star-rating", "url"]
for programme in root.findall(".//programme"):
for element_name in not_needed:
elements = programme.findall(f".//{element_name}")
for element in elements:
if element in programme:
programme.remove(element)
edited_tv_programs = ET.tostring(root, encoding='unicode')
# kiszedi a clumpidx="0/1"-et
edited_tv_programs = re.sub(r' clumpidx=.*\"', r'', edited_tv_programs)
# kiszedi a (0.)-át
edited_tv_programs = re.sub(r'<desc lang="hu">(\(.*\.\) )', r'<desc lang="hu">', edited_tv_programs)
# kiszedi a ...-ot
edited_tv_programs = re.sub(r'<desc lang="hu">(\.\.\. )', r'<desc lang="hu">', edited_tv_programs)
with open('edited.xml', 'w', encoding='utf-8') as file:
file.write(edited_tv_programs) -
Atomantiii
addikt
Tudna valaki segíteni (akár privát üzenetben is) egy letöltő srcipt készítésében, ahol van egy ilyen szerkezetű fájl, amiben a letöltendő oldalak vannak meghatározva melyik oldalnak mi a pontos elérése. A pdf-eket szeretném, hogy letöltse, már ha lehet olyat.
{
"editionGUID": "602de21a-dd42-4413-bd98-dc89232280fe",
"pagesDomain": "https://valami.com",
"pageGroups": [
{
"pages": [
{
"pdf": "https://valami.com/page1.pdf",
"pageNum": 1,
"type": "page"
}
]
},
{
"pages": [
{
"pdf": "https://valami.com//page2.pdf",
"pageNum": 2,
"type": "page"
}
]
},
{
"pages": [
{
"pdf": "https://valami.com/page3.pdf",
"pageNum": 3,
"type": "page"
stb...
} ] } ] }
-
Atomantiii
addikt
válasz Atomantiii #4286 üzenetére
Bár lehet egyszerűbb kimásolnom a linkeket és megetetni egy letöltő progival.
-
Atomantiii
addikt
válasz Atomantiii #4287 üzenetére
Mégsem teljesen jó ötlet a letöltésvezérlő, mert minden fájlnak ugyanaz a neve csak a más link. Vagyis letöltés közben át is kellene nevezni mondjuk sorszám alapján.
-
Atomantiii
addikt
válasz Atomantiii #4288 üzenetére
Közben megvan a megoldás.
-
Atomantiii
addikt
Szeretnék ismét segítséget kérni xml fájl szerkeszéssel kapcsolatban. Van egy ilyen xml fájlom, hogy:
<?xml version="1.0" encoding="UTF-8"?>
<channel id="M3">
<display-name lang="hu">M3</display-name>
</channel>
<programme start="20240910220000 +0000" stop="20240910224000 +0000" channel="M3">
<title lang="hu">Helló, világ!</title>
<sub-title lang="hu">Indonézia, Kelet-Szibéria, Alpe d'Huez, Kamakura, Essaouira</sub-title>
<desc lang="hu">Járjuk be együtt a világot! Hajózzunk Indonéziába, a Szulavézi-szigetre, és ismerjük meg a toradzsák szokásait! Kísérjük el a kelet-szibériai tigrisvadászokat egy befogásra! Síeljünk Alpe d'Huez lejtőin! Ismerjük meg a kamakurai kardkészítőket! Látogassunk el a marokkói Essaouirába, ahol a gnaoua nép zenével gyógyít!</desc>
<date>1998</date>
<category lang="hu">Ismeretterjesztő Sorozat</category>
</programme>
</tv>Olyat lehet-e valahogy, hogy a <category lang="hu"> -ban és a <date>-ben lévő tartalom bekerüljön zárójelbe a <sub-title lang="hu"> element végére így:
<sub-title lang="hu">Indonézia, Kelet-Szibéria, Alpe d'Huez, Kamakura, Essaouira (Ismeretterjesztő Sorozat, 1998)</sub-title>Gondolom nem olyan egyszerű, de hátha valaki csinált már ilyet vagy tud segítséget adni hogy induljak el.
[ Szerkesztve ]
-
Atomantiii
addikt
válasz sztanozs #4320 üzenetére
Közben más irányba indultam el, már majdnem jó csak azt nem tudom hogyan mondjam meg neki, ha bizonyos element nem létezik akkor ne írjon oda semmit sem hanem hagyja üresen.
for programme in root.findall('programme'):
title = programme.find('title')
categories = programme.findall('category')
date = programme.find('date')
category_texts = ', '.join([cat.text for cat in categories])
date = date.text if date is not None else "Ismeretlen év"
title.text = f"{title.text} ({category_texts}, {date})"
desc = programme.find('desc')
director = programme.find('.//director')
actors = programme.findall('.//actor')
director = director.text if director is not None else "N/A"
actor_texts = ', '.join([act.text for act in actors])
desc.text = f"{desc.text} \n \n Rendezte: {director} \n Szereplők: {actor_texts}"
Ennél pl nincs actor vagyis szereplőkről adat így azt szeretném, ha a szereplőket ne írná bele a desc részbe, hanem maradjon üresen.
Ilyen az átalakított xml fájl:
<programme start="20241009220000 +0000" stop="20241009224000 +0000" channel="M3">
<title lang="hu">Helló, világ! (Ismeretterjesztő Sorozat, 1998)</title>
<sub-title lang="hu">Karácsony: Lisszabon, Franciaország, Moszkva, Hamburg, Svájc, Jeruzsálem</sub-title>
<desc lang="hu">Járjuk be együtt a világot! A mai adás bemutatja, milyen a karácsony Lisszabonban, Moszkvában és Jeruzsálemben, a betlehemezők Svájcban, a karácsonyi desszert Franciaországban és a téli hattyúmentés Hamburgban.Rendezte: Lengyel Zsolt
Szereplők: </desc>
<credits>
<director>Lengyel Zsolt</director>
</credits>
<date>1998</date>
<category lang="hu">Ismeretterjesztő Sorozat</category>
<icon src="https://musor.tv/images/m3.svg" />
<country lang="hu">Magyar</country>
<episode-num system="onscreen">E103</episode-num>
<rating>
<value>12</value>
<icon src="https://musor.tv/images/etc/pg_12.svg" />
</rating>
</programme><programme start="20241010003500 +0000" stop="20241010011000 +0000" channel="M3">
<title lang="hu">Életképek (Sorozatok, Dráma, Melodráma, 2005)</title>
<desc lang="hu">Elváláskor János puszit ad Évának, aki viszonozza. Viola továbbra is dolgozik Jánosnak, természetesen lebukik Katinka előtt. Zoltán turnéra megy a nyáron, hívja Katinkát, hogy menjen vele, de ő még hezitál. Viola és Éva véletlenül találkoznak, egy ital mellett Viola bevallja, minden pénzét elkártyázta. Ezenkívül azt is megosztja Évával, hogy egy éve ő küldte a figyelmeztető leveleket neki, amik a házasság felbomlásáról szóltak. A lányok nagyon szeretnének barátjaikkal Balatonra menni idén nyáron is, de ahhoz még a szülők engedélye kell...Rendezte: Horváth Ádám
Szereplők: Csűrös Karola, Galán Géza J., Garas Dezső, Gáti Oszkár, Hegyi Barbara, Herrer Sára, Kováts Adél, Kulka János, Nemcsók Nóra, Rátóti Zoltán, Schell Judit, Szacsvay László, Vári Éva</desc>
<credits>
<director>Horváth Ádám</director>
<actor>Csűrös Karola</actor>
<actor>Galán Géza J.</actor>
<actor>Garas Dezső</actor>
<actor>Gáti Oszkár</actor>
<actor>Hegyi Barbara</actor>
<actor>Herrer Sára</actor>
<actor>Kováts Adél</actor>
<actor>Kulka János</actor>
<actor>Nemcsók Nóra</actor>
<actor>Rátóti Zoltán</actor>
<actor>Schell Judit</actor>
<actor>Szacsvay László</actor>
<actor>Vári Éva</actor>
</credits>
<date>2005</date>
<category lang="hu">Sorozatok</category>
<category lang="hu">Dráma</category>
<category lang="hu">Melodráma</category>
<icon src="https://musor.tv/img/fb/46/4633/Eletkepek_28_.jpg" />
<country lang="hu">Magyar</country>
<episode-num system="onscreen">E28/114</episode-num>
<rating>
<value>12</value>
<icon src="https://musor.tv/images/etc/pg_12.svg" />
</rating>
</programme>Az elsőnél a félkövérrel kiemelt szereplőket szeretném eltüntetni, mert nincs adat, de az utolsónál meg van és az ott úgy jó lenne. De nem tudom hogyan kéne eltüntenti, hogy üresen maradjon és ne jelenjen meg semmi sem. Illetve ha nincs adat akkor az "N/A" se jelenjen meg a rendezőnél, hanem maradjon üresen és a rendező se jelenjen meg a desc-ben.
[ Szerkesztve ]
-
Atomantiii
addikt
válasz sztanozs #4354 üzenetére
Valahogy azt szeretném elérni, hogy ha nincs megadva az actorból egy sem az eredeti xml-ben, akkor már a Szereplők szót se rakja bele hanem maradjon üresen a desc-ben. Ha arra rájövök hogy kéne akkor a többire is meg tudnám csinálni (rendezte, stb).
Próbálgatom azzal amit írtál, így majdnem jó, csak ha nincs actor akkor is ott lesz a szereplők szó. Eddig én is eljutottam vele csak kicsit máshogy.
[ Szerkesztve ]
-
Atomantiii
addikt
válasz Atomantiii #4355 üzenetére
Vagy csak egyszerűen átírom arra, hogy if actors else 'Nincs információ'.
-
Atomantiii
addikt
válasz sztanozs #4364 üzenetére
Azt most itthon próbáltam és más volt a forrás xml fájl és azon nem tetszik neki. Kicsit más, mint a másik de az alapszerkezet ugyanaz, de érdekes, hogy ami a másikon lefutott ezen nem fut le, hanem ezt a hibát írja.
Meg arra jöttem rá, hogy nem a title-be kellett volna rakni a category-kat és a date-t hanem a sub-tutile-ba, az viszont már nem igazán tetszik neki. Fogok kísérletezni velük amint időm engedi.
-
Atomantiii
addikt
válasz sztanozs #4364 üzenetére
Működik szépen az egyik forráson, a másiknak kicsit más a szerkezete, de ugye az alapszerkezet ugyanaz csak több infó és element van, ott viszont hibára fut valamiért ebben a sorban:
desc.text = f"{desc.text}\n{director_text}\n{actor_text}"
Traceback (most recent call last):
File "d:\EPG\teszt.py", line 34, in <module>
desc.text = f"{desc.text}\n{director_text}\n{actor_text}"
^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'text' -
Atomantiii
addikt
válasz sztanozs #4367 üzenetére
Igen, de nem üres, benne van, hogy: <desc lang="hu"> ugyanúgy, mint a másikban.
Gyakorlatilag ugyanaz az element szerkezet, mint a működőnél (van title, sub-title, desc, credits, director, actor is.) Most csak a desc-et akarom módosítani a director és az actor beemelésével. Ezért nem értem mi lehet a baja.
[ Szerkesztve ]
-
Atomantiii
addikt
válasz sztanozs #4369 üzenetére
Ha director és a actor benne van akkor mindettőre hibát ír, de ha csak külön van benne az egyik akkor is.
Most csak ennyi van benne a kódban:
desc = programme.find('desc')
directors = programme.findall('.//director')
actors = programme.findall('.//actor')
director_text = ('\nRendezte: ' + ', '.join(dir.text for dir in directors)) if len(directors) else ''
actor_text = ('\nSzereplők: ' + ', '.join(act.text for act in actors)) if len(actors) else ''
desc.text = f"{desc.text}\n{director_text}\n{actor_text}"Az is lehet nem tetszik neki valami a másik forrásfáljban, mert az máshogy készült, de az alap elementek ugyanazok.
Erre a sorra írja a hibát: desc.text = f"{desc.text}\n{director_text}\n{actor_text}"
[ Szerkesztve ]
-
Atomantiii
addikt
válasz sztanozs #4371 üzenetére
Az m3.py működik, a forrás fájl neki az m3.xml. A másikban (porthu.py) ha csak egy tv csatorna van akkor megcsinálja - ez a 2.xml, ha benne van az összes akkor már hibára fut - full.xml. Lehet nem tud olyan nagy fájllal dolgozni? Bár az összefűzés és felesleges elementek törlését meg megcsinálja.
-
Atomantiii
addikt
válasz Atomantiii #4373 üzenetére
Vagy csak egyesével csatornánként lehet működtetni.
-
Atomantiii
addikt
válasz Atomantiii #4376 üzenetére
Mondjuk valószínűleg ahol nincs desc ott nincs actor és director sem, így akkor a desc sem kell, de azt már szerintem ki tudom sakkozni a sub-title alapján majd.
Új hozzászólás Aktív témák
- Formula-1
- Battlefield V
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Megérkezett a Google Pixel 7 és 7 Pro
- Okos Otthon / Smart Home
- Milyen monitort vegyek?
- Debrecen és környéke adok-veszek-beszélgetek
- Autós topik
- Vezetékes FEJhallgatók
- Android alkalmazások - szoftver kibeszélő topik
- További aktív témák...
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest