http___blog.nediko.info_1.xml
https___litsupreme.com_blogs_news_news.xml
1.1 1.2 1.3 2.1 2.2 2.3 2.4 2.5 3.1 4.1 4.2 5.1 6.1 6.2 6.3 7.1 8.1 8.2 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 22.1 23.1 24.1 25.1 26.1 27.1 28.1 29.1 32.1 33.1 34.1 35.1 38.1 38.2 39.1 39.2 39.3 39.4 39.5 39.6 43.1 44.1 44.2 44.3 44.4 46.1 47.1 48.1 53.1 58.1 58.2 58.3 58.4 58.5 58.6 58.7 59.1 59.2 59.3 59.4 59.5 59.6 60.1 60.2 61.1 61.2 61.3 61.4 62.1 62.2 62.3 63.1 64.1 66.1 67.1 68.1 69.1 70.1 71.1 72.1 73.1 75.1 76.1 77.1 78.1 79.1 80.1 81.1 82.1 83.1 84.1 85.1 86.1 87.1 88.1 89.1 91.1 92.1 93.1 94.1 95.1 96.1 98.1 99.1 100.1 101.1 102.1 103.1 104.1 105.1 106.1 107.1 108.1 109.1 110.1 111.1 112.1 113.1 114.1 115.1 117.1 118.1 119.1 120.1 121.1 122.1 124.1 125.1 125.2 126.1 127.1 128.1 128.2 129.1 129.2 129.3 129.4 129.5 129.6 130.1 130.2 130.3 130.4 130.5 130.6 130.7 131.1 132.1 132.2 133.1 134.1 135.1 136.1 136.2 137.1 138.1 139.1 139.2 139.3 139.4 139.5 139.6 140.1 140.2 140.3 141.1 141.2
В това видео ще покажа, как се взима ръчно файла с live stream на Нова ТВ. Има лека разлика спрямо прихващането на bTV стрийма, защото нова ползва iframe на външна страница. Използвани инструменти: firefox wget (for windows) pup html parser ffplay (идва стандартно с ffmpeg) bTV имат доста слабичка защита на стрийма. Нова поне ползват криптиране на стрийма с hls.key, което не е никакъв проблем за чупене, но пак е нещо. бТВ се защитават само с един динамично генериран адрес, който обаче е твърде достъпен, поне според мен. Сменят масива с адреси всеки ден, но факта, че присъства статично в ajax адрес, който може да се отвори и прочете от всеки, прави цялата защита смешна. За любителите на кепчъринга и за тираджиите прилагам скромно туториалче. Използваните инструменти са: Firefox, wget, jq, ffmpeg. И по-лесния вариант за прихващане на видеото само с Firefox. С тази техника може да се прихване почти всеки видео стрийм или да се свали видео файл. Когато видеото е криптирано, може да се записва стрийма, но по-инстересно е да се свалят всички файлове с високо качество и да се декриптират ръчно, като се ползва hls-ключ и оригиналните ts-файлове. Ето и простичък PHP-код, който върши цялата работа по екстрактването на линка: Трябва да се отбележи, че bTV детектват, дали url-адреса се зарежда от чужбина и го ограничават (с http response code 301), но е много вероятно самия стрийм да не е ограничен. Не съм го пробвал. Хубавото е, че веднъж гепен адреса на стрийма, може да се гледа цял ден. ———————— И един бонус – сорс код за C#, който гепва стринга и го плейва с ffplay. За целта ffplay трябва да е в директорията с компилираното exe или в променливата Path на обкръжението на Win. using System; using System.Text.RegularExpressions; using System.Net; using System.IO; using System.Diagnostics; public class playBtv{ static void Main(string[] args){ string baseUrl = "https://btvplus.bg"; string url1 = baseUrl + "/live/"; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; WebClient client = new WebClient(); string htmlCode1 = client.DownloadString(url1); string pattern = "url:"; StringReader strReader = new StringReader(htmlCode1); string aLine, url2 = null; while(strReader.Peek() >= 0){ aLine = strReader.ReadLine().Trim(); if(aLine.Contains(pattern)){ Match match = Regex.Match(aLine, @"([^']*)'([^']*)"); url2 = baseUrl + match.Groups[2].Value; break; string htmlCode2 = client.DownloadString(url2); Match match2 = Regex.Match(htmlCode2, "(file\":\")([^\"]*)"); string m3u8 = match2.Groups[2].Value.Replace("\\",""); Process.Start("ffplay", m3u8); Компилира се с някой от наличните в Windows C# компилатори от .NET Frameworks. Примерно: И що чак сега се сетих, че мога да ползвам SVG text като background?! И не само текст. Че даже мога да си го променям динамично през javascript! Така някои дизайни можеше да станат по-фън-шуй. По-добре късно от колкото без SVG. Едно примерче: Try it Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. function myFunction() { let txt = "SVG Txt"; let s = window.btoa(` document.querySelector("p").style.background = `url('data:image/svg+xml;base64,${s}') no-repeat top left`; Написах един инструмент, който да ми помогне при калкулирането на необходимите плоскости за сглобяване на кухненски шкафове. Интрумента представлява един HTML файл, който може да се стартира от всяко устройство. Кода е респонзив. Най-полезната за мен опция е възможността за експортиране на модела в Blender чрез генериране на Python скрипт. Кръстих го Kitchen cabinet calculator и е на английски, за да мога да обхвана по-голяма аудитория. Като ми остане време, ще направя и версия на български, но за сега мисля, че е достатъчно разбираем. Кода е напълно свободен и всеки с PHP 7 и по-висока версия може да си го компилира. Трябва ми лек сървар с който да управлявам едн компютър, който ползвам за нещо като локален NAS. Apache тотално не ми се вписва в сметките, защото напоследък брах ядове с пълното му деинсталиране от системата. Затова се спрях на конкурента му nginx. По-долу поствам някои интересни моменти от тестовете, които направих под Windows. За да мога да достъпвам сървара в локална мрежа, трябваше да променя настройките на Firewall-а на Windows 10. В моя случай промених настройки на firewall на Nod32, който е асоцииран по подразбиране в firewall-a на Win. Разархивирах го в една директория и му промених conf/nginx.conf така, че да отговаря на моите нужди. Важно е да се отбележи, че предварително имам инсталиран PHP 7.2, който е добавен в променливите на обкръжението на Win10. казва на сървара първо да потърси файл, след това директория и най-накрая ако не намери предните две да потърси index.php, като всичко след името на домейна го постави като аргумент. Примерно: http://localhost/system-info ще се преобразува в: http://localhost/index.php?/system-info По този начин мога да ползвам френдли адресиране, вместо да изписвам остарелите GET променливи. В Apache се ползва .htaccess за тая цел. Но в nginx тези инструкции се поместват в основния кофигурационен файл. За да спирам и пускам сървара използвах batch код, който намерих някъде в мрежата. Коментирал съм с REM кодове в скрипта, които могат да са полезни след време, но които не са ми необходими, като спиране и пускане на MySQL. Напоследък за леки проекти ползвам основно SQLite с RedBeanPHP като ORM: @echo off REM cd C:\WebServer\nginx GOTO STOPSERVER )else IF "%1" == "start" ( GOTO STARTSERVER )else ( echo Use these commands: echo. echo myserver start echo myserver stop GOTO END :STARTSERVER REM QPROCESS * | find /I /N "mysqld.exe">NUL REM IF "%ERRORLEVEL%"=="0" ( REM echo MYSQLD is already running. REM )else ( REM RunHiddenConsole.exe mysqld --console REM echo MYSQLD is now running. REM ) QPROCESS * | find /I /N "nginx.exe">NUL IF "%ERRORLEVEL%"=="0" ( echo NGINX is already running. )else ( RunHiddenConsole.exe nginx echo NGINX is now running. QPROCESS * | find /I /N "php-cgi.exe">NUL IF "%ERRORLEVEL%"=="0" ( echo PHP-CGI is already running. )else ( RunHiddenConsole.exe php-cgi -b 127.0.0.1:9000 echo PHP-CGI is now running. echo. echo To stop, type "myserver stop" GOTO END :STOPSERVER REM QPROCESS * | find /I /N "mysqld.exe">NUL REM IF "%ERRORLEVEL%"=="0" ( REM taskkill /F /IM mysqld.exe>NUL REM echo MYSQLD ended successfully. REM )else ( REM echo MYSQLD is not running REM ) QPROCESS * | find /I /N "nginx.exe">NUL IF "%ERRORLEVEL%"=="0" ( ::nginx -s stop taskkill /F /IM nginx.exe>NUL echo NGINX ended successfully. )else ( echo NGINX is not running QPROCESS * | find /I /N "php-cgi.exe">NUL IF "%ERRORLEVEL%"=="0" ( taskkill /F /IM php-cgi.exe>NUL echo PHP-CGI ended successfully. )else ( echo PHP-CGI is not running :END Запазих по-горния код в директорията с exe-то на nginx в файла myserver.bat. Пускане и спиране на сървара става с командите: myserver start myserver stop За файлов фмениджър на NAS-чето за сега съм се спрял на Tiny File Manager. Този файлов мениджър е поместен само в един файл и има достатъчно опции за редактиране, които са ми напълно достатъчни. За да ми е по-лесно да преговаряме с дъщеря ми по математика, си правя простички файлчета тест-генератори на Excel. Споделям един тест-файл по математика за 4-ти клас. Добавих му малко екстри, за да може да се използва от начални учители или от други деца. Освен задачите автоматично се генерират и отговорите. Генерирането на нов тест става като се натисне бутона F9 от клавиатурта. Основната страница на теста е форматираната като страница за принтиране, файла може да се запази като PDF и така да се генерират множество готови тестове с отговорите. В различните ми проекти с PHP съм ползвал различни Captcha генератори, за да се пазя от спамери и ботове. Но винаги нещо ми е липсвало или са били прекалено грамадански за семплите ми нужди. За това си написах един клас, който лесно да мога да интегрирам в проектите. Всъщност идеята беше друга – да направя голямо количество предефинирани капчи и да ги набутам в SQLite файл, така скоростта на зареждане става муцка. Това и направих. Но така или иначе написах голяма част от кода, та реших да направя и един самостоятелен клас. В последствие, ако ми текне музата, мога да напиша и туториал и със сесии да демострирам, как използвам капчата в реални условия. Моя Captcha Generator има няколко готини опции за настройка: използване на множесвно TTF-шрифтове. Аз ползвам такива от https://fonts.google.com А ето и един видео урок, който направих набързо, за да е ясно как се настройва генератора: Share and Enjoy ! Shares This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish.AcceptRead More Privacy & Cookies Policy Privacy Overview This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience. Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information. Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
1.1 1.2 1.3 2.1 3.1 4.1 5.1 6.1 6.2 7.1 8.1 9.1 10.1 10.2 11.1 12.1 12.2 12.3
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat... All products and labels are fully transparent with no proprietary blends, EVER! Patented Ingredients Lit Supreme uses only the highest quality ingredients, many are patented. Informed Choice Manufactured in an informed Choice Facility. You'll ALWAYS get what the label says. Sign in Sign up We've sent you an email with a link to update your password. A password reset email has been sent to the email address on file for your account, but may take several minutes to show up in your inbox. Please wait at least 10 minutes before attempting another reset. No account yet? Registering for this site allows you to access your order status and history. Just fill in the fields below, and we’ll get a new account set up for you in no time. We will only ask you for information necessary to make the purchase process faster and easier.