This is a simple tool that can help you rename multiple files with a command line pipe. It can also be used to rename a single file. The code used is not particularly optimized, but I am still learning to write in C#. The code can be compiled on any Windows that has the .NET Framework installed.
How to compile
Just open a Windows command prompt and specify the path to your csc.exe. For example:
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.
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. Примерно:
Простичък код на batch който взима последния csc.exe от Microsoft.NET\Framework. Кода се пейства в bat-файл и при двоен клик компилира script.cs.
1
2
3
4
5
6
7
@echo offfor/f "TOKENS=1"%%x in('dir %windir%\Microsoft.Net\framework\v* /b ^| findstr "v[1-9]"') do (
set myPID=%%x
)
set csc=%windir%\Microsoft.Net\framework\%myPID%\csc.exe
%csc%/t:winexe script.cs
@echo off
for /f "TOKENS=1" %%x in ('dir %windir%\Microsoft.Net\framework\v* /b ^| findstr "v[1-9]"') do (
set myPID=%%x
)
set csc=%windir%\Microsoft.Net\framework\%myPID%\csc.exe
%csc% /t:winexe script.cs
За да се програмира под .NET платформата е достатъчно да се инсталира някоя версия на фреймърка.
След инсталацията на .NET фреймуърк автоматично се инсталират няколко компилатора: csc.exe – компилатор за C Sharp (C#) jsc.exe – компилатор за JScript .Net vbc.exe – компилатор за Visual Basic .Net
В момента имам инсталиран .Net framework 2.0 и работя с него, но предполагам, че и при по-новите версии ситуацията ще е подобна. Компилаторите се намират в директорията: C:\WINDOWS\ServicePackFiles\i386>
Аз харесвам JScript като структуриране на програмите и ще използвам него за конкретния пример. Както и в други GUI-примери, ще използвам и сега примерна програма за конвертиране на температура от Целзий до Фаренхайт.
Преди да поставя реалния код, ще покажа базов, рамкиращ код за това как се програмира подобна програма с графичен интерфейс:
import System;import System.Drawing;import System.Collections;import System.Windows.Forms;import System.ComponentModel;import Accessibility;
public class Exercise extends System.Windows.Forms.Form{// var ...;function Exercise(){
InitializeComponent();this.button1.add_Click(this.button1_Click);}function button1_Click(sender :Object, e : System.EventArgs){//...}function InitializeComponent(){// iniciirat se wsi4ki komponenti ot GUI-tothis.textBox1=new System.Windows.Forms.TextBox();// ...}}var frmPledge : Exercise =new Exercise();
frmPledge.ShowDialog();
import System;
import System.Drawing;
import System.Collections;
import System.Windows.Forms;
import System.ComponentModel;
import Accessibility;
public class Exercise extends System.Windows.Forms.Form {
// var ...;
function Exercise(){
InitializeComponent();
this.button1.add_Click(this.button1_Click);
}
function button1_Click(sender : Object, e : System.EventArgs){
//...
}
function InitializeComponent(){
// iniciirat se wsi4ki komponenti ot GUI-to
this.textBox1 = new System.Windows.Forms.TextBox();
// ...
}
}
var frmPledge : Exercise = new Exercise();
frmPledge.ShowDialog();
На база на този пример попълваме целия необходим код. Помогнах си за интерфейса с SharpDevelop 3.2 – чудесна програма за .NET програмиране. За съжаления програмата нативно не поддържа JScript, за това от нея копирам само кода за формата, като леко го промених. Програмата изглежда така:
Кода е сравнително лесен за писане и разбиране. Самото exe е едва 8kb. С включения сорс код може да се изтегли от тук: fahrenheit to celsius
import System;
import System.Drawing;
import System.Collections;
import System.Windows.Forms;
import System.ComponentModel;
import Accessibility;
public class Exercise extends System.Windows.Forms.Form {
var button1 : System.Windows.Forms.Button;
var textBox1 : System.Windows.Forms.TextBox;
var textBox2 : System.Windows.Forms.TextBox;
function Exercise(){
InitializeComponent();
this.button1.add_Click(this.button1_Click);
}
function button1_Click(sender : Object, e : System.EventArgs){
var Faren : double;
var Celsius : double;
Faren = ConvertToDouble(this.textBox1.Text);
if(!isNaN(Faren)){
Celsius = (Faren - 32)*5/9;
this.textBox2.Text = Celsius.ToString();
} else {
this.textBox2.Text = "Wrong format";
}
}
function ConvertToDouble(valueto){
var ddd = valueto.ToString(System.Globalization.CultureInfo.InvariantCulture)
return ddd;
}
function InitializeComponent(){
// iniciirat se wsi4ki komponenti ot GUI-to
this.textBox1 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.textBox2 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(12, 12);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(100, 20);
this.textBox1.TabIndex = 0;
//
// button1
//
this.button1.Location = new System.Drawing.Point(118, 10);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 1;
this.button1.Text = "Convert";
this.button1.UseVisualStyleBackColor = true;
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(199, 12);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(100, 20);
this.textBox2.TabIndex = 2;
//
// MainForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(311, 46);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
this.Name = "Exercise";
this.Text = "faren_to_celsius";
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
}
}
var frmPledge : Exercise = new Exercise();
frmPledge.ShowDialog();
За да се компилира този код до изпълнимо exe правим следното:
запазваме сорс-кода в файла, примерно far_to_cel.js
отваряме команден прозорец cmd (Start -> Run -> cmd). Или натискаме шифт и кликаме в директорията със сорс-кода, след това избираме “Open command window here”.
след като сме позиционирали cmd в директорията със сорс-файла ще трябва да извикаме компилатора jsc.exe: C:\Windows\Microsoft.NET\Framework\v4.0.30319\jsc.exe /t:winexe far_to_cel.js
Ако не се покаже грешка, значи сме компилирали всичко нормално.
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.