- iPhone topik
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Honor 200 Pro - mobilportré
- Fotók, videók mobillal
- 45 wattos vezeték nélküli töltés jön az új iPhone-ba
- VoLTE/VoWiFi
- Bemutatkozott a Poco X7 és X7 Pro
- Milyen okostelefont vegyek?
- Xiaomi 14T Pro - teljes a család?
- Honor Magic6 Pro - kör közepén számok
-
Mobilarena
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
Nahát, ez remek hír!
Feltétlenül utána kell néznem akkor, köszönöm!
-
Csupán érdeklődésképp, ha már így szóba került...
Pure JavaScriptben van-e coro(utine) függvény? Természetesen nem built-in-re gondolok, hanem bármilyen sajátra. Illetve await és valami executorban futtatásra is kíváncsi vagyok. Bár gondolom az executor veszett ügy, mivel még mindig egy egyszálas, alapvetően böngészőben futó szkriptnyelvről beszélünk. Azt meg nehezen tudom elképzelni, hogy a browser csak úgy engedi a threadek halmozását.
-
válasz
Mr Dini #6535 üzenetére
Kis korrekció, mert rájöttem, hogy totálisan nagy hibát követtem el... A Cheerios megoldásom most valahogy így néz ki:
title = $("div.container > section#filmek.content_box > ul.row.list-unstyled.movie-list > li.col-md-2.col-sm-3.col-xs-6.no-cover-data:first > a > div.cover-element.cover-info > span.title").text();
Viszont még ez sem működik...
Szerk.: Megvan!
title = $("div.container > #filmek > ul.row.list-unstyled.movie-list > li.col-md-2.col-sm-3.col-xs-6.no-cover-data > a > div.cover-element.cover-info > span.title").text();
Viszont a Cheerio nélküli megoldásra még szintén nyitott vagyok!
-
Sziasztok!
Egy scrapert faragnék Node-JS-ben, ami a filmezz.eu filmadatbázisát dolgozná fel.
Szeretném majd egy tömbökbe menteni Cheerio segítségével a linkelt oldalról kiparsolt filmcímeket, évszámokat stb., de egyelőre odáig sem jutottam, hogy az első film címét megkapjam... Hogy kéne e helyett megoldani? (a $ egy betöltött Cheerio konstans az oldal forrásával):
title = $('div.container', 'section#filmek.content_box', 'ul.row.list-unstyled.movie-list', 'li.col-md-2.col-sm-3.col-xs-6.no-cover-data'[0], 'a', 'div.cover-element.cover-info', 'span.title').text();
Illetve van valami Cheerio nélküli megoldás is arra, hogy a needle-lel leszedett oldal HTMLjében 'ugráljak'? Arra már rájöttem, hogy objektumként is működik a response változó, de a classokat nem tudom hogy kéne neki megadni... Pl. ez rossznak tűnik:
container = response.body.div.container;
Köszönöm!
-
válasz
fordfairlane #6516 üzenetére
Gyors válasz és tökéletes megoldás! Nagyon hálás vagyok!
Hmmm, forEach, hogy ez nekem miért nem jut sosem eszembe...
-
Sziasztok!
Van egy zenei API, ami JSON responseokat küld, és ezt szeretném feldolgozni pure-JS segítségével (azaz JQuery stb. nélkül).
Odáig megvan a dolog, hogy a JSON.parse() fügvény segítségével kreálok egy json nevű objektumot, majd a következő módon ki is tudom nyerni az első dal címét:
songTitle = json.collection[0].track.title;
alert(songTitle);Viszont nekem arra lenne szükségem, hogy a címek egy tömbbe kerüljenek.
Ti hogyan oldanátok meg a dolgot?
Köszönöm a válaszokat!
-
-
Értem. Szerintem előkeresem a fehér zászlót, mert sajnos azt, amit konkrétan meg szerettem volna csinálni, azt function-ökön keresztül nem lehet megoldani sajnos. Vagy ha igen, akkor számomra csúnyán csak. Azt meg nem szeretném, hogy van egy kód, amit pár hét után előveszek és csak pislogok, hogy mivaaan!?
Php és curl azért nem megoldás, mert ahogy mondtam, ez egy Android/iOS appnak indult, nativescript-tel. Csak, ha ezt tudom, nem szenvedek el feleslegesen két napot a GUI gyártással...
A vége mégiscsak az lesz, hogy java-ban írom meg és csak androidra!
Köszi mindent Nektek, rendkívül tanulságos volt ez a lecke!
-
Köszi!
És ha a
doWhateverYouWantWithHTML
nem function, hanem kód? Mert pont ez a problémám. Nem csak egyszer, egy link esetében szeretném feldolgozni az adatokat, hanem több helyen. Ahol mindegyik linknek más a kódja, tehát másnak kell lefutnia. Amit nem tudok function-be tenni... Konkrétan pl replace-t, vagy splitet szeretnék a változókon végrehajtani.Nem akarom én ezt túlbonyolítani... A lényeg, hogy van egy függvényem, annak küldök egy linket, majd egy DATA változóban visszatér a HTML kódja az adott oldalnak. Erről a HTML oldalról pedig megint leszedek egy link HTML-t, azt is feldolgozom stb...
Ja és van amikor a több link közt case-t is használok, hogy eldöntse a forráskód alapján, hogy éppen melyiket kell használnia... Namost ezt egy functionbe beilleszteni átláthatatlan lenne és újra kéne írnom a már xhr sync-kel működő viszonylag hosszú kódot.
-
De én pont nem ezt szeretném. A függvény csak "kódrövidítés" szempontjából lenne szükséges. És nem a függvényen belül szeretném az adatokat kiíratni, hanem "kint".
Illetve nem alerteket, hanem elég hosszű replace-ket regex-ekkel használnék...
S ezt a getPage-t én csak a HTML kód leszedésére használnám. Nem egyszer, hanem sokszor a kódban...
Egyébként kinek az ötlete volt egy get kérést aszinkronnak keresztelni? Ott a legtöbb esetben pont az a lényeg, hogy megvárja, míg végez a letöltés... És ez eddig minden programnyelvben, amivel eddig találkoztam mind így volt. De ha callbackkel meg lehet csinálni, kérem valaki dobjon már össze egy példát nekem, ami stimmel a leírásomra! Nagyon hálás lennék!
-
Egyébként hogy lehet az, hogy a console.log(str); kiírja a HTMl kódot itt, de a DATA globális változóba már nem tudja belementeni?:
var DATA = '';
function getPage(url){
var http = require("http");
content = http.request({ url: url, method: "GET" }).then(function (response) {
str = response.content.toString();
console.log(str);
DATA = str;
}, function (e) {
alert("Error!");
});
}
getPage('http://vanenet.hu');
alert(DATA);Na, itt az utolsó
alert(DATA);
már üres...#6331
Nem, nem használok express-t. Sima nativescript.
-
válasz
fordfairlane #6329 üzenetére
Próbáltam már azt is, de nem megy fel rendesen:
g
yp info spawn args '-Goutput_dir=.' ]
gyp: binding.gyp not found (cwd: /home/Pisti/Asztal/testing) while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/usr/local/node-v4.6.1-linux-x64/lib/node_modules/node-gyp/lib/configure.js:305:16)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.4.0-45-generic
gyp ERR! command "/usr/local/node-v4.6.1-linux-x64/bin/node" "/usr/local/node-v4.6.1-linux-x64/bin/node-gyp" "rebuild"
gyp ERR! cwd /home/Pisti/Asztal/testing
gyp ERR! node -v v4.6.1
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not okÉs meghal a telepítés...
-
Adatokat szeretnék kinyerni egy HTML kódból, aki dinamikus és egy szerveren futó php rakja össze.
Pl időjárási adatokat szeretnék leszedetni és feldolgozni.
A többit meg már elmondtam. Lehet bármilyen a function, csak getPage('url');-lel lehessen meghívni és a DATA globális változóban adja vissza a html kódot. A kód nár működött xhr-rel, böngészőben, de a node -on nem akar menni a jóöreg xhr.
-
No, akkor másképp közelítem meg a dolgot!
Ma éjfélig kész kell lennem egy mindegy, h milyen, csak működő tákolmánnyal, ami fut androidon appként. A lényeg, hogy működjön, később majd úgyis faragok rajta. Meg egy droid appnál az a kis várakozási idő szerintem amúgy is belefér...
Olvastam valahol, hogy itt is lehet xhr-t használni. Ez érdekelne, de hogyan?
-
Köszi a válaszokat!
Értem is nagyjából, hogy mi a probléma, csak azt nem tudom, hogy akkor a parserem hogy rakjam össze, ami HTML kódokból olvas ki infókat... Ezt a http-sync-et meg nem lehet feltenni nativescript-re....
Szvsz, ez a kód működik, úgy gondolom innen kiindulhatnék, csak én ehhez kevés vagyok:
function getPage(callback){
var http = require("http");
content = http.request({ url: URL, method: "GET" }).then(function (response) {
str = response.content.toString();
console.log(str);
callback(str);
}, function (e) {
alert("Error!");
}); return(str);
}
var URL = 'http://www.vanenet.hu';
getPage(function(result){ alert(filmName +result);});Mint mondtam, csak annyit kéne rajta alakítani, hogy ne alertben dobja ki a forrást, ne is a konzolban, hanem a DATA változóban, amit utána a "fő szálon" lehetne parsolni. Meg hogy ne külön kelljen az URL-t deklarálni, hanem a getPage functionnel. Értsd:
getPage('http://valami url');
-
Azt szeretném elérni, hogy ha bárhol kiadom a kódban a
getPage('http://urlcím');
-et, akkor a DATA globális változóban ott legyen az adott oldal forráskódja.Pl xhr, ami régen használtam, viszont gondolom node js-nél a CORS miatt nem megy:
var DATA = '';
function getPage(url){
http = new XMLHttpRequest();
http.open("GET",url, false);
http.send();
DATA = http.responseText;
} -
válasz
Mr Dini #6318 üzenetére
Még így sem megy:
var DATA = '';
function getPage(url){
var http = require("http");
content = http.request({ url: url, method: "GET" }).then(function (response) {
str = response.content.toString();
console.log(str);
DATA = response.content.toString();
}, function (e) {
alert("Error!");
}); return DATA;
}
alert(getPage('http://www.vanenet.hu/'));Egyedül a callbackes megoldásom működik rendesen:
function getPage(callback){
var http = require("http");
content = http.request({ url: URL, method: "GET" }).then(function (response) {
str = response.content.toString();
console.log(str);
callback(str);
}, function (e) {
alert("Error!");
}); return(str);
}
var URL = 'http://www.vanenet.hu';
getPage(function(result){ alert(filmName +result);});Viszont én meg nem szeretném ezzel a function(result)...-tal meghívni a függvényt, hanem annak a helyére a linket szeretném megadni és azt szeretném, ha a DATA változóban lenne a HTML kód.
Egyébként node JS-t használok.
Már a hajam égnek áll ettől!
-
Üdv!
Kezdő kérdésem lenne... Mégpedig van egy ilyen functionom:
function getPage(url){
var http = require("http");
content = http.request({ url: url, method: "GET" }).then(function (response) {
var str = response.content.toString();
console.log(str);
}, function (e) {
alert("Error!");
});
}Namost, azt szeretném, hogy ha így meghívom:
alert(getPage('http://bing.com'));
akkor térjen vissza az oldal HTML kódjával. Namost, a
console.log(str);
miatt megkapom a konzolban a kódot, de nem tudom, hogy kéne a return-t berakni, hogy az alert is kiírja a kódot....Tudbátok segíteni?
Köszi!
-
-
válasz
martonx #6284 üzenetére
Debian szerveren nem jött be a regexr chromium alatt, így max jsfiddle-t tudok csatolni. De úgy gondolom, a lényeg ott is látszik. De köszi, elmentettem!
(#6285) sztanozs
Köszi!
Bár ez sem jó, mert a target utáni részt nem szedi ki. Írhatnék .*-ot a target után, de akkor meg csak az első linket adja vissza... :/
Egyébként így néz ki a mostani:
post.replace(/\<a href="(.*?)target/g,"$1");
-
Üdv!
Megint gondba vagyok... Már túlvagyok egy regex tutorialon és a guglin is, nem segített...
Merthogy van egy változóm, ami egy PH! hozzászólás-t tartalmaz HTML-ben.
No, én úgy szeretném replace-lni, hogy csak az <a href=" és target közti részt hagyja meg.
Namost, a problémám az, hogy nem tudom neki megadni, hogy vágja le a targetet és az az utáni részt. Mert a [^target]+ ugye nem működik...
Hogyan lehetne megoldani azt, hogy a végén a változó csak linkeket tartalmazzon és menjen akkor is, ha több link is van a HTML kódban?
Köszi!
Ui.: ha kell, délután csatolok fiddle-t is.
-
Köszi!
Mivel most nem vagyok gépközelben,így beléptem a szerverre, amin volt valami ősrégen magamnak fordított node. Simán felment a browserify, majd ez a batár nagy kód is legenerálódott, azaz elvileg minden ok lett.
Próbáltam berakni és lefuttatni mobilon, de semmi... Bár lehet, hogy azért, mert a console.log helyett alertet kéne használni az eredeti szkriptben is és úgy konvertálni. Bár belenéztem a generált kód elejébe és ott megmaradt a http = require('http'), ami node specifikus... Lehet, hogy ez a gond?
Örök hálám az eddigiekért!
-
válasz
sztanozs #6194 üzenetére
Igen, arra gondoltam, hogy a céloldalt kell lennie egy headernek. Ez lehet php kóddal is megoldva.
Esetleg azt lehetne még megcsinálni, hogy egy php kódot felrakok a webszerveremre, amivel beállítom a headert, majd iframeelem a felhőt. Bár ez marha nagy macera lenne (konkrétan az, hogy a js kódnak kellő weblap címet küldjem az iframebe) és nem biztos, h menne is...
Yt alatt igazából pl egy 480-as videó direkt linkig szeretnék eljutni. Ez elvileg benne van a linkem kimenetében, de nekem a kódolás miatt nem sikerült kihámoznom. Konkrét linket nem tudok írni, mert az mindig más...
Pl most találtam egy ilyet [link]. Node-dal futtatva megy is, látom a consolebam a linkeket! De ha mobilon futtatom, ott már nem fut le, debuggolni ott nem tudom, egyetlen esépyem lenne, ha vágnám a kódot és átnézném pl alertekkel, hogy meddig jut el a dolog, de első ránézésre nem sok jött le a kódból. Nekem valami egyszerűbb kéne, functionok nélkül.
-
válasz
sztanozs #6192 üzenetére
Hát ja, csak akkor meg nehézkes lesz megosztani másokkal a kész förtelmes kódot...
Arra gondoltam, hogy ha a kezemben lenne a webtárhely apache konfigja akkor csinálhatnék proxy-t. De sajnos nincsen...
Ps: Youtube resolverhez kéne egy ilyen linkből kinyernem a direkt linket. Van valami megoldás arra, hogy rendesen nézzen ki a fájl és ne ilyen utf-8-as krix-krax legyen? decodeURIComponent nem volt elég...
Sorry a kérdésrohamért, de rájöttem, hogy mindenféle resolver írásával rengeteget lehet tanulni!
Eddig mindegyikre rájöttem és megy, de a Youtube kifogott rajtam és a guglin sem találtam pure js példát rá.
-
válasz
Mr Dini #6190 üzenetére
Ja, most már kezd világos lenni, hogy mit rontok el!
Szóval a szkript lényege, hogy egy adott felhőtárhelyre belép a user adataival és eljut a direkt letöltési linkhez fájlonként. Ehhez parsolnom kell az oldalakat, amihez ugye kellett az xhr. Nade a felhő nem az enyém, és ha jól értem, akkor mindkét oldalra (a JS és a felhő oldalára) kéne egy Access-Control-Allow-Origin: * fejléc (header).
Namost, ezt én nem tudom megengedni magamnak, mivel ugye nincs hozzáférésem a szervereikhez...
Próbáltam így, de nem elég:
var DATA = '';
function getPage(url){
var http = new XMLHttpRequest();
http.open("POST", url, false);
http.setRequestHeader("Access-Control-Allow-Origin","*");
http.send();
DATA = http.responseText;
}És igen, globális változót használok, mivel a változó tartalmára nem csak egyszer van szükség, és így tartottam a legkézenfekvőbbnek.
Más nem használ ilyesmit? Hogy lehetne megkerülni?
-
Ismerem a pythonos webszervert. De python 3.x-nél már nem SimpleHTTP.
Na, közben toltam alá egy atw-s webszervert, meg a python webszerverrel is próbáltam, de ezt dobja az FF:
22:07:58.303 Cross-Origin kérés blokkolva: Az azonos eredet házirend nem engedélyezi a távoli erőforrás olvasását innen: http://[...]. (Ok: Az „Access-Control-Allow-Origin” CORS fejléc hiányzik).1(ismeretlen)
Esetleg php-val meg lehetne oldani? Vagy a node js-t tudom futtatni sima apache webszerveren?
#6189
Köszi a példát! Van még mit tanulnom...
-
válasz
fordfairlane #6185 üzenetére
Sajnos nem segített, ugyanezt, a Cross origin policy-t dobja...
Szerintem a böngésző tiltja le a külső oldalakhoz való hozzáférést... Ezt szeretném valahogy (akár php segítségével) kikerülni.
-
Csináltam hozzá egy html részt is, igen. Tehát egy html fájlként, ahol a headben van <script>-ként a JS, majd egy buttonnal futtatom a function-t onClick-kel.
Ja és Firefoxot használtam. Egyébként nekem nagyon tetszik a végeredmény, szóval ha webszerveren is lehetne futtatni, akkor az nagyon jó lenne!
Ezt használom egyébként jelenleg:
var DATA = '';
function getPage(url){
var http = new XMLHttpRequest();
http.open("GET", url, true);
http.send();
DATA = http.responseText;
} -
válasz
Sk8erPeter #6169 üzenetére
Nah, felraktam egy Win-t a harmadik partícióra és megpróbáltam lefuttatni a kódot, de ezt dobja:
17:46:07.717 Cross-Origin kérés blokkolva: Az azonos eredet házirend nem engedélyezi a távoli erőforrás olvasását innen: [...]. (Ok: Az „Access-Control-Allow-Origin” CORS fejléc hiányzik).1(ismeretlen)
Így nem fut le a kód. Sima XMLHttpRequesttel és JQuery get-tel is ezt dobja...
-
-
Sziasztok!
Ismét van egy kis megoldandó problémám... Szóval néhány megosztó ilyesmi formában titkosítja a linkeket a kódban:
eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(0(){4 1="5 6 7 8";0 2(3){9(3)}2(1)})();',10,10,'function|b|something|a|var|some|sample|packed|code|alert'.split('|'),0,{}))
Nos, nekem ezt pure JS-sel vissza kéne fejtenem. Erre pedig találtam egy ilyen kódot. Ezt megpróbáltam beilleszteni a mostani kódomba, de nem jártam sikerrel, szóval felraktam egy Desktopot a gépre és jsFiddle-n próbálkoztam. Nos ez sem akar sikerülni, de gondolom noob, user error lesz ez is...
Íme a teszt próbálkozás, ami nem működik.
Köszi a válaszokat!
Szerk.: A lényeg az lenne, hogy a gombot megnyomva felugorjon egy alert, a "kicsomagolt" résszel.
-
válasz
fordfairlane #6173 üzenetére
Van, de a prompt helyett nem jó a log...
-
-
válasz
Sk8erPeter #6169 üzenetére
Ok. Csak egy debian szerver van a gépemen, és ha kellene a böngésző, akkor először be kell rakni a desktopot, majd csak utána másolhatom át telóról gépre a kódot... :/ De az a lényeg, hogy rájöttem magamtól, hogy mi a gond, mire megkérdeztem.
A nulladik elem kihagyása pedig a kezdetektől meg volt oldva.
Azért köszi és teljesen igazad van!
-
-
-
válasz
Sk8erPeter #6162 üzenetére
Ja, csak taskerrel (droidos automatizáló program) futtatom. Ott nincs se konzol, se más megoldás debuggolásra. Se jquery ui... Csak flash, meg alert...
Böngészőbe futtatni pedig lusta vagyok...
-
Belenéztem már, de ő is postdata-t küld a lejátszón keresztül.
De szerintem azzal az a gond, h az adf.ly-t nem kezeli le. Bár a functionok számomra logikátlan sorrendben következnek/hívják meg egymást, így nem igazán tudok eg, átfutás után kiigazodni azon a kódon. És még komment se sok van, így max újraírnám a dolgot.
#6161
Igen, én is ezt tettem a sajátomban. De én itt nem látok j.gs kezelést.
-
Üdv ismét!
Megint elakadtam a szkriptben, de ez most picit más jellegű, mint az előző probléma. Remélem nem off.
Tehát amin dolgozok, az egy film streamer androidra. A lényege annyi, hogy rákeres a filmre filmezz.eu-n, majd a user kiválaszthatja, hogy honnan streameli a filmezz.eu szerinti szolgáltatók szerint (pl exashare). Na, ez megy, de néhány szolgáltatónál nehéz kinyernem a stream direkt linkjét. Ilyen például a vidto.me, ahol 6 mp-et várni kell, majd egy, button press és utána adja ki a stream urlt. Ezt valahogy JS-sel ki tudom kerülni? Gondolom postdata-t kéne küldeni, de hogy?
Itt egy példa [link].
Vagy pl van a videoget.me, ahol valahogy titkosítva van az url. Pl [link].
Illetve a Cloudzillába tört még bele a bicskám, de ahhoz nem találtam megfelelő linket.
Hogy lehetne kiparsolni az urleket ezekről az oldalakról sima JS-sel?
Ps: a linkek random lettek kiválasztva.
-
Nah, megvan!
Az volt, amit gondoltam. A for előtt létre kell hozni a változót (a StorageList-et), sztringként.
Egyébként direkt kezdődik 1-től az i, mivel a nulladik elem nem egy link, hanem az első link előtti rész. És mivel arra nincs szükségem, így láttam legegyszerűbbnek a 0-ik elem kikerülését.
Mondjuk a length meg asszem mindig 1-gyel többet ad vissza, mivel a nulladikat 1-nek számítja. Szóval lehet, h a for ciklusban a Storages.length-ből kivonok egyet.
Köszönöm még egyszer a segítséget!
-
Nem. Ha ezt a 2 módot használom, akkor nem jut el a kód a végéig (az alertig). Ha =-et teszek oda és nem használom a másik megoldást, akkor megy, de ugye csak az utolsót dobja ki az alert logikusan, hiszen ilyenkor nem hozzáadja, hanem lecseréli.
Lehet, hogy előtte egy var StorageList = '' kéne?
De kipróbálom ezt is, köszönöm!
Szerk.: kipróbáltam, de unexpected token >-ot dob... Ez valami JQuery-s cucc? Mert csak sima JS-em van...
-
Sziasztok!
Egy nagyon egyszerű feladatom lenne, de nem akar összejönni, mert bénázom...
Tehát van egy Storages nevű tömböm, ami URL-eket tartalmaz. Mindegyik tag 1 db-ot és a tagok száma változó. Namost, ezt ki kéne iratnom egy alertbe, egybe az egészet, mégpedig úgy, hogy az url-ek előtt legyen egy szám, majd maga az url, és egy sortörés, majd ismét egy szám, aztán url, sortörés...
Pl:
1 https://drive.google.com
2 https://dropbox.comNah, ezt úgy gondoltam egy mezei for ciklussal meg tudom oldani, de nem megy az a rész, ha már meglévő StoragesList változómhoz hozzáadjam a következő sort.
Ezt próbáltam:
for(i = 1; i <= Storages.length; i++){
StorageList = StorageList+i+' '+Storages[i]+'\n';
}Illetve próbáltam a StorageList = StorageList+i+... helyett a StorageList += i+...-ot is, de nem működött... Tudnátok helpelni?
Köszi!
-
válasz
fordfairlane #6130 üzenetére
Ezeket egy fájl parsolásából nyerem ki. De igaz, már az egész fájlban leet replacelni!
-
Szép estét!
Van egy tömböm. Mindegyik tagjának értéke egy https://<urlcim>/<kep>.jpg?<hosszuszamsor> link (ami <>-k között van, az mindig változik (dinamikus)).
Namost, van arra mód, hogy az összes esetben a https://-t lecseréljem http://-re? For-ral egyenként, a szokásos i+1 (amíg az érték kisebb/egyenlő, mint a tömb legutolsó száma) meg tudtam csinálni, de ha van rá gyorsabb megoldás, akkor annak örülnék!
Köszi!
-
válasz
Sk8erPeter #6089 üzenetére
Megy! Köszi!
A regex ilyen szinten még nem volt meg, de máris pótolom ezt a hiányosságom! Megvan a mai olvasnivaló.
-
válasz
martonx #6086 üzenetére
Hát igen, vannak benne Taskeres részek is. Ezért sem lenne sok értelme jsfiddle-re feltenni, mert úgyse tud lefutni. Szóval inkább feltettem pastebinre, de ha kell felteszem a fiddlere is.
A változók nevében ne keressetek logikát, hajnalban írtam, szóval nem volt fantáziám agyalni a neveken.
Néhány Tasker specifikus rész értelmezése:
readFile - ahogy a neve is mutatja, ki tud olvasni egy fájlt, amit li lehet menteni változóba
global & setGlobal - a Tasker is tud tárolni változókat, ez azért jó, mert a kód lefutása után is megmaradnak. Illetve ezeket tudom használni más Taskeres projektekben is. A global('változó neve') kiovassa a változó neve változót, míg a setGlobal('változó neve', 'érték') pedig berakja a változónak az értéket/másik változót
convert(változó, "htmlToText") - átalakítja a változóban a html formát, szövegre. Tehát a tageket lecsippenti. Sajnos a hangulatjeleket is, ezért kéne előtte feldolgozni a hangulatjeleket szöveggé.
flash(változó) & flashLong('érték') - kiírja egy androidos Toastba az adott értéket/változót. Hasznos pl debuggolásnál.
És a probléma:
A kódnak azt kéne csinálnia, hogy a Tasker/temp/file.html-ben található utolsó hsz-t és szerzőjét vágja ki. Majd a hangulatjeleket alakítsa át szövegesre, végül pedig alakítsa át szöveges formátumba (tehát a html tagek tűnjenek el) és ha van [ Szerkesztve ] a hsz végén, akkor azt is szedje le. Ez mind megy is szépen, ha a hsz tényleg csak hangulatjeleket tartalmaz. Ha van benne más kép is, akkor a hangulatjel és a kép közti részt kivágja. Ez logikus is, de nekem csak a hangulatjel tagjeit kéne kicserélnem. Van erre valami mód, ahelyett, hogy egyenként lereplace-lem az összes létező hangulatjelet, vagy a mostani "megoldás" helyett?
-
-
válasz
#68216320 #6083 üzenetére
Üdv!
Szeretném, ha kapnék egy értesítést a mobilomra, ha új hszek érkeznek egy adott ph topikba, illetve szeretném ezt egy változóban tárolni, hogy pl widgetbe beágyazható legyen. Ehhez Taskert és egy hányaveti JS kódot fabrikáltam, foggal körömmel.
Ki is tudja írni az utolsó hsz-t, viszont a hangulatjelekkel picit gondban vagyok. Mert htmlben szedem le az oldalt, tehát egy szmájli így néz ki '<img src="/dl/s/.*"/ >'. Természetesen a .* helyén az url, egy üres alt="" és maga a hangulatjel nyersen (pl :)) is megtalálható. Namost, nekem az kéne, hogy ha hangulatjel van a hszben, akkor hagyja meg a nyers formáját, de más képeket ne tüntessen el.
Próbáltam replace-szel, de az ha pl van egy hangulatjel és egy kép a szövegben, akkor a köztes részt is lecsippenti.
Hogy tudnám megoldani?
Köszi!
Ui.: arra gondoltam, hogy search-csel rákeresek az első találatra (n = res.search(/<img src="\/dl\/s\/.*/g);
fn = res.length;
cutres = res.slice(n, fn);
n2 = cutres.search(/ \/>/g+n);) és kivágom valahogy a változóból az n-től n2-ig tartó részt, de erre nem találtam parancsot.Ja és sajnos jQuery-t nem tudok használni, csak sima js-t. A tasker elvileg támogatja, de valamiért nem megy...
-
Köszi mindkettőtöknek!
Majd kipróbálom!
-
válasz
Sk8erPeter #5898 üzenetére
Már megoldottam.
Nem. Van egy mappa. Ebben csak képek vannak. A listFiles a Taskerben valami ilyesmit ad vissza:
/Mappa/Kep1.jpg
/Mappa/Kep2.jpg
[…]Na nekem az az ötletem támadt, hogy nyomok egy splittet a \n-re, azaz a sortörésekre és ezt belementem 'i' -be. Ekkor ha pl a /Mappa/Kep1.jpg-t szeretném kiiratni, akkor az i[0] kell nekem. Tehát a tömb nulladik eleme. Namost ennek a tömbnek a lenghtje alapján generáltatok vele egy random számot. (Math.floor) Majd ezt a random számot állítom be háttérnek. Eddig működött a dolog. Viszont azt is szerettem volna, ha az előző háttér tömbbeli értékét ne sorsolja ki még 1x, illetve nulla se legyen az a szám, amit így kapok, erre kellett volna nelem a for. A for azt nézte volna meg, hogy az előzőleg "I" Taskeres globális változóval egyezik-e a most generált szám. Ha igen, akkor addig futtatja, míg más nem lesz a kapott eredmény. Csak közbe rájöttem, hogy az amit összedobtam több sebből vérzik. (Pl a setGlobal a forban
) Ezeket közben kijavítottam és while-ra cseréltem a for-t. Ezt sikerült összehozni, ami működőképesnek látszik:
var Hatterek =listFiles("Hatterek", false).split("\n");
var number = Math.floor( Math.random()*(Hatterek.length));
while(number == global('OldScrBcg')) {
var number = Math.floor(Math.random()*(Hatterek.length));
}
while(number == 0) {
var number = Math.floor(Math.random()*(Hatterek.length));
}
setGlobal('OldScrBcg',number);
setWallpaper(Hatterek[number]); -
-
-
-
válasz
fordfairlane #5873 üzenetére
Tehát?
Azt szeretném, hogy addig fusson a for loopba, amíg az i értéke I-vel megegyezik. Ha jól látom a példád, akkor középre kéne a feltétel. Viszont én nem akarok a többi helyre írni, mert nincs szükségem pl arra, h hozzáadjon i hez minden alkalommal 1-et...
-
Sziasztok!
Lenne egy laikus kérdésem a forral kapcsolatban... Ez miért nem hajlandó működni?
Ja igen, a setGlobalt véletlenül a for ciklusba tettem, azt már javítottam, de még így sem jó...
Előre is köszönöm!
-
-
Karma leírta a lényeget.
Ez egy Taskerre készült parser. A taskerben pedig van JSON parse. Egyébként jQuery-t is lehet használni, csak ki kell választani mint plusz library.
A cél a sebesség volt, illetve, h olyan laikusok, mint én is könnyen tudjanak a kódhoz plusz részt írni a későbbiekben, ha szükség lesz rá.
Szerintem ez sikerült hála slice14-nek, Karmának és a többieknek a Js topikból!
Ui.: egyébként amit a rawdata változóba raktál(fájl tartalma) azt a tasker beépített parancsaival egy sorral is meg lehet oldani. ("readFile('xy')")
-
-
Sziasztok!
Tudom, h az if alap, de én is full alap (kuka) vagyok a témában...
Az lenne a kérdésem, h ifben hogy lehet megadni, h mondjuk akkor fusson le a benne lévő kódrész, ha xy=0, vagy mondjuk yx=0?
Az megvan, h egy változó, meg az "és" is, csak a vagy nincs meg.
Létezik ilyen?
Köszi!
-
megint! Nem győzök hajlongani! (Már kitörik a hátam
)
Bocs, de mint írtam totál noob vagyok ilyen témában. Nem ismerem a parancsokat.
Az én tudományom csak abból áll, h az általatok írt példákban lévő adatokat replacelem...
Ps: kerekíteni tudok úgy is, hogy .5-nél felfele kerekítsen ha jól értem?
-
Üdv!
Na, megint elakadtam/unk.
ezek a sorok furcsák:
var Jelenlegifok = Weather.current_observation.temp_c;
var Jelenlegihofok = Jelenlegifok.split('.');Az az érdekes, hogy a fenti kódban az 1 sor lefut, mert ha berakom globalba, látom a változó értékét, de a 2. sor már nem fut le.
És az utána lévő többi dolog sem fut le vmiért. (Mintha a var Jelenlegifok = Weather.current_observation.temp_c; után nem is lenne semmi.
A fentebb linkelt jsonban van az adat. (asszem ott pont nincs tizedesjegy, de amúgy így néz ki pl: 15.6 a temp_c) Általában mindig van tizedesjegy amúgy, legalábbis a teszt fájlomban van.
Ja és itt a mostani teljes kód.
Bármilyen ötletet/tippet szívesen fogadok!
P.s.
iztos van hiba a kódban, mert 1 tök amatőr vagyok 2 mobilról írtuk, ezért lehet benne elgépelés.
-
-
-
Most is tanultam valamit!
Még annyit szerettem volna kérdezni, hogyha alapból benne van a splittnél a tagben a pont, akkor hogy lehet azt megcsinálni, hogy karakternek tekintse?
(tudom ez nem megfelelő fogalmazás, de csak ahhpz tudnám hasonlítani, mint shellben a \ a "különleges" karakterek előtt)
-
Kedves Hölgyek, Urak
stb! Kedves Fórumtársak!Szóval... Csináltam slice14-el egy Taskeres (ez egy androidos automatizálóapp) xml parsert, aminek feladata leszedni wunderground APIról az aktuális időjárási adatokat.
Kicsit a cucc hosszú lett és elég lassan fut le, ezért elhatároztuk, hogy megcsináljuk JS-ben. (Úgy nézzetek rám, hogy soha nem volt még dolgom JS-el, kivétel egy weboldal és kuka vagyok belőle...
kb annyit tudok róla, hogy nem objektumorientált nyelv...
)
Na, szóval elkezdtem a cuccot, de már az elején elakadtam.
Ez a kód:
var Weather = readFile('/sdcard/Tasker/temp/weather.json');
setGlobal('%Weather',Weather);
var Napfelkel1 = Weather.split('sun_phase.sunrise.hour');
setGlobal('%Napfelkel1',Napfelkel1);Elősször is a readFile mögötti json tartalmazza az adatokat. ([link])
A setGlobal azért kell, hogy a változó bekerüljön a Tasker listájába
Eddig minden szuper
és itt akadtam el:
var Napfelkel1 = Weather.split('sun_phase.sunrise.hour');
setGlobal('%Napfelkel1',Napfelkel1);Valamiért az kerül a %Napfelkel1-be és a Napfelkel1-be, hogy undefined.
Szerintetek mit rontok el?
Egyáltalán hogyan kell splittelni, vagy kiszűrni az adatot a moon_phase-n és sunrise-on belüli hour-ból?
Ui.: Bocs, ha off, mert Tasker...
Előre is köszönök minden segítséget/tippet/ötletet!
MrDini
Új hozzászólás Aktív témák
Hirdetés
- Honor 400 lite 256GB, Kártyafüggetlen, 1 Év Garanciával
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
- Intel Core i7-8700, i7-9700 CPU, processzor - Számla, garancia
- DELL Universal Dock D6000 docking station (452-BCYH) (DisplayLink)
- LG 45GS95QE - 45" Ívelt OLED / 2K WQHD / 240Hz 0.03ms / NVIDIA G-Sync / FreeSync Premium / HDMI 2.1
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged