NAssist

This time I would like to publish my application that I wrote some time ago and I’ve been actively using. I call it NAssist. Purpose of this application is to provide an on demand window (accessed with global keyboard shortcut) that allows to enter some commands whose effects would be displayed inside it.

Basic application window

Basic application window

Application is written in Python 3 with PyQt5 and PyWin (for Windows) or python-xlib (for Linux). PyQt is used as an application framework while PyWin or python-xlib are needed for handling global hotkeys.

Usage

Global hotkeys are used to call application which is normally hidden in the background with icon in Notification Area or Tray (both on Windows and Linux). Application window can be called with predefined global hotkeys – CTRL + SHIFT + SPACE. On the other hand the window can be hidden with ESCAPE hotkey while focused.

Application in default mode appears only with one Command field which should be already focused by previously pressing mentioned hotkey combination (CTRL + SHIFT + SPACE). If it’s not, it can be made so by pressing them again. In this state application is ready to accept commands which are defined in __init__ function in mainwindow.py file. Those commands come from modules package.

Example of translation from English to Polish

Example of translation from English to Polish

Basic commands that come with the application are:

  • ap {text} – English -> Polish translator (google translate),
  • pa {text} – Polish -> English translator (google translate),
  • np {text} – German -> Polish translator (google translate),
  • pn {text} – Polish -> German translator (google translate),
  • sjp {word} – Polish language dictionary (sjp.pl).

To use one of those commands simply write them in Command field with arguments after space. The result of “ap I translate to Polish” is presented in the image on the right. As shown, the result appears right below the Command field, also the window is enlarged to make the result visible.

To quickly delete everything from Command field there is an additional hotkey – SHIFT + DELETE.

Writing own modules

Writing own modules is pretty straightforward. It requires a module to handle following events which are defined in BaseModule.py file:

  • onKeyPress(event) – key has been pressed inside application window, event represents PyQt event,
  • onTextUpdate(text) – argument text has been updated for given module (from command “ap text” only “text” will be passed,
  • onActivate() – current module has been activated,
  • onDeactivate() – current module has been deactivated (new module will be activated if command was changed, not removed),
  • onClose() – application is closing.

The basic commands are implemented using some more specialized base classes that are available for extension:

  • TranslatorModule – uses google translator to provide web page with results via “https://translate.google.com/#{}/{}/{}” pattern,
  • WebModule – is used to implement above module, can be used to add other webpages as commands.

Download and requirements

Application is already public on GitHub with GPL2 license.

Requirements for Windows:

Requirements for Linux:

  • Python 3
  • PyQt5 matching Python version
  • python3-xlib (pip install python3-xlib)

NViDo v0.3 Release

Tym razem chciałbym przedstawić mój nowy program. NViDo jest to aplikacja do pobierania filmów z serwisów takich jak Youtube. Zaletą programu jest prostota obsługi, która może sprowadzić się do skopiowania linku do schowka i wciśnięciu skrótu klawiszowego “SHIFT + ALT + D”. Innymi funkcjami aplikacji są:

  • NViDoodtworzenie filmu zaraz po ściągnięciu
  • tworzenie historii pobranych plików wideo (z której można bezpośrednio odpalić dany plik)
  • pobieranie również wersji HD jeżeli istnieje w serwisie

Aktualnie ilość serwisów, które NViDo obsługuje nie jest szałowa, ponieważ są to tylko (już wspomniany) Youtube i Vimeo (w przyszłości pewnie dodam więcej). Aplikacja jest w miarę odbugowana, jeśli wystąpią jakieś błędy to postaram się naprawić (choć nie obiecuję).

Pobierz

W tym miejscu chciałbym zareklamować również inną aplikację tego typu, a mianowicie jDownloader. Ten program, oprócz tego, że automatycznie pobiera pliki z takich serwisów jak rapidshare, potrafi ściągać filmy z większości znanych serwisów podobnych do Youtube.

jDownloader

Małe programy

Postanowiłem udostępnić dwie pomocne aplikacje, które były mi potrzebne kiedyś, więc sobie je na szybko skodziłem w ramach treningu. Oto one:

  • FileListing – aplikacja zapisuje ponumerowaną listę plików w katalogu, w którym została uruchomiona
  • NewLineFix -aplikacja naprawia wszystkie znaki nowej linii dodając do nich \r, przydatna przy czytaniu plików pisanych pod linuksem.

Mam nadzieję, że komuś się przydadzą :).

FTPUploader

Jak zwykle następny post powstał po dłuższej przerwie, ale muszę przyznać czasem mi się nie chce, a czasem po prostu nie mam czasu. Tak też było tym razem, brak czasu spowodowany był szkołą (tak 3 klasa LO zobowiązuje), ale udało się znaleźć w niej czas na drobne projektowanie, a poza nią na kodzenie (taak, to jest nałóg). W wyniku tego kodzenia udało mi się spłodzić program o nazwie właśnie FTPUploader. Szczególne podziękowania należą się Krystianowi Dużyńskiemu “KrystianD”, za pomoc w chwilach mojej niewiedzy oraz kod, który był mi potrzebny do realizacji założeń. No ale do rzeczy (ReadME):

FTPUploader jest to prosty program potrafiący wysłać plik na wskazany serwer
za pomocą 2 kombinacji klawiszy.
Aby rozpocząć korzystanie z programu należy dodać do bazy danych żądane serwery
FTP, przy czym w polu Adres download należy podać ścieżkę, która będzie dodawana
do adresu pliku (w przypadku republiki na koncie o loginie zgred będzie to
zgred.republika.pl). Wysłać plik można na 2 sposoby:

Standardowy – naciskasz “Wybierz plik”, wybierasz plik, a na końcu “Wyślij”.
po wysłaniu plik automatycznie skopiuje się do schowka, jeżeli przypadkiem
zmienisz wpis w schowku możesz nacisnąć pole “Ostatni link” co spowoduje
ponowne wpisanie linku do schowka.

Hotkey’s – ta metoda jest dużo lepsze, zwłaszcza dlatego, że program działa w tle.
Aby wysłać plik tą metodą wystarczy po prostu skopiować plik do schowka
(kombinacja klawiszy Ctrl + C), a następnie wysłać plik wciskając klawisze
Shift + Alt + S, po wysłaniu link do pliku znajdzie się w schowku.
Kombinacja klawiszy Shift + Alt + L powoduje wpisanie do schowka ostatniego
linka. (Uwaga kombinacja klawiszy powoduje zmiane klawiatury w Viście,
proponuje zostawić sobie tylko klawiaturę polską.)

Program posiada bazę linków, w której znajduje się 20 ostatnich linków.

FTPUploader

Pobierz

A na koniec pragnę życzyć wszystkim zdrowych, wesołych i owocnych Świąt.

Mój pierwszy program w C#

Wczoraj napisałem, mojego pierwszego tool’a w c#, program jest mi potrzebny do podziału scenerii z RPGcore. Sposób działania jest następujący:

1. Podaje się kod odpowiedzialny za wyświetlanie elementów otoczenia na mapie, kod ten z pliku scenery.dat w folderze z mapą wygląda nastepująco.

[skala] 4×2
22:22
24:22

Odpowiada to wyświetleniu na mapie o współrzędnych 22:22 i 24:22 obrazka skały o wymiarach 4×2 (w kostkach po 25×25 pikseli). Problem polega na tym, że gra korzysta z kratki w punkcie 22:22 (przykładowo) i wyświetla całą skałę która odpowiednio wychodzi na pozostałe kratki (np. 23:22 i 22:23). Problem polega na tym, że jeżeli zniknie nam z mapy punkt 22:22 to zniknie nam cała skała która powinna być jeszcze wyświetlana w punkcie 25:22. Rozwiązanie polega na tym, aby podzielić skałę na części 1×1 czyli kostki 25×25 pikseli. Sam plik nie jest tutaj problemem, ale musimy jeszcze zmienić zawartość pliku scenery.dat aby wyświetlała całą skałę. I tu z pomocą przychodzi właśnie to oto narzędzie, wystarczy wkleić kod odpowiedzialny za pokazywanie całej skały 4×2 a otrzymamy kod, który wyświetli nam skałę w kawałkach.


minicalc_s

Oto link.

Wymagania: .NET framework 2.0