Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Doink
    aktív tag

    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.

    Vannak webworkerek, async és await is.

  • Mr Dini
    addikt

    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! :R

    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... :O

    Szerk.: Megvan! :C

    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! :)

  • fordfairlane
    veterán

    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... :DDD

    Hmmm, forEach, hogy ez nekem miért nem jut sosem eszembe... :DDD

    Ecmascript 5 óta van. Mondjuk 2009-ben lett belőle szabvány, szóval nem mai gyerek. :) Egyidős a beépített JSON objektummal.

  • fordfairlane
    veterán

    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! :R

    var titles = [];

    json.collection.forEach(function(item) {
    titles.push(item.track.title);
    });

    console.log(titles);

  • sztanozs
    veterán

    Ez világos. Csak két nap guglizás után sem sikerült rájönni, hogy azt a globális változót hogyan lehetne csak a get után lefuttatni... :B

    syntetic sugar:
    var DATA = '';
    function getPage(url) {
    http.request.get(url).then(function (response) {
    DATA = response;
    console.log(response);
    })
    }

    getPage('http://akarmi/');
    while(DATA === '');
    alert(DATA);

    Amúgy nem értem miért nem lehet az egész feldolgozást a then-be rakni, azt kész...

  • fordfairlane
    veterán

    Ez világos. Csak két nap guglizás után sem sikerült rájönni, hogy azt a globális változót hogyan lehetne csak a get után lefuttatni... :B

    Még mindig nem értem, miért ilyen elképesztően fontos ez a globális változó, mintha anélkül nem lehetne programot írni.

  • Jim-Y
    veterán

    Ez világos. Csak két nap guglizás után sem sikerült rájönni, hogy azt a globális változót hogyan lehetne csak a get után lefuttatni... :B

    Pedig kaptal mar ra itt konkret peldat is. getPage egy promisszal ter vissza..

  • Jim-Y
    veterán

    É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! :))

    Egyetlen egy dolog ami hatraltat teged, hogy foggal korommel ragaszkodsz ahhoz, hogy "fusson le a getPage es az eredmenyt irja bele a DATA valtozoba". Amit nem latsz at, hogy lehet olyan kodot irni, ami az eredmenyt beleirja egy globalis valtozoba, de te azt nem fogod tudni, hogy mikor tortent meg, mert az a valtozoba iras majd valamikor a jovoben fog megtortenni addig a kodod fut tovabb

    Szerintem ezt mar nem lehet tovabb ragozni, nem akarsz lathatoan utanaolvasni a dolgoknak, es most felre fogod dobni a nyelvet, mert nem tudsz valamit megcsinalni, sajat hibadbol, mert kb 15perc olvasassal mar vilagos lenne szamodra is, hogy mit hibazol el.

    /* 1 */ function getPage(url) {
    /* 3 */ http.request.get(url).then(function (response) {
    /* 5 */ DATA = response;
    /* 6 */ console.log(response);
    })
    }

    /* 2 */ getPage('asd');

    /* 4 */ alert(DATA);

  • CSorBA
    őstag

    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.

    A function is kód. :)

    De sejtem mire gondolsz és akkor valami ilyesmi kell neked:

    getPage('http://page1.hu').then((html) => doWhateverYouWantWithPage1(html));
    getPage('http://page2.hu').then((html) => doWhateverYouWantWithPage2(html));
    getPage('http://page3.hu').then((html) => doWhateverYouWantWithPage3(html));

    function doWhateverYouWantWithPage1(html) {
    // code1
    }
    function doWhateverYouWantWithPage2(html) {
    // code2
    }
    function doWhateverYouWantWithPage3(html) {
    // code3
    }

    Sokáig lehet ezt ragozni, de más megoldás erre nincs, a JS így működik. És azt is elhiheted, hogy ez a logikus és átlátható mód. Ha nem tetszik, akkor csinálhatod PHP-val és CURL-el mondjuk.

  • CSorBA
    őstag

    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! :R

    De a JavaScript nem így működik. A JS egy szálon fut. Ha valami külső dologra (async) kell várnia, akkor nem állhat le. Ugrik a következő sorra. Hát gondolj bele, ha valami hiba történne, vagy lassú lenne a net, akkor addig állna, míg be nem tölt valamit? És az állt úgy kell érteni, hogy addig semmit sem tudsz csinálni. Épp ezért egy ilyen asyncron kérés visszatér egy promissal, ami ha resolválódik. (Teljesül az ígéret) akkor meghívja a jövőben azt a függvényt, ami erre várt.

    Az általad hozott példát valahogy így lehetne használni:

    function getPage (url) {
    'use strct';
    return new Promise((resolve, reject) => {
    const httpLibrary = url.startsWith('https') ? require('https') : require('http');

    httpLibrary.get(url, (response) => {
    const body = [];

    response.on('data', (chunk) => body.push(chunk));
    response.on('end', () => resolve(body.join('')));

    }).on('error', (error) => {
    console.log('Error!', error.message);
    });
    });
    }

    getPage('http://vanenet.hu').then((html) => doWhateverYouWantWithHTML(html));


    function doWhateverYouWantWithHTML (html) {
    console.log(html);
    }

    A doWhateverYouWantWithHTML-be írod amit szeretnél csinálni, és ez akkor hívódik meg, mikor betöltődött sikeresen a page, amivel meghívtad a getPaget.

    Szerk.: De ahogy látom Jim-Y fórumtárs is erre próbált fentebb rávezetni, egy hasonló példával.
    Tényleg olvasgass a témában, nem feltétlen egyszerű, de mindenkinél van egy pillanat mikor átkattan és megérti.

  • CSorBA
    őstag

    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... :W :F

    #6331

    Nem, nem használok express-t. Sima nativescript.

    Sajnos nem érted, amit itt többen is írtak.

    A .then callbackjében lévő rész egész egyszerűen később fut le, mint az alerted. Ezért az alertedben soha sem fogod elérni. Ha csinálnál egy függvényt, amibe berakod az alertet és azt hívod meg a .then callbackjében, akkor már megy, hiszen ez akkor hívódna meg, mikor már az async műveletnek van eredménye.

  • tick
    aktív tag

    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.

    Feltételezem express-t használsz.
    A kódod http kérés utáni részét (res.send-el együtt) mozgasd át a callback functionbe, úgy mennie kéne.

  • fordfairlane
    veterán

    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.

    A http csomag szerintem ebben a formában sohasem fog működni, úgy nézem, egyáltalán nincs szinkron üzemmódja. Vagy használj más csomagot, pl. az említett http-syncet, vagy ne így dolgozd fel a kapott kódot, hanem egy calbackben, vagy promise resolveban.

  • tick
    aktív tag

    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?

    Ha megosztod mit kell csinálni a az appnak, könnyebben tudunk szerintem segíteni hogy kéne kinéznie async felhasználásával :)

  • dqdb
    nagyúr

    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;
    }

    Széllel szemben nehéz lesz ;]

    Az egész Node.js éppen az aszinkron működésre épít, így minden esetben, amikor nem aktívan dolgozol, hanem valami erőforrásra vagy eseményre vársz, legyen az hálózatról adat lekérése, fájl írása* vagy adatbázis-művelet, mindig egy callbackben kapod meg a végeredményt. Ennek az az oka, hogy a szinkron várakozás blokkol egy feldolgozószálat, és csökken a szerver feldolgozási képessége, míg aszinkron esetben az adott szál lazsálás helyett értelmes munkára is befogható, vagyis egy másik kérés feldolgozására. Most mondhatod, hogy de te ezt nem kérted, azonban azzal, hogy a Node.js alapon álltál neki, pont egy aszinkron, threadpool alapú hatékonyan skálázódó platformra esett a választásod, így vagy megszoksz, vagy megszöksz ...

    Kókányolni szerencsére sajnos minden platformon lehet, így itt is, és valószínűleg ezt keresed (nem használtam soha, keresés dobta ki). De itt sem nem véletlenül kezdődik a leírás a Githubon elérhető legnagyobb betűméretű bekezdéssel, hogy miért ne használd ezt a libraryt.

    viszont gondolom node js-nél a CORS miatt nem megy
    A CORS böngésző szintjén értelmezhető csak. A Node.js azért nem támogatja az XHR-t, mert saját API-ja van, nem a böngésző DOM modelljét másolja.

    * ebből kivételesen létezik szinkron API is, de ennek ellenére a aszinkron felület felé terelnek a hivatalos dokumentációban:

    "In busy processes, the programmer is strongly encouraged to use the asynchronous versions of these calls."

  • Jim-Y
    veterán

    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;
    }

    De ezt nem tudod megcsinalni, mert az asynchronous non-blocking I/O ahogy a javascriptet illetni szoktak lenyege pont az, hogy az async operationok nem blokkoljak a vegrehajtasi szalat. Magyaran, beallithatod te az XHR-t szinkronra, hogy amikor az mondod, hogy getPage(xyz) akkor az eredmeny rogton a DATA-ban legyen, de akkor az egesz javascript/nodejs filozofialval szembe mesz es amugy is ilyet nem csinalunk. Nem veletlenul minden async... Tenyleg javaslom hogy olvasgass kcsit a temaban, mert ugy tunik, hogy nem erted kristaly tisztan hogy hogy is mukodik a javascriptben az async.

    Magyarazat:

    a getPage belul egy requestet hasznal ami egy http keres lesz egy szerverre, amig erre a http keresre nem erkezik valasz addig NEM SZABAD blokkolni a stacket mert a javascript egy vegrehajtasi szallal (egy stackel) rendelkezik es minden UI is ezen "fut". Ha te egy szinkron kerest csinalsz, mint amit pont most szeretnel elerni akkor egez addig amig a tavoli szerver vissza nem ter addig SEMMIT sem tudnak a felhasznalok csinalni az oldaladon. Mondanom sem kell, hogy ez az egyik legnagyobb antipattern. Helyette aszinkron kell a tavoli szerver kerest kezelni. Vagyis... elinditod a kerest, majd rogton "visszaadod a vezerlest a fo szalnak" persze javascript eseten nincs ertelme ennek a mondatnak de igy konnyebb elkepzelni. Ami tenylegesen tortenik az az hogy amikor elinditasz egy requestet akkor a webapi regisztral egy callbacket amit tcp socket valasz eredmenyevel fog meghivni. Promiszok eseten a callback egy rezolvalt promis lesz.

  • tick
    aktív tag

    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! :(((

    Ha ez egy játszós project, akkor használhatsz sync megfelelőt, pl http-sync.
    Viszont az egész nodeJS lényege hogy non-blocking async. Minden sync function egy pofon a teljesítménynek, ugyanis addig minden más várakozik.

  • Jim-Y
    veterán

    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! :(((

    Szia,

    Ami neked kell az, hogy utananezz az aszinkronitasnak es a promisoknak javascriptben, mert igazabol ilyen jellegu a problemad.

    Javascriptben a legtobb network hivas aszinkron, vagyis a hivas eredmenye valamilyen jovobeli idopontban lesz csak meg, es mivel a nyelv kornyezete tamogatja az ilyen jellegu hivasokat aszerint is kell kezelni oket. Ennek megkonnyitesere vannak a promisok amiket te mar hasznaltal is a kododban csak valoszinuleg rosszul.

    az alert(getPage(valami)) mar csak azert sem mukodhet, mert ezzel a sorral azt feltetelezed, hogy a getPage szinkron fuggveny pedig nem az!

    Pszeudokod:

    function getPage(url) {
    return http.request({ url: url, method: "GET" });
    }

    function yourLogic() {
    const URL = 'http://www.vanenet.hu';
    getPage(URL)
    .then(function (response) { alert(response); })
    .catch(function (err) { console.error(err); })
    }

  • Mr Dini
    addikt

    Ü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.... :B

    Tudbátok segíteni?

    Köszi! :R

    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! :(((

  • sztanozs
    veterán

    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! :R

    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");

    var data = [];
    post.replace(/<a[^>]+?href="(.*?)"/gi, function(a,b,c,d) { data.push(b) });
    //alert(data);

  • sztanozs
    veterán

    Ü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! :R

    Ui.: ha kell, délután csatolok fiddle-t is.

    Hali, talán azért, mert a [^target]+ minden olyan több karakterből álló részre keres amiben nincsenek t,a,r,g,e betűk.
    Amúgy:
    <a href="(.*?)target

  • martonx
    veterán

    Ü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! :R

    Ui.: ha kell, délután csatolok fiddle-t is.

    Nem hiszem el, hogy ennyire nem lehet a megfelelő problémához, megfelelő eszközt használni. Ez esetben ne jsfiddle-t csatolj, hanem regexr példát.
    És mire ezt megteszed lehet, hogy sikerül is megoldanod a feladatod. :F

  • Jim-Y
    veterán

    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. :D

    Ezt futtasd le és ugy elképzelhető, hogy mobilon is használható lesz. disclaimer: nem teszteltem

  • sztanozs
    veterán

    Hát ja, csak akkor meg nehézkes lesz megosztani másokkal a kész förtelmes kódot... :D

    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á.

    Nem hiszem, hogy ez szerver konfigurációban dől el.
    A weboldal headerjében kell benne lennie: Access-Control-Allow-Origin "*"

    Pl php header.

    A YT-os kérdésre. Mi lenne a video id, amit ki kellene bányászni?

  • sztanozs
    veterán

    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? :F

    Úgy tudod megkerülni, hogy beállítod a böngészőt, hogy ne védjen meg a cross-site támadások ellen.
    Chrome
    IE
    FF

  • Mr Dini
    addikt

    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

    :R Köszi a példát! Van még mit tanulnom... :B

    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? :F

  • Jim-Y
    veterán

    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;
    }

    Egyebkent irtad hogy a pythonban az a jo, hogy van egy hasznos lib amivel konnyu http requesteket csinalni, es hogy ez js-ben hianyzik. Na ez pl annyira nem igaz, hogy par sornyi kodbol tudsz csinalni egy alkalmazast amiben ennyi a request resz (t.k ugyanaz amit te is mutattal) https://preview.c9users.io/mogyibogyi/promo/client/js/main.js

    Az alkalmazas fajljai: https://preview.c9users.io/mogyibogyi/promo/
    Demo: https://promo-mogyibogyi.c9users.io

    Btw: nyilvan linkelni is lehetett volna egy fetch polyfillt de az too-lame :)

  • Jim-Y
    veterán

    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;
    }

    Szia, gondoltam, annyi a megoldas, hogy az index.html-t ne csak siman megnyisd a bongeszoben, hanem egy webszerverrel szolgald ki. A legegyszerubb, ha bemesz abba a konyvtarba ahol a fajlod van es python -m SimpleHTTPServer . Majd a bongeszodben: localhost:8000 forras: [link] De akar node-al is siman meg lehet csinalni par sornyi kodbol es ott meg CORS-ot is tudsz allitani ha kene.

  • fordfairlane
    veterán

    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;
    }

    A kódodban az XmlHttpRequest objektum open metódusában a harmadik paraméter true. Ez azt eredményezi, hogy aszinkron módban akarod használni. Ilyenkor az utána következő send metódus azonnal visszatér, nem várja meg a szerver válaszát. Vagy használd szinkron üzemmódban, vagy úgy használd, ahogy az én példakódomban.

    1. new-val példányosítasz
    2. onreadystate-re beállítod, hogy a response-nál mi történjen.
    3. open(method, url, async)
    4. setRequestHeader, amennyiben szükséges
    5. send

    És ha már functiont használsz, inkább a visszatérésben szerepeljen a responsedata, ne globális változóba tedd.

  • Jim-Y
    veterán

    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... :(

    hogy probaltad lefuttatni? megnyitottal egy index.html-t es ugy vagy node?

  • sztanozs
    veterán

    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... :B

    Íme a teszt próbálkozás, ami nem működik.

    Köszi a válaszokat! :R

    Szerk.: A lényeg az lenne, hogy a gombot megnyomva felugorjon egy alert, a "kicsomagolt" résszel.

    Nem escape-eled a stringet (quote és backslash karaktereket), az a baj.
    Ráadásul nem is csinálsz semmit a viszzaadott értékkel.

    Csekkdiszáut: [link]

  • fordfairlane
    veterán

    Van, de a prompt helyett nem jó a log...

    Attól függ, mire akarod használni a bemenetet. Debuggoláshoz nincs rá szükség, a console.log viszont nélkülözhetetlen.

  • fordfairlane
    veterán

    Nah, erre nem gondoltam, pedig fent van és szinte naponta használom a nodejs-t... :D

    Köszi!

    Szerk.: csak az alertet és a prompt-ot kéne megoldani valahogy.

    Nodejs-n nincs console.log?

  • Jim-Y
    veterán

    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. :DDD

    A nulladik elem kihagyása pedig a kezdetektől meg volt oldva.

    Azért köszi és teljesen igazad van! :R

    ha csak szervered van terminallal akkor ott a node ahol ki tudod probalni. beirod a kodot egz .js fajlba es
    > node test.js

  • Sk8erPeter
    nagyúr

    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... :DDD

    Ha ahhoz is lusta vagy, hogy a böngészőben kipróbáld némi kiegészítésekkel, akkor miért nem vagy lusta megkérdezni itt a fórumon? SOKKAL tovább tart az egész hozzászólást megírni, mint kipróbálni azt a nyomorék kódot.
    Csak saját okulásod céljára kérlek nyomj egy Ctrl+Shift+I-t, kattints a Console tabra, majd dobd be ezt a pici kódot:

    var storagesArray = ['https://drive.google.com', 'https://dropbox.com'];
    var storagesAsString = '';
    var i = 0;
    for(i = 0; i < storagesArray.length; i++){
    storagesAsString += (i + 1) + '.: ' + storagesArray[i] + '\n';
    }
    alert(storagesAsString);

    Jé, nahát, működik, gondolom csodát láttál.
    Ilyen nagy erőfeszítésekre gondoltam, amikkel akár egyből ki is próbálhatod, mi a búbánattól vérzik el a kódod. Amíg nem tanulsz meg rájönni a saját kódod hibáira, addig programozni sem fogsz megtanulni soha. Mindig mástól várni a segítséget megint csak nem jó út.

    Ha meg a 0. indexen lévő elemet nem szeretnéd kiíratni, akkor igazítsd hozzá a kódot:

    var storagesArray = ['EZ NEM KELL', 'https://drive.google.com', 'https://dropbox.com'];
    var storagesAsString = '';
    var i = 1;
    for(i = 1; i < storagesArray.length; i++){
    storagesAsString += i + '.: ' + storagesArray[i] + '\n';
    }
    alert(storagesAsString);

  • fordfairlane
    veterán

    Tudom, valahogy xmlhttprequest -tel lehetne küldeni. Direkt írtam is, hogy nehezebb a JS esetében.

    Python alatt meg a sok library megkönnyíti a dolgot.

    Egy sima POST request küldése pár sorból megoldható, mindenféle framework nélkül.

    var req = new XMLHttpRequest();
    req.onreadystatechange = function() {
    if (req.readyState == 4 && req.status == 200) {
    // Ebben van a valasz: req.responseText;
    }
    }
    req.open("POST", "submithandler.php", true);
    req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    req.send("var1=data1&var2=data2&var3=data3");

    A Fetch API-val meg még egyszerűbb.

  • martonx
    veterán

    Az lesz, csak így könnyebb szerintem összehozni. Ha kész, akkor átrakom.

    Bár erősen gondolkozom inkább egy python kódban, mert ott van postdata küldés is, ami js-sel nehéz lenne, plusz rengeteg lib van hozzá. :) Lehet, h kivy-vel és py4a-val fogom összehozni.

    Miből gondolod, hogy js-el nem lehet post data-t küldeni? :D Nem mondom, hogy rossz lenne a python, csak inkább az érveiden mosolygok :)

  • Jim-Y
    veterán

    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... :DDD

    Miert nem csinaltok pl cordovaval egy kulon alkalmazast erre, miert szenvedtek a taskerrel?

  • Sk8erPeter
    nagyúr

    Nah, megvan!

    Az volt, amit gondoltam. A for előtt létre kell hozni a változót (a StorageList-et), sztringként. :C

    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!

    Az ilyen halál egyszerű kódrészleteket egyébként nyugodtan kipróbálhatnád a fejlesztői panelben is, úgy, hogy bedobod a konzolba, csak alakítsd át egy picit úgy, hogy tesztelhető is legyen. Nyomsz egy Ctrl+Shift+I-t (vagy F12-t), rányomsz a Console fülre, majd bedobod a kódodat. Vagy erre van a jsFiddle, csak akkor is nyisd le a konzolt, hogy lásd az esetleges hibákat, amiket oda dobál ki. Meg hát nyilván ennél kicsit szofisztikáltabb módszerek is léteznek, például valami komolyan vehető fejlesztőkörnyezet használata, JSHint, JSLint, meg egyéb módszerek, amik hozzájárulhatnak a kódod minőségének javításához.

    Amúgy igen, inicializálni kell a változódat, mielőtt a nemlétező korábbi értékéhez akarsz hozzáfűzögetni bármit, és ha nem akarsz "Uncaught ReferenceError: <VALAMIVALTOZO> is not defined" jellegű hibákat kapni. Például ezeket a hibákat azonnal láttad volna, ha a konzolba dobálnád be a kódot, vagy abban a környezetben, aminél használod a kódot, kihasználnád a rendelkezésre álló, hasonló jellegű hibakeresési módszereket.
    Ezenkívül JavaScriptben nem szokás a változókat nagy kezdőbetűkkel írni.
    Plusz ha alert-üzenetbe akarod mindezt kiírni, akkor valami nem stimmel, valószínűleg lenne ennél szebb megoldás (az alert-dialógus elég bénácska és korlátozott, persze tesztelésnek néha elmegy (ha nagyon muszáj), ha nem tudsz épp debuggolni, plusz nem felel meg a console.log, stb.).

  • w.miki
    veterán

    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.

    eddig lekezelte, nem tudom, mi változott 2 hete, de előtte jó volt
    egyébként meg ha kiszeded a film linkjéből, a "http://j.gs/xxxxx" (szám) szöveget, és csak a "http://filmezz"-tól hagyod meg, akkor nem megy az adf.ly-ra
    Most csak az indavideos rész jó.
    Gondolom a többi function épp az ilyen kattintások miatt van, de... csak tippelgetek... :(

  • w.miki
    veterán

    Ü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? :R

    Ps: a linkek random lettek kiválasztva.

    nézz bele a filmezz.eu.zip-be, hátha kapsz ötletet...
    vagy megmondod, azzal mi a baj :B

  • fordfairlane
    veterán

    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.com

    Nah, 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?

    :R Köszi! :R

    <script>
    var Storages = ['https://drive.google.com', 'https://dropbox.com'], StorageList = '', i;
    for(i = 0; i <= Storages.length - 1; i++){
    StorageList += String(i + 1) + ' ' + Storages[i]+'\n';
    }
    alert(StorageList);
    </script>

  • Jim-Y
    veterán

    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... :(

    Amit írtam az sima js.

    Nem tudsz valami példa kódot feldobni, mert így elég nehéz segíteni :S Egyébként a ciklusváltozód 1-től megy n+1-ig, míg a tömbök nullától vannak indexelve, így az első elemet mindig kihagyod szerintem.

  • Jim-Y
    veterán

    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.com

    Nah, 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?

    :R Köszi! :R

    És mi nem megy benne? Mindig azt írja ki, ha pl Storages 12 elemes, hogy

    12 url
    12 url
    12 url

    ? Ha igen akkor

    Storages.forEach((storage, index) => {
    StorageList += `${index} ${storage}\n`;
    });

  • fordfairlane
    veterán

    Ezeket egy fájl parsolásából nyerem ki. De igaz, már az egész fájlban leet replacelni! :R

    Inkább érdemes kiszedni a https-t az URL-ből, ha úgyis mindegy, mert az adott kép elérhető http és https-sel is.

  • fordfairlane
    veterán

    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!

    Gyorsabb? Mondjuk ha nem tennéd bele az url-be a https-t, és nem cserélgetnéd. Csak miután kiolvasod a megfelelő értéket a tömbből, akkor fűznéd az image url elejére a megfelelő protokollt.

  • Sk8erPeter
    nagyúr

    :C 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ó. :)

    Örülök, hogy sikerült, szívesen. :)

  • Sk8erPeter
    nagyúr

    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.

    Itt a teljes kód förtelem. :D

    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?

    A smiley kivágására szolgáló reguláris kifejezés így nem jó, túl megengedő, és érthető, hogy kivágja a többi részt is. Le kell szűkítened olyan módon, hogy ténylegesen csak a smiley-kra illeszkedjen, és konkrétan azt a részt szedd ki, ami neked kell, tehát ami az alt attribútumnál meg van adva.

    Itt van egy példa a smiley-kra szolgáló képre:

    <img src="/dl/s/d1.gif" alt=":D">

    Ebből neked értelemszerűen az alt attribútum értékének megadott :D kell, idáig Te is eljutottál.

    Itt egy példa egy jól működő replace-re:

    var emoticonImg = '<img src="/dl/s/d1.gif" alt=":D">';
    var emoticonText = emoticonImg.replace(/<img src="\/dl\/s\/[^"]+\.gif" alt="([^"]+)">/, "$1");
    console.log(emoticonText); // output: :D

    Ezt a reguláris kifejezést persze el kell látnod a megfelelő flagekkel, hogy jól működjön, itt leszűkítettem a lényegre.

    Szerk.: a reguláris kifejezésben szereplő [^"]+ azt jelenti, hogy itt egy vagy több olyan karakternek kell szerepelnie, amely nem egyezik az idézőjellel (").

  • martonx
    veterán

    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.

    Itt a teljes kód förtelem. :D

    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?

    gondoltam fiddlerre csak a lényeget tennéd fel, azaz a var raw = "ide jönne egy jó nagy html string, ami tartalmaz mondjuk pár ph-s hsz-t", és máris futtatható, debugolható lenne a kódod bárhol.

  • martonx
    veterán

    1. Sorry, nem válasznak ment...

    2. Elírtam, az n2-nél a g+n);) helyett g)+n;-nek kéne lennie.

    3. Senki? :D

    Talán ha jsfiddle-ben szemléltetnéd a problémád lényegét, akkor lehet lenne valaki aki ránézne. Így most ebből nekem csak annyi jött le, hogy mintha regexp problémád lenne, valami custom cuccal. Így a customsége miatt nem is érdekel tovább a probléma.

  • Mr Dini
    addikt

    Ü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...

    1. Sorry, nem válasznak ment...

    2. Elírtam, az n2-nél a g+n);) helyett g)+n;-nek kéne lennie.

    3. Senki? :D

  • fordfairlane
    veterán

    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 :Y) 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]);

    1. a var kulcsszót egyszer kell használni a number nevű változó esetében, mondjuk mikor először adsz neki értéket.
    2. ha csak egy kép van, a while végtelen ciklust eredményez.
    3. Ha number nem lehet nulla, mert a setWallpaper nem nullával indexeli a háttérképeket, akkor egyszerűbb a randomszám generálást úgy megírni, hogy egytől kezdődően dobjon számokat.

    Math.floor(Math.random() * (max - min)) + min;

    azaz jelen esetben

    Math.floor(Math.random() * (Hatterek.length - 1)) + 1;

    4. Elég a while ciklusban randomszámot generálni, nem kell két Math.random sor.

    Szóval ebben a formában valami ilyesmi célszerűbb:

    var Hatterek = listFiles("Hatterek", false).split("\n");
    var number;

    if(Hatterek.length > 1) {
    while(number == global('OldScrBcg')) {
    number = Math.floor(Math.random() * (Hatterek.length - 1) + 1);
    }
    } else if(Hatterek.length == 1) {
    number = 1;
    }

    if(number) {
    setGlobal('OldScrBcg', number);
    setWallpaper(Hatterek[number]);
    }

  • Sk8erPeter
    nagyúr

    Tehát? :F

    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...

    "Azt szeretném, hogy addig fusson a for loopba, amíg az i értéke I-vel megegyezik."
    És ki fogja átállítani azt a mágikus globális I változót?
    Igazából egyébként ez a kódrészlet és a feladatspecifikáció teljesen érthetetlen:
    "A feladata az, h kiírja a listFiles tartalmát, levágja splittel a sortöréseknél (azaz a következő fájl nevénél) és generál egy random számot, amit utánatesz az 'i' mögé kapcsoszárójelek közt. Azaz a split miatt így tudok hivatkozni a tömbösített változóra. Na szóval értitek... :DDD"
    Nem, nem értjük. :) Először a splittel készítesz egy tömböt, ez lesz az i változó. Itt gyorsan hozzátenném, hogy leszokhatnál az ilyen teljesen értelmetlen nevű változókról, inkább legyen egy mondatnyi hosszúságú változót, mint egy ilyen értelmetlen fos. Mit jelent az, hogy a tömb után akarsz teni valamit kapcsos zárójelek közt? Úgy érted, hogy a tömb összes stringeleme mögé akarsz fűzni valamit? A tömbbe akarsz bedobni egy újabb változót? Vagy mi a célod?
    Mert itt a ciklusok, meg az egész kód ennek fényében tök értelmetlennek tűnik.

  • Mr Dini
    addikt

    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! :R

    Húú!

    Most látom, h ez úgy rossz, ahogy van! :B

    Na mind1, a lényeg, h a while-lal működik! Köszi srácok! :R

  • trisztan94
    őstag

    Ez oké, a gugli nekem is a barátom!

    De nekem ezekre nincs szükségem:
    i < 10, i++

    Mind1, megcsinálom ifbe. Olyan meg csak nem lesz, h az if után is ugyanazt a számot sorsolja ki! :D

    while ciklus:

    while(i != global(I)) {}

    Pontosan erre való, bár ritkán használt. Néha még én is elfelejtem, hogy létezik. :DDD

  • Zedz
    addikt

    Ez oké, a gugli nekem is a barátom!

    De nekem ezekre nincs szükségem:
    i < 10, i++

    Mind1, megcsinálom ifbe. Olyan meg csak nem lesz, h az if után is ugyanazt a számot sorsolja ki! :D

    Ha azokra nincs szükséged, akkor minek neked for? Miért nem foreachet használsz?

  • DNReNTi
    őstag

    Tehát? :F

    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...

    Tehát:
    Egy baromi egyszerű példa for ciklusra, bár fordfairlane és éppen ezt írta le, csak én áttettem neked gyakorlatba, ez alapján már egész biztosan mennie kell:

    for(var i = 0, i < 10, i++) {
    console.log(i);
    }

  • Jim-Y
    veterán

    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! :R

    Szia. Mobilról. Nincs ezzel semmi gond, lehet olyan for ciklust írni ahol az inicializaciot nem a for-ban hanem előtte végzed, illetve a leptetest sem bízod a ciklusra, hanem a torzsben magadtól végzed. Általában ezeket szoktak kihagyni de a kilépési feltételt nem. Bár szerintem meg azt is ki lehet hagyni hisz ott a break. A te esetedben rossz bucketbe került a kilépési feltétel. Udv

  • fordfairlane
    veterán

    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! :R

    Laikusként használhatnád a for-t úgy, ahogy a specifikációban szerepel.

    for([inicializálás], [ciklus feltétel], [ciklus utasítás]) {
    utasítás;
    }

    Első ránézésre ez valami überh@xOr for ciklus, amiben nincs se feltételvizsgálat, se léptetés, és emiatt végtelen ciklussá válik.

  • slice14
    veterán

    Írtam privit.

    Vigyázz arra, h csak a Taskerben egyenlő a (változó) értéke a nevével, a JSben null és az ifben nem kell '-közé tenni a null-t. Gondolom tudod, de azért leírtam biztos, ami biztos alapon, mert én épp most szívtam vele. :/ :DDD

    Köszi, nézem. :)

  • slice14
    veterán

    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! :R :R :R

    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')") ;)

    Itt inkább a probléma a hiányzó adatoknál lehet csak legfeljebb, mert ha nincs adat az adott változóhoz, akkor a változó nevét jeleníti meg a tasker a notifiben, sceneben vagy akár a zooperben. De mivel nem volt ehhez hasonló megoldás a kódban, így marad az if.

    Na de nem a hiányzó adat volt a téma.

  • inf3rno
    nagyúr

    Sziasztok!

    Tudom, h az if alap, de én is full alap (kuka) vagyok a témában... :U

    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? :F

    Köszi! :R

    if (xy == 0 || yx == 0)

    de ha tudod, hogy csak számok lehetnek, akkor

    if (!xy || !yx)

    elképzelhető, hogy bináris operátorokkal trükközve még gyorsabb, de ahhoz nem értek, és valszeg neked sem lesz rá soha szükséged, ha webre tákolsz.

  • Karma
    félisten

    :R megint! Nem győzök hajlongani! (Már kitörik a hátam :D)

    Bocs, de mint írtam totál noob vagyok ilyen témában. Nem ismerem a parancsokat. :B Az én tudományom csak abból áll, h az általatok írt példákban lévő adatokat replacelem... :DDD

    Ps: kerekíteni tudok úgy is, hogy .5-nél felfele kerekítsen ha jól értem?

    A toFixed(0) automatikusan így csinálja.

  • Karma
    félisten

    Ü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! :R

    P.s.:Biztos van hiba a kódban, mert 1 tök amatőr vagyok 2 mobilról írtuk, ezért lehet benne elgépelés. :B

    A Weather.current_observation.temp_c egy szám, nem string, így nincs is neki split metódusa. Felejtsd már el végre, vedd úgy, hogy nincs is ilyen a nyelvben :)

    Úgy látom, hogy a fok egészrészét próbálod meghatározni, erre használd inkább a toFixed metódust. Ez még kerekít is egy kicsit.

    Szóval:

    var Jelenlegifok = Weather.current_observation.temp_c;
    var Jelenlegihofok = Jelenlegifok.toFixed(0);

  • Karma
    félisten

    Megoldottam! :C

    Mostmár csak az érdekel, h a speciális karakterek elé mit kell rakni, h szövegrészként és ne másként kezelje.

    Ugyanúgy \-rel kell escape-elni.

    Viszont splittel darabolás helyett szerintem megpróbálhatnád a környezettel feldolgoztatni a JSON-t, és a kapott objektumban navigálni.

    var Weather = JSON.parse(readFile(...));
    setGlobal('%Napfelkel1', Weather.sun_phase.sunrise.hour);

  • Mr Dini
    addikt

    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... :B kb annyit tudok róla, hogy nem objektumorientált nyelv... :DDD)

    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 :C é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. :F

    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... :U

    Előre is köszönök minden segítséget/tippet/ötletet! :R

    MrDini ;)

    Megoldottam! :C

    Mostmár csak az érdekel, h a speciális karakterek elé mit kell rakni, h szövegrészként és ne másként kezelje.

  • Zedz
    addikt

    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... :B kb annyit tudok róla, hogy nem objektumorientált nyelv... :DDD)

    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 :C é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. :F

    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... :U

    Előre is köszönök minden segítséget/tippet/ötletet! :R

    MrDini ;)

    "kb annyit tudok róla, hogy nem objektumorientált nyelv"

    Eeeerm. :)) Igaz kicsit más, de nem jelenteném ki, hogy nem objektumorientált.

Új hozzászólás Aktív témák

Hirdetés