slacky Skrevet 7. februar 2012 Del Skrevet 7. februar 2012 (endret) Jeg startet for en stund siden ett lite prosjekt for å lage en samling av macrofunksjoner, for Python, dette har utviklet seg til ett IDE (programmeringsmiljø), med fokus på automatisering. Kommentarer, og diskusjon skjer her: http://www.diskusjon...owtopic=1414664 Rafiki... er et Python basert program for å automatisere enkelte (kompliserte) oppgaver. Oppgavene krever ofte kontroll over musen og tastaturet, samt en mulighet for å "lese skjermen" (computer vision). Skriptene skrives i Python, det gjør det enkelt for nye personer å lære, samt så kan spares det mye tid ved å bruke Python versus Lav-nivå programmeringsspråk til slike oppgaver. Rafiki benytter seg av wxStyledTextCtrl som er en fleksibel løsning for syntax-highlighting fra wxPython - wxStyledTextCtrl er en wrapper rundt Scintilla biblioteket. PS: Jeg er på utkikk etter en (erfaren) Python programmerer som kan hjelpe meg med prosjektet - gratis (da Rafiki er non-profit) - se: http://www.diskusjon...owtopic=1512740 Tidligere MacPy Jeg har vel holdt på med dette prosjektet i ett år nå (tidligere under navnet MacPy), tidligere var det kun et bibliotek/modul for automatisering. Nå har jeg laget en litt mer fleksibel, og komplett løsning, følte at et nytt navn også ble passende. Jeg er langt i fra mål, men tror jeg at jeg er på rett spor nå, med en rimelig (enkel) IDE, og litt mer gjennomtenkt løsning enn tidligere. Rafiki er Open Source. 100% gratis planlagt cross-platform (testet på Windows og enkelte Linux-distroer). Skrevet i Python 2.7 - småting er akselerert i C. Rafiki har som mål å kunne Finn, samt les farger på skjermen Beveg og klikk musa, klikk på tastaturet Les tekst på skjermen/bilde (Optical Character Recognition) Finn, samt "analyser" bilder/områder på skjermen. Og mye mer i tankene... Selvfølgelig så kan Rafiki også gjøre alt det Python kan, og alle moduler installert i Python kan også brukes under Rafiki, ettersom vi bruker Python som script-motor (interpreter). Jeg vurderer å ta i bruk OpenCV, da jeg simpelthen ikke klarer komme i nærheten av hastigheten som oppnås ved å bruke OpenCV. Jeg sparer også mye tid på den måten. Krav (nødvendige moduler) wxPython (GUI)---- http://www.wxpython.org/ PIL (Bilde manipulasjon)---- https://pypi.python.org/pypi/Pillow/ Python-Xlib (for linux)---- http://sourceforge.n...ts/python-xlib/ ... Samt en CPython-installasjon. Screenshot Rafiki Pre-Alpha under Linux Mint Debian Edition Kildekode: Link til Rafiki på GitHub Endret 22. mai 2013 av warpie 1 Lenke til kommentar
slacky Skrevet 9. februar 2012 Forfatter Del Skrevet 9. februar 2012 (endret) * placeholder * Endret 8. mai 2013 av warpie Lenke til kommentar
slacky Skrevet 14. januar 2013 Forfatter Del Skrevet 14. januar 2013 (endret) Går i fra MacPy, har skrevet om hele prosjektet under navnet Rafiki! Nå har Rafiki en ganske rimelig editor/IDE integrert inn (men uferdig), med fullverdig syntax-highlighting og en god del funksjoner på vei! Vel, det du ser har jeg kun brukt et par uker på, så det er mye igjen! Endret 8. mai 2013 av warpie Lenke til kommentar
slacky Skrevet 10. mai 2013 Forfatter Del Skrevet 10. mai 2013 (endret) Da har jeg fått lagt inn Windows XP i VirtualBox! Det vil si jeg har fått startet med Windows-APIen, har snart Rafiki fungerende for Windows, vel det fungerer, men en del funksjoner som kommer til å bli brukt er ikke portet enda. Forskjeller mellom PIL, og Pillow: Har også fikset enkelte feil - pakke strukturen til Pillow er ikke helt lik PIL, oppdaget at jeg ikke kunne gjøre: >>> import Image Var nødt til å gjøre: >>> from PIL import Image Who knew... Har lagt merke til at det var noen uforklarlige problemer om vi kjører Rafiki under OpenSUSE - Det virket som det enten var feil i Python installasjonen (Python 2.7.3 - 64bit), eller noe annet (som jeg da ikke vet hva er), men jeg satser på at det er 64bit som har skylden (muligens wxPython-inkompatibilitet)..: rafiki.py importerer os - men, så fort jeg skulle kalde en funksjon fra os-modulen (fra en class), så påstod python at os ikke var definert. Løsningen var da noe innmari rart: import wx import os print os.sep # <--- WORKS xos = os #alias borfore entering class class test(wx.Frame): def __init__(self, parent, title): wx.Frame.__init__(self, parent, title=title) self.Show(True) try: print os.sep # <--- FAILS!! `os` is not defined except: print xos.sep # <--- Renamed = WORKS... -.- app = wx.App(False) frame = test(None, 'os') app.MainLoop() MEN, dette er ikke noe jeg kommer til å gjøre noe med, så denne hacken vil aldri se lyest. EDIT: GitHub er oppdatert med siste prealpha-versjon. w00p w00p! - Rafiki Pre-Alpha på Windows XP: Endret 11. mai 2013 av warpie Lenke til kommentar
slacky Skrevet 15. mai 2013 Forfatter Del Skrevet 15. mai 2013 (endret) Vel bare for å oppdatere, så kan jeg nevne hva som skjer for tiden! Jeg skriver om deler i C, mer spesifikk, "finder.py" skal konverteres til C, og så skal jeg ta det videre der i fra. Til nå har jeg skrevet "find_color(farge, posisjon, tolerance, etc, etc)" i C, og alle funksjoner den bruker (farge-konvertering, sammenligning av farger etc...). Hastighetsforskjellen fra python "find_color(..)" til "cfind_color(..)" var drastisk, men forventet. for å finne en farge med Python tok det 1sekund med RGB-avstand, i C (med Ctypes) tok samme funksjonen 9ms i dette tilfellet. Enda bedre gikk det da jeg forsøkte med HSB-avstand, da tok det 3 sekunder i python, mens kun 16ms i C! Var nok ikke like stor økning ved LAB-avstand, det gikk fra 3 sekunder til 200ms, bra men, ikke helt supert. - Området jeg itererte over var 1024x768px. Nå som det er gjort vil jeg gi et forsøk på å skrive en funksjon for å finne et lite bilde sin posisjon i et større bilde, dette vil også skje i C, da jeg husker mine tidligere forsøk på å gjøre lignende oppgaver i Python. PS: Har ingen tidligere erfaring i C, men får det meste til med litt dikkel. -- Dette er ikke alt som har blitt gjort, men det er det jeg finner nevneverdig. Endret 15. mai 2013 av warpie Lenke til kommentar
slacky Skrevet 18. mai 2013 Forfatter Del Skrevet 18. mai 2013 (endret) http://www.sikuli.org/ ? Nei. Det er vel likheter mellom mitt prosjekt og sikuli per nå, men, jeg har andre ønsker av funksjoner, og fokus. Selv om prosjektet ikke gjenspeiler dette per nå, så har jeg har et større fokus på "computer vision"... Ta for eksempel automatisering i spill hvor det kreves aktiv opplysning om det som rendres på skjermen (uten å injisere), menneskelige musebevegelser, etc, etc. Personer vil kunne skrive effektive boter kjapt og enkelt, leke seg med små AI-forsøk, generiske algoritmer, etc. Jeg er ikke like hypa på automatisering av desktop oppgaver, noe som jeg tror sikuli egner seg best til, jeg er heller ikke imponert over IDE-en dems, den var direkte heslig. Men, kanskje jeg tar feil, kanskje de faktisk har et fokus rettet mot computer vision, har en nydelig IDE, og i går feiret vi at verden ikke gikk under i 2012! =) Det er sikkert mulig å bygge noe rundt sikuli, men jeg har en "bad feeling about that"... #------------------ Bare for å oppdatere statusen kort, så driver jeg fortsatt å programmerer i C for å løse oppgaver som krever hastighet, og jeg later fortsatt som om at jeg får til noe som helst i C... Det går vel sakte fremover, men ingen nevneverdig fremgang. Samtidig så skriver jeg også småbiter i python, da for å utvide antall funksjoner (vi liker alle mange funksjoner og muligheter!). Jeg skal se på linux (x11)-versjonen av "printscreen"-funksjonen da den er så ufattelig treg, (200ms på kun 2.5millioner piksler, Windows versjonen bruker kun 30ms på det samme)... Jeg skylder på xlibs' XGetPixel, tror jeg kan skrive en funksjon som gjør det samme, som da er raskere... Endret 19. mai 2013 av warpie Lenke til kommentar
Terrasque Skrevet 18. mai 2013 Del Skrevet 18. mai 2013 Sikuli er ganske fiddly, enig. Var bare at din beskrivelse av prosjektet i starten iallefall minnet meg mye om den Har brukt den til automatisere små tasks (og facebook spill ) nå og da, og er vel fremdeles en av de bedre måtene å "programmere" UI der man må bruke screencaps. IIRC så bruker den OpenCV til å finne ting fra skjermskuddene. Uansett, tenkte det kunne være interessant å ta en titt på Lenke til kommentar
slacky Skrevet 18. mai 2013 Forfatter Del Skrevet 18. mai 2013 (endret) Redigert: Det er vel uansett greit å ha alternativer! :-) At Sikuli bruker OpenCV åpner opp for en hel masse muligheter, men OpenCV er ikke noe jeg vil først forsøke å unngå å ta i bruk i Rafiki, det er litt drøyt å ta i bruk programvare på 100MB, men kanskje verd det?? Har tidligere brukt OpenCV i et lib som jeg hadde for meg selv, det var utrolig hva jeg fikk til, hastigheten er helt ekstrem, og slett ikke mulig å matche! Så jeg har veldig LYST til å ta i bruk openCV, men.. 100MB... Får tenke på det. Finner jeg noe interessant i Sikuli, så skal du slett ikke se bort i fra at jeg legger det til --- Da var screenshot på linux (x11) oppdatert..: Screenshot av mine to skjermer med en total oppløsning på 2800*900 (2.52millioner piksler) brukte før 200ms, nå har jeg presset det ned til 55ms! - GitHub blir ikke oppdatert enda, er mye jeg ønsker gjøre ferdig først. Endret 20. mai 2013 av warpie Lenke til kommentar
slacky Skrevet 9. juli 2013 Forfatter Del Skrevet 9. juli 2013 (endret) Det går litt sakte, leker meg med en del med forskjellige tester/idèer. Har fått fikset litt opp i strukturen, pyntet en del på funksjoner, jobbet med en (enkel) dokumentasjon.Har også forsøkt å lage en "code browser"/funksjon- og klasse liste, måten jeg har laget denne på ser ikke ut til å være en smart måte å gå frem på: Jeg bruker "foldingen" fra StyledTextCtrl for å finne funksjoner, indentering og plassering, men ble litt for komplisert for min del. Pygments/eller ligende kan kansje være bedre å bruke, men det blir så massivt... Endret 17. oktober 2013 av warpie Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå