https://r3---sn-hxb54vo-304z.googlevideo.com/videoplayback?expire=1569993393&ei=Ud6TXcz_H5TZ7QTk0qeACQ&ip=188.162.201.41&id=o-AIZLOyYpU9oS-C74AyHdmLqrnhImEazET72vZDXEPfnV&itag=18&source=youtube&requiressl=yes&mm=31%2C29&mn=sn-hxb54vo-304z%2Csn-n8v7znsl&ms=au%2Crdu&mv=m&mvi=2&pl=20&initcwndbps=577500&mime=video%2Fmp4&gir=yes&clen=258334839&ratebypass=yes&dur=5881.614&lmt=1529228440263512&mt=1569971656&fvip=7&fexp=23842630&c=WEB&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cmime%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&sig=ALgxI2wwRQIhANgf0bLtBu50WvRG5Q4WRUSx45agX2U7WbCY10KJ1jiUAiAILA5a11AzhQFGw0doTkjiVZlZlYG8pNUTsgjNj7z6QA%3D%3D&lsparams=mm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AHylml4wRQIhAN1mwRGCwTHYGEokUWPnCgTWCUGxw1JK33CIz8FvQXu9AiAXMZ3FAxY-QWV32uQb4qkPHuDVl485L_L6pko9jUiXfw%3D%3D
YOUTUBE
воспользуйтесь youtube-dl..
( 'вий', 'vy' ),
( 'гий', 'gy' ),
( 'дий', 'dy' ),
( 'ний', 'ny' ),
( 'сий', 'sy' ),
( 'тий', 'ty' ),
( 'жд', 'zd' ),
( 'ай', 'ay' ),
( 'ей', 'ey' ),
( 'ёй', 'ey' ),
( 'ий', 'iy' ),
( 'ия', 'ia' ),
( 'ой', 'oy' ),
( 'уй', 'uy' ),
( 'ый', 'uy' ),
( 'эй', 'ey' ),
( 'ья', 'ia' ),
( 'ье', 'ye' ),
( 'ьё', 'ye' ),
( 'ьа', 'ia' ),
( 'ьи', 'yi' ),
( 'ьо', 'yo' ),
( 'ьу', 'yu' ),
( 'ьы', 'yy' ),
( 'ьэ', 'ye' ),
( 'ью', 'yu' ),
( 'кс', 'x' ),
( 'юй', 'yuy' ),
( 'яй', 'yay' ),
( 'лю', 'liu' ),
( 'ж', 'zh' ),
( 'х', 'kh' ),
( 'ц', 'ts' ),
( 'ч', 'ch' ),
( 'ш', 'sh' ),
( 'я', 'ya' ),
( 'ю', 'yu' ),
( 'щ', 'shch' ),
( 'ъ', '' ),
( 'ь', '' ),
( 'а', 'a' ),
( 'б', 'b' ),
( 'в', 'v' ),
( 'г', 'g' ),
( 'д', 'd' ),
( 'е', 'e' ),
( 'ё', 'e' ),
( 'з', 'z' ),
( 'и', 'i' ),
( 'й', 'y' ),
( 'к', 'k' ),
( 'л', 'l' ),
( 'м', 'm' ),
( 'н', 'n' ),
( 'о', 'o' ),
( 'п', 'p' ),
( 'р', 'r' ),
( 'с', 's' ),
( 'т', 't' ),
( 'у', 'u' ),
( 'ф', 'f' ),
( 'ы', 'y' ),
( 'э', 'e' )
Интерфейс: PCI-E 3.0 (4x)
Оплата
: код пользователя, дата оплаты, дата начала подписки, дата окончания. Дату начала подписки либо вычислять по последней подписке пользователя, либо запрашивать. Дату окончания — вычислять по тарифу, который действует на указанный период. Возможно потребуется отдельная таблица Тариф
: дата введения, число дней, цена. DrawCellTextOut
, выводить в TDBGrid так:procedure TAlbumDetailFR.grReleaseDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
var iLeft: Integer;
begin
case DataCol of
0: with grRelease.Canvas do begin
FillRect( Rect );
iLeft := 2;
DrawCellTextOut( TDBGridEh(Sender).Canvas, Rect, iLeft, taReleaseYear.Value + ' ' );
Font.Style := [fsBold];
DrawCellTextOut( TDBGridEh(Sender).Canvas, Rect, iLeft, taReleaseNumber.Value + ' ' );
Font.Style := [];
DrawCellTextOut( TDBGridEh(Sender).Canvas, Rect, iLeft, taReleaseFirmName.Value );
end;
end;
end;
DrawCellTextOut
:procedure DrawCellTextOut( Canvas: TCanvas; const Rect: TRect; var Left: Integer; Text: String );
begin
with Canvas do begin
if ( Length( Trim( Text )) > 0 )
and (( Rect.Right - Rect.Left - Left ) > ( TextWidth('…') + 1)) then begin
while (( TextWidth( Text ) + 1 ) > ( Rect.Right - Rect.Left - Left ))
do Text := Copy( Text, 1, Length( Text ) - 2) + '…';
TextOut( Rect.Left + Left, Rect.Top + 1, Text );
Inc( Left, TextWidth( Text ) + 1);
end;
end;
end;
CreateFolderImage(hr:0x80070032)
нашлась в Windows System Image Manager (WSIM) fails to catalog.