PDFTk Gui – join, rotate and extract pdf files

Simple GUI for pdftk. It can be used only for join, rotate and extract PDF-files. Nothing more. App requires .NET Framework 4.0+. C# source code available as project and can be compiled with SharpDevelop. The reason I wrote this tool is because I couldn’t find an open source GUI that supports the latest versions of pdftk.

PDFTk Gui App

Download: PDFTk_Gui-v.1.01-by_Ned.zip

Source code: PDFTk_Gui-v.1.01-SharpDevelop_project.zip

Share and Enjoy !

Shares

evoc – English vocabulary quiz

Пуснах една система за учене на думи на английски. Системата е базирана на тестове. Все още е в процес на девелопинг, но може да се ползва. За превода на думите написах скрапер, за да автоматизирам процеса и някои думи са малко машинно преведени, то в момента има само два базови речника и три fast quiz теста за 20, 50 и100 думи. Добавих опция да се предлагат корекции на думите, които да одобрявам в админ панел. Може да се ползва от тук:

https://evoc.nediko.info

Share and Enjoy !

Shares

Kitchen cabinet calculator

Написах един инструмент, който да ми помогне при калкулирането на необходимите плоскости за сглобяване на кухненски шкафове. Интрумента представлява един HTML файл, който може да се стартира от всяко устройство. Кода е респонзив. Най-полезната за мен опция е възможността за експортиране на модела в Blender чрез генериране на Python скрипт. Кръстих го Kitchen cabinet calculator и е на английски, за да мога да обхвана по-голяма аудитория. Като ми остане време, ще направя и версия на български, но за сега мисля, че е достатъчно разбираем. Кода е напълно свободен и всеки с PHP 7 и по-висока версия може да си го компилира.

Demo: Kitchen cabinet calculator

Download: Kitchen cabinet calculator
Source: Kitchen cabinet calculator – Source

Видео ръководство, как се използва инструмента:
https://youtu.be/LPJBfQQgEp8

Share and Enjoy !

Shares

Simple Tile Calculator – прост калкулатор за редене на плочки

Престои ми ремонт и имам нужда от нещо, което да ми смята бързо броя плочки или ламиниран паркет, като добавя фугите. За това си написах калкулатор на jacascript. Представлява обикновена web-страница. Във версия 002 на калкулатора са направени някои промени:

  • Кода е изцяло пренаписан, като вече е обектен, което ще ме улесни да прилагам нови методи на редене
  • Добавен е диагонален модел за редене на плочките
  • Добавен е генериран код за CAD-софтуера QCad

Програмата работи с всички модерни браузери и мобилни устройства. Калкулатора може да се зареди онлайн от тук:
Tile Calculator

Изтегляне на калкулатора + source: Simple_Tile_Calculator-v.002.zip

След разархивиране на архива може да се ползва само html-файла в основната директория. В папката source е развойната версия на калкулатора с scss-кода.

Кратко видео, което показва моя начин на ползване на това тулче:

Share and Enjoy !

Shares




Chrome Extension – how to. Кратък урок за създаване на Chrome добавка.

Ще се опитам да опиша простичко, как се разработва прост extension add-on за Chrome. Понякога е много полезно да се работи с подобни скриптове, особено при скрапване на web-съдържание, когато конвенционалните методи не работят или изискват прекалено много усилия.
За да се създаде подобен скрипт с потребителски интерфейс ще са ни необходими няколко файла:
manifest.json – всяка добавка (extension) за Chrome (а и за другите браузери) съдържа подобен скрипт, който предоставя важна информация на браузера. Повече тук: Manifest File Format
popup.html – стандартно наименование на файла с потребителския интерфейс, който се появява при клик с мишката върху добавката. Разбира се, можем да създадем добавка, която няма нужда от потребителски интерфейс, но в случая аз искам да имам. Името на този файл се посочва в manifest.json.
popup.js – файл, който се зарежда чрез popup.html. Можем и да нямаме подобен файл и да поместим javascript кода направо в popup.html. Но тенденциите в модерното програмиране съветват да се диференцира всичко – стилове, скриптове, html. В моя случай popup.js е двигателя на Chrome добавката. Той посочва какво, кога и къде да се активира.
getPagesSource.js – файл за инжектиране в web-страницата и извлича информацията от нея. Този файл се зарежда от popup.js.
icon.png – някаква иконка, която да се показва в листата с добавките на Chrome.

Нека създадем скрипт, който извлиза съдържанието на определени тагове, като използваме javascript функцията querySelectorAll(). Много приятна функция, която заменя в известна степен нуждата от XPath при web-скрапинга.

Да започваме! Първо създаваме manifest.json, като описваме какво прави тая добавка:

1
2
3
4
5
6
7
8
9
10
11
{
  "name": "Simple web scraper",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Get content from tags through querySelector",
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": ["tabs", "<all_urls>"]
}

След това си правим потребителския интерфейс popup.html – бутончета, поленца, форми, стилове, каквото ни е кеф. В случая ще се огранича на минимума за моите нужди – текстово поле, бутон, слой за резултата:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html style=''>
<head>
 
</head>
<body style="width:400px;">
 
	<input type="text" id="selector" style="width:300px;" />
	<button id="getselector">Get Selector</button><br /><hr />
 
	<div id='message'>Injecting Script....</div>
 
	<script src='popup.js'></script>
</body>
</html>

В по-горния скрипт се вижда, че зареждам popup.js. Неговото съдържание е следното:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
chrome.runtime.onMessage.addListener(function(request, sender) {
  if (request.action == "getSlectedContent") {
    message.innerHTML = request.source;
  }
});
 
document.querySelector('#getselector').addEventListener('click', winLoad);
 
function winLoad() {
 
  var message = document.querySelector('#message');
  var inputSel = document.querySelector('#selector').value;
 
  var queryInfo = {
    active: true,
    currentWindow: true
  };
 
  chrome.tabs.query(queryInfo, function(tabs) {
    chrome.tabs.sendMessage(
      tabs[0].id, {
        customSelector: inputSel
      },
      function(response) {
    });
  });
 
  chrome.tabs.executeScript(null, {
    file: "getPageContent.js"
  }, function() {
    if (chrome.runtime.lastError) {
      message.innerText = 'There was an error injecting script : \n' + chrome.runtime.lastError.message;
    }
  });
}

Чрез popup.js зарежда javascripta, който се инжектира в страницата – getPageContent.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
chrome.runtime.onMessage.addListener(function(request, sender) {
  selElements(document, request.customSelector);
});
 
function selElements(document_root, s){
 
  // Tova go dobaviam zaradi kefa da polzvam foreach() v JavaScript
  var forEach = function (array, callback, scope) {
    for (var i = 0; i < array.length; i++) {
    callback.call(scope, i, array[i]);
    }
  };
 
  var myNodeList = document.querySelectorAll(s);
  var concatenateall = '';
  forEach(myNodeList, function (index, value) {
    concatenateall = concatenateall + value.innerHTML + "<hr />";
  });
 
  // return concatenateall;
  chrome.runtime.sendMessage({
    action: "getSlectedContent",
    source: concatenateall
  });
}

Това е.
Сега остава да заредим добавката в Chrome. Това става като отворим More Tools -> Extensions. След това кликаме на бутона Load unpacked и избираме директорията с файловете на нашата добавка.
На базата на тази добавка могат да се направят много други, тъй като съдържа базата за писане на добавки за Chrome.

Сорс кода може да се изтегли от тук: Chrome_Extension-Simple.zip

Кратко видео, което показва как може да се ползва добавката:

Share and Enjoy !

Shares




Viber Export Conversation – експортиране на разговори от Viber

Viber Export Conversation
Viber е удобен чат клиент, но възможностите за експортиране на разговор са никакви. За това написах проста програмка на AutoIt, която да експортира разговор с избран потребител до по-достъпен формат. За сега експортира до Excel и HTML. Програмката се казва Viber Export Conversation. Сорса е много прост и е писан набързо, колкото да свърши работа. За сега е тествана под Windows 7 64bit. Няма си на идея, дали ще работи под други Windows-и. Ще съм благодарен, ако някой намери бъг или не може да подкара програмата и ми сподели като коментар.

Може да се изтегли от тук: Viber Export Conversation-v0.02.zip

В архива се намира и сорса за компилиране с AutoIt.
За да се ползва програмката, трябва да се разархивира. Конвертираните файлове (excel или html) се записват в директорията на exe-то.
PS: Имах желание да портна програмата до Android, но ще иска root, за да чете базата данни на Viber, а не всеки потребител иска да си рутва телефона. За това, поне за сега я оставям във версия за PC.

Share and Enjoy !

Shares




Конвертиране на видео до webm, ogv, mp4, mkv – Ned Video Converter

Ned video converter - ogv, webm, mp4
Беше ми необходима проста програма за конвертиране на видео до webm и ogg video (ogv), която да ми позволява пълен контрол на изходния файл. Тъй като не намерих такава безплатна, освен конзолния ffmpeg, реших да спретна едно GUI за ffmpeg с просто кодиране в AutoIt. Чудих се за името на програмата и реших да не се правя на оригинален, затова е Ned video converter.
Програмата в момента конвертира до webm, avi, ogv, mp4, flv и mkv. Но позволява да се стартира кодиране до всякакъв формат, ако познавате инструментите на ffmpeg. Стартирането на процеса взима стринга от полето Command и така могат ръчно да се променят всички параметри. Например можем да зададем ръчно команда за конвертиране на видео до mp3-файл, като в полето Command въведем следния тринг:

ffmpeg -i <input> -c:a libmp3lame -b:a 256k -vn -f mp3 some_audio_file.mp3

Ned video converter - mp3
Разбира се ръчните настройки са само опционални, спокойно могат да се ползват вградените скромни опции на GUI-то.
Важно е да се отбележи, че при ресайзване на видео по широчина, тогава височината се променя в съотношение, за това зададената височина трябва да е кратна на 2. Това е причината понякога ресайването да не работи. Просто се въвежда нова стойност на широчината, увеличена или намалена с +1 (примерно 600 не работи, тогава се пробва с 601, 602 и т.н.) и се натиска бутона Generate Command.
Ако файловете се получават големи или с недобро качество е добре да се попрочете документацията на ffmpeg. Параметрите за конвертиране могат да се променят и от външния ini-файл, така че да паснат на конкретните нужди.
Прилагам и сорса, който е доволно прост. Отделил съм GUI-частта и фукциите от основния файл, за да има по-добра четимост.
При конжертиране на avi и mkv (matroska) съм задал да се използва параметъра -crf за контрол на качеството. По принцип за запазване на качеството, каквото е във входния файла, параметъра се сетва на -crf 23. За по-малък файл и по-лошо качество може да се остави на -crf 25 или повече. За по-добро качество на картината може да се пробва с -crf 19.
Сорса е абсолютно свободен за ползване, променяне, споделяне.
Изтегляне за 32 и 64bit Windows:
Ned_video_converter-32bit-0.02.zip
Ned_video_converter-64bit-0.02.zip
Ако има проблеми с програмката, моля да ги споделите в коментарите.
По-долу може да се види кратко видео с примерно конвертиране до webm и mp4 формати. Видеото е конвертирано до тези формати, за да мога да го вградя в тази страница. Видеото, което конвертирам е свален от YouTube клип Camila Cabello – Havana ft. Young Thug.

Share and Enjoy !

Shares




Amascrap – amazon price scraper

Amazon price scraper - извличане и проследяване на цени
Amascrap е програма тип “web scraper”, която извлича и логва цени от Amazon.co.uk. Програмата е базирана на PHP, HTML, Javascript (jQuery). Вградил съм Traktor на цените, за да имат някаква проследяемост във времето. Скриптовете могат да се използват и като Web-сайт.

Програмата я написах за мен, защото често ми се налага да пазарувам от Amazon.co.uk. Забелязах, че в сайта доста продукти си сменят цените през няколко дни и има значение, дали ще си купиш нещо с 10 паунда по-ниска цена. Все пак съм си българче :). Traktora позволява да следиш, през колко време някой продукт си сменя цената, което си е идеална статистика. Помогна ми да разбера, че някои продукти имат абсолютно точен цикъл на смяна на цената. Особено добре се вижда преди или след празници.
Не съм писал демон за автоматичен ъпдейт, за това цените трябва да се ъпдейтват ръчно. При много продукти и ъпдейт на всички се получава лаг, който няма как да се избегне. Все пак нямам достъп до базата данни на Амазон, нит ползвам API. Чист и класически Web-скрапер с XPath и cURL под PHP.
За GUI използвах PHP Desktop с MSIE (не ме целете с камъни, просто Chrome вдигна много мегабайтите).

Кратък видео урок, как се работи с програмата:
[flv:https://blog.nediko.info/examples/amascrap/Amascrap-v.0.01-Tutorial.flv https://blog.nediko.info/examples/amascrap/Amascrap.jpg 584 406]

Програмата с сорс-кода може да се изтегли от тук:
Amascrap v.0.04 – Ъпдейт на 13.06.2016. Оправени са проблеми при сваляне на данните през HTTPS.

Share and Enjoy !

Shares




Guest Blogging Articles – система за гест-статии

Article-X е проста система за писане на статии от гост-потребители. Системата я написах така, че да наподобява малко CMS. Може да се настройва.
Article-X - guest blogging system
Подробности и видео урок как се ползва могат да се намерят тук:
Aricle-X – Guest Blogging System
Фронт-демо на системата тук.

Share and Enjoy !

Shares




Simple BG TV Player – прост rtmpdump плеар за гледане на BG-телевизии

Програмата я написах една вечер, когато се прецака кабелната в къщи. Използвал съм rtmpdump за прихващане на стриймовете. Плеъра, който излъчва стрийма е Mplayer за Windows – беше най-малкия плеър, който намерих и който може да излъчва поточно rtmp видео. Писал съм го на AutoIt 3, че за такива нужди е възможно най-лекия и бърз вариант.
Към момента може да плейва следните телевизии:

  • BTV
  • NovaTV
  • TV Europa
  • БНТ
  • БНТ HD
  • БНТ 2
  • Kanal 3
  • Sportal

Не, че това са ми любимите телевизии, но тия ми се мернаха, като търсих с какво да попълня списъка.
При стартиране на някоя от телевизиите се отваря допълнителен прозорец, който показва буферирането на стрийма и разни други интересни неща. Прозореца лесно може да се скрие.
Програмата работи под 64bit Win. Тествана е под WinXP. изглежда така:
simple bg tv player - онлайн телевизии

Нова версия v.0.9 (22.01.2017) – променена е концепцията на гепене на стрийма, като вече не ползвам rmpt-дъмп. В тази версия ползвам ffmpeg, затова и архива е по-голям (около 20mb).
Simple BG TV Player – v.0.9.beta-x64.zip
Simple BG TV Player – v.0.9.beta-x86.zip

—–
Стари версии:
Изтегляне v.0.8 64bit (в архива е и сорскода): Simple BG TV Player – v.0.8.beta.rar
Изтегляне на v.0.8 32bit версия: Simple BG TV Player – v.0.8.beta-x86.rar
Старата версия все още е достъпна от тук: v.0.7.rar

Нямам време за постоянни ъпдейти на стриймовете, така че се извинявам на всички, които ми писаха да оправя кода. Току що във v.0.4 от (13.03.2016) оправих всички стриймове. Добавих някои канали – БНТ, БНТ HD, БНТ2, SPortal. Махнах City TV и Алфа. Във v.0.5 оправих объркването на БНТ с БНТ HD. От v.0.5 трябва да са добавени и двете. Във версия 0.6 е променен сървара за BTV.

Важно! 03.01.2017 Във v.0.8.beta е променен напълно кода. Адресите на стриймовете, както и някои настройки на програмата са изнесени във външен ini-файл: settings.ini. Това позволява всеки потребител сам да добавя или премахва телевизии от списъка, без да се налага прекомпилиране от сорс-код. Пък и хората имат различни интереси по отношение на телевизиите, плюс това не всички са програмисти. Кода е лек и кратък, на принципа – “направи го елементарно, но да върши работа”. Beta – това го сложих, защото ini-файла се зарежда релативно и все още нямам отзиви, дали програмата се плейва нормално при потребителите. Ето изглед от ini-файла:
Simple TV Player - настройки
INI-файла позволява да се замени плеъра (примерно с VLC), както и дъмпера (примерн с ffmpeg). Редактира се с най-обикновен текстов редактор.
Ето една статия, която показва възможностите за редакция на settings.ini:
Simple TV Player – трикове с ini-файла

А това е ini-файл с добавена телевизия BNT World: settings_v.8+BNT_Wolrd.ini.zip

ПС: Програмата е публикувана с образователна цел. Можете да я теглите, променяте, публикувате и използвате целия код или части от него. Основната ми цел, беше да се запозная по-добре със онлайн-стриймването и начините на защитата му.
ПС2: Ако искате да гледате български телевизии под Android устройство, погледнете статията ми: Гледане на български телевизии (БНТ, bTV, Nova…) под Android с XMTV Player

За любителите на rtmpdump-инга имам Новогодишен подарък – серия от кратки урочета, които се надявам да доразвия, като запазя простотата и достъпността:
rtmpdump tutorial – урок за начинаещи
———-
Nota bene:
Можете да погледнете и статията Гледане на български ТВ канали с Kodi. Добавил съм кратко видео, което показва стъпките от инсталацията под Windows до гледането на най-гледаните български ТВ-канали. Програмата може да се инсталира на всички популярни устройства и операционни системи, включително Android и Apple.

Share and Enjoy !

Shares