Commit MetaInfo

Revision517b32011387e549c30cdbd3d6c3b1fae306ad8b (tree)
Time2019-03-28 16:02:16
Authorkentamaken <kentamaken@gmai...>
Commiterkentamaken

Log Message

SSLのDLLが必要な事に気づいたのでいらない方に切り替え
プリセットにJOUSOUND追加
アルバム=曲名回避
テキストの検索・置き換え、正規表現
(生音)とか消しつつ重複削除追加
ウエイト調整

Change Summary

Incremental Difference

--- a/textdefindunit.dfm
+++ b/textdefindunit.dfm
@@ -20,18 +20,18 @@ object TextDeFindForm: TTextDeFindForm
2020 TextHeight = 16
2121 object Splitter1: TSplitter
2222 Left = 185
23- Top = 328
23+ Top = 345
2424 Width = 9
25- Height = 163
25+ Height = 146
2626 ExplicitLeft = 232
2727 ExplicitTop = 200
2828 ExplicitHeight = 65
2929 end
3030 object Web: TWebBrowser
3131 Left = 194
32- Top = 328
32+ Top = 345
3333 Width = 548
34- Height = 163
34+ Height = 146
3535 Align = alClient
3636 TabOrder = 7
3737 ExplicitLeft = 242
@@ -39,7 +39,7 @@ object TextDeFindForm: TTextDeFindForm
3939 ExplicitWidth = 300
4040 ExplicitHeight = 150
4141 ControlData = {
42- 4C000000A3380000D91000000000000000000000000000000000000000000000
42+ 4C000000A3380000170F00000000000000000000000000000000000000000000
4343 000000004C000000000000000000000001000000E0D057007335CF11AE690800
4444 2B2E126208000000000000004C0000000114020000000000C000000000000046
4545 8000000000000000000000000000000000000000000000000000000000000000
@@ -47,22 +47,26 @@ object TextDeFindForm: TTextDeFindForm
4747 end
4848 object Memo1: TMemo
4949 Left = 194
50- Top = 328
50+ Top = 345
5151 Width = 548
52- Height = 163
52+ Height = 146
5353 Align = alClient
5454 Lines.Strings = (
5555 'Memo1')
5656 TabOrder = 8
57+ ExplicitTop = 328
58+ ExplicitHeight = 163
5759 end
5860 object LeftPanel: TPanel
5961 Left = 0
60- Top = 328
62+ Top = 345
6163 Width = 185
62- Height = 163
64+ Height = 146
6365 Align = alLeft
6466 Caption = 'LeftPanel'
6567 TabOrder = 4
68+ ExplicitTop = 328
69+ ExplicitHeight = 163
6670 object ListName: TComboBox
6771 Left = 1
6872 Top = 1
@@ -81,7 +85,7 @@ object TextDeFindForm: TTextDeFindForm
8185 Left = 1
8286 Top = 51
8387 Width = 183
84- Height = 111
88+ Height = 94
8589 Align = alClient
8690 Font.Charset = SHIFTJIS_CHARSET
8791 Font.Color = clWindowText
@@ -96,6 +100,7 @@ object TextDeFindForm: TTextDeFindForm
96100 TabOrder = 1
97101 Zoom = 100
98102 OnMouseUp = TextMouseUp
103+ ExplicitHeight = 111
99104 end
100105 object Tree: TTreeView
101106 Left = 1
@@ -135,7 +140,7 @@ object TextDeFindForm: TTextDeFindForm
135140 Width = 75
136141 Height = 23
137142 Align = alLeft
138- Caption = #26908#32034
143+ Caption = 'File'#26908#32034
139144 TabOrder = 1
140145 OnClick = FindClick
141146 end
@@ -173,9 +178,9 @@ object TextDeFindForm: TTextDeFindForm
173178 end
174179 object GridFiles: TStringGrid
175180 Left = 194
176- Top = 328
181+ Top = 345
177182 Width = 548
178- Height = 163
183+ Height = 146
179184 Align = alClient
180185 Ctl3D = False
181186 DrawingStyle = gdsClassic
@@ -186,6 +191,8 @@ object TextDeFindForm: TTextDeFindForm
186191 OnMouseDown = GridFilesMouseDown
187192 OnSelectCell = GridFilesSelectCell
188193 OnSetEditText = GridFilesSetEditText
194+ ExplicitTop = 328
195+ ExplicitHeight = 163
189196 ColWidths = (
190197 64
191198 64
@@ -277,9 +284,6 @@ object TextDeFindForm: TTextDeFindForm
277284
278285 '[youtube] https://www.youtube.com/results?search_query=%'#12522#12473#12488#21517'% %' +
279286 #26908#32034#25991#23383'%'
280-
281- '[DAM] https://www.clubdam.com/app/search/searchKaraokeKeywo' +
282- 'rdArtist.html?keyword=%'#12522#12473#12488#21517'%'
283287 '[apple] https://playapplemusic.com/search?q=%'#12522#12473#12488#21517'% %'#26908#32034#25991#23383'%'
284288
285289 '[apple] https://linkmaker.itunes.apple.com/ja-jp?country=jp&m' +
@@ -289,7 +293,17 @@ object TextDeFindForm: TTextDeFindForm
289293 'untry=jp'
290294
291295 '[apple] https://freefielder.jp/itunes2/itsearch.php?searchKey' +
292- '=music&str=%'#26908#32034#25991#23383'%')
296+ '=music&str=%'#26908#32034#25991#23383'%'
297+ ''
298+
299+ '[DAM] https://www.clubdam.com/app/search/searchKaraokeKeywo' +
300+ 'rdArtist.html?keyword=%'#12522#12473#12488#21517'%'
301+
302+ '[JOY] https://joysound.biz/search/artist.php?machine=Z&word' +
303+ '=%'#12522#12473#12488#21517'%&matchs=1'
304+
305+ '[JOY'#38911'] https://joysound.biz/search/artist.php?machine=U&word=%'#12522 +
306+ #12473#12488#21517'%&matchs=1')
293307 end
294308 object FindUrlButton: TButton
295309 Left = 1
@@ -297,7 +311,7 @@ object TextDeFindForm: TTextDeFindForm
297311 Width = 75
298312 Height = 23
299313 Align = alLeft
300- Caption = #26908#32034'URL'
314+ Caption = 'WEB'#26908#32034
301315 TabOrder = 1
302316 OnClick = FindUrlButtonClick
303317 end
@@ -326,7 +340,7 @@ object TextDeFindForm: TTextDeFindForm
326340 Left = 0
327341 Top = 50
328342 Width = 742
329- Height = 278
343+ Height = 295
330344 Align = alTop
331345 AutoSize = True
332346 TabOrder = 6
@@ -341,6 +355,7 @@ object TextDeFindForm: TTextDeFindForm
341355 Checked = True
342356 State = cbChecked
343357 TabOrder = 0
358+ ExplicitTop = 60
344359 end
345360 object OpUrlSpace: TCheckBox
346361 Left = 1
@@ -352,6 +367,7 @@ object TextDeFindForm: TTextDeFindForm
352367 Checked = True
353368 State = cbChecked
354369 TabOrder = 1
370+ ExplicitTop = 19
355371 end
356372 object OpURLZenkaku: TCheckBox
357373 Left = 1
@@ -361,6 +377,7 @@ object TextDeFindForm: TTextDeFindForm
361377 Align = alTop
362378 Caption = #20840#35282#21270
363379 TabOrder = 2
380+ ExplicitTop = 101
364381 end
365382 object OpURLEscapeEdit: TEdit
366383 Left = 1
@@ -370,6 +387,7 @@ object TextDeFindForm: TTextDeFindForm
370387 Align = alTop
371388 TabOrder = 3
372389 Text = ':/?#[]@!$&'#39#39'()*+,;='
390+ ExplicitTop = 77
373391 end
374392 object OpURLSpaceEdit: TEdit
375393 Left = 1
@@ -381,6 +399,7 @@ object TextDeFindForm: TTextDeFindForm
381399 Text =
382400 '!"#$%&'#39'()*+,-./:;<=>?@[\]^_`{|}~'#65295#65340#65374#8741#65372#8230#8229#8216#8217#8220#8221#65288#65289#12308#12309#65339#65341#65371#65373#12296#12297#12298#12299#12300#12301#12302#12303#12304#12305#65291#65293#177 +
383401 #215#247#65309#8800#65308#65310#8806#8807#8734#8756#9794#9792#176#8242#8243#8451#65509#65284#65504#65505#65285#65283#65286#65290#65312#167#9734#9733#9675#9679#9678#9671' '#9670#9633#9632#9651#9650#9661#9660#8251#12306#8594#8592#8593#8595
402+ ExplicitTop = 36
384403 end
385404 object OptionUrlDQuote: TCheckBox
386405 Left = 1
@@ -390,6 +409,7 @@ object TextDeFindForm: TTextDeFindForm
390409 Align = alTop
391410 Caption = '""'#12391#22258#12416
392411 TabOrder = 5
412+ ExplicitTop = 118
393413 end
394414 object OpURLComment: TCheckBox
395415 Left = 1
@@ -401,6 +421,7 @@ object TextDeFindForm: TTextDeFindForm
401421 Checked = True
402422 State = cbChecked
403423 TabOrder = 6
424+ ExplicitTop = 2
404425 end
405426 object OpURLFile: TCheckBox
406427 Left = 1
@@ -410,10 +431,11 @@ object TextDeFindForm: TTextDeFindForm
410431 Align = alTop
411432 Caption = #12501#12449#12452#12523#21015#12395#29983#12487#12540#12479
412433 TabOrder = 7
434+ ExplicitTop = 135
413435 end
414436 object OpURLituneNazo: TCheckBox
415437 Left = 1
416- Top = 185
438+ Top = 202
417439 Width = 740
418440 Height = 17
419441 Align = alTop
@@ -421,26 +443,29 @@ object TextDeFindForm: TTextDeFindForm
421443 Checked = True
422444 State = cbChecked
423445 TabOrder = 8
446+ ExplicitTop = 186
424447 end
425448 object OpURLWait: TMaskEdit
426449 Left = 1
427- Top = 219
450+ Top = 236
428451 Width = 740
429452 Height = 24
430453 Align = alTop
431454 EditMask = #12454#12456#12452#12488'#####;1; '
432455 MaxLength = 9
433456 TabOrder = 9
434- Text = #12454#12456#12452#12488'3000 '
457+ Text = #12454#12456#12452#12488'8000 '
458+ ExplicitTop = 220
435459 end
436460 object OpURLLocal: TCheckBox
437461 Left = 1
438- Top = 202
462+ Top = 219
439463 Width = 740
440464 Height = 17
441465 Align = alTop
442466 Caption = #12525#12540#12459#12523#26908#32034#12418#23455#34892
443467 TabOrder = 10
468+ ExplicitTop = 203
444469 end
445470 object OpURLitune: TCheckBox
446471 Left = 1
@@ -452,15 +477,17 @@ object TextDeFindForm: TTextDeFindForm
452477 Checked = True
453478 State = cbChecked
454479 TabOrder = 11
480+ ExplicitTop = 152
455481 end
456482 object OpURLNoSave: TCheckBox
457483 Left = 1
458- Top = 260
484+ Top = 277
459485 Width = 740
460486 Height = 17
461487 Align = alTop
462488 Caption = #20445#23384#12379#12378#12395#32066#20102
463489 TabOrder = 12
490+ ExplicitTop = 261
464491 end
465492 object OpURLOpenSave: TCheckBox
466493 Left = 1
@@ -470,15 +497,28 @@ object TextDeFindForm: TTextDeFindForm
470497 Align = alTop
471498 Caption = 'itmss:'#12506#12540#12472#12434#12501#12449#12452#12523#12395#20445#23384'('#23455#34892#12501#12457#12523#12480')'
472499 TabOrder = 13
500+ ExplicitTop = 169
473501 end
474502 object OpURLReset: TCheckBox
475503 Left = 1
476- Top = 243
504+ Top = 260
477505 Width = 740
478506 Height = 17
479507 Align = alTop
480508 Caption = #35373#23450#12434#21021#26399#21270#12375#12390#32066#20102
481509 TabOrder = 14
510+ ExplicitTop = 244
511+ end
512+ object OpURLituneTitleMatch: TCheckBox
513+ Left = 1
514+ Top = 185
515+ Width = 740
516+ Height = 17
517+ Align = alTop
518+ Caption = 'itmss:'#26908#32034#25991#23383#12391#32094#12427'('#12450#12523#12496#12512#21516#21517#26354#22238#36991')'
519+ Checked = True
520+ State = cbChecked
521+ TabOrder = 15
482522 end
483523 end
484524 object PopupMenu2: TPopupMenu
@@ -593,6 +633,21 @@ object TextDeFindForm: TTextDeFindForm
593633 Caption = #26908#32034'URL'
594634 OnClick = PTextFindUrlClick
595635 end
636+ object N4: TMenuItem
637+ Caption = '-'
638+ end
639+ object MTextDelKakko: TMenuItem
640+ Caption = '()[]'#20184#12365#12392#37325#35079#12434#21066#38500
641+ OnClick = MTextDelKakkoClick
642+ end
643+ object PTextTextReplace: TMenuItem
644+ Caption = #12486#12461#12473#12488#32622#12365#25563#12360
645+ OnClick = PTextTextReplaceClick
646+ end
647+ object PTextTextReplaceReg: TMenuItem
648+ Caption = #32622#12365#25563#12360#27491#35215#34920#29694
649+ OnClick = PTextTextReplaceRegClick
650+ end
596651 end
597652 object SaveDialog: TSaveDialog
598653 Left = 64
@@ -630,4 +685,28 @@ object TextDeFindForm: TTextDeFindForm
630685 Left = 48
631686 Top = 416
632687 end
688+ object NetHTTPClient: TNetHTTPClient
689+ Asynchronous = False
690+ ConnectionTimeout = 60000
691+ ResponseTimeout = 60000
692+ HandleRedirects = True
693+ AllowCookies = True
694+ UserAgent = 'Embarcadero URI Client/1.0'
695+ Left = 160
696+ Top = 416
697+ end
698+ object NetHTTPRequest: TNetHTTPRequest
699+ Asynchronous = False
700+ ConnectionTimeout = 60000
701+ ResponseTimeout = 60000
702+ Client = NetHTTPClient
703+ Left = 152
704+ Top = 472
705+ end
706+ object ReplaceDialog: TReplaceDialog
707+ OnFind = ReplaceDialogFind
708+ OnReplace = ReplaceDialogReplace
709+ Left = 80
710+ Top = 472
711+ end
633712 end
--- a/textdefindunit.pas
+++ b/textdefindunit.pas
@@ -9,7 +9,8 @@ uses
99 types,inifiles,
1010 Vcl.ComCtrls,ShlObj,ActiveX,Vcl.Menus,Vcl.CheckLst,IdBaseComponent,
1111 IdComponent,IdTCPConnection,IdTCPClient,IdGlobal,IdURI,IdHTTP,Vcl.OleCtrls,SHDocVw,
12- IdIOHandler,IdIOHandlerSocket,IdIOHandlerStack,IdSSL,IdSSLOpenSSL,Vcl.Mask;
12+ IdIOHandler,IdIOHandlerSocket,IdIOHandlerStack,IdSSL,IdSSLOpenSSL,Vcl.Mask,
13+ System.Net.URLClient, System.Net.HttpClient, System.Net.HttpClientComponent;
1314
1415 type
1516 TStringSelf=class(TStringList)
@@ -166,6 +167,14 @@ type
166167 N3: TMenuItem;
167168 PReload: TMenuItem;
168169 PTextListName: TMenuItem;
170+ NetHTTPClient: TNetHTTPClient;
171+ NetHTTPRequest: TNetHTTPRequest;
172+ MTextDelKakko: TMenuItem;
173+ PTextTextReplaceReg: TMenuItem;
174+ ReplaceDialog: TReplaceDialog;
175+ PTextTextReplace: TMenuItem;
176+ N4: TMenuItem;
177+ OpURLituneTitleMatch: TCheckBox;
169178 procedure FindClick(Sender:TObject);
170179 procedure FormCreate(Sender:TObject);
171180 procedure GridFilesMouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
@@ -206,15 +215,22 @@ type
206215 procedure PReFindClick(Sender: TObject);
207216 procedure PReloadClick(Sender: TObject);
208217 procedure PTextListNameClick(Sender: TObject);
218+ procedure PTextTextReplaceClick(Sender: TObject);
219+ procedure ReplaceDialogReplace(Sender: TObject);
220+ procedure ReplaceDialogFind(Sender: TObject);
221+ procedure PTextTextReplaceRegClick(Sender: TObject);
222+ procedure MTextDelKakkoClick(Sender: TObject);
209223 private
210224 function getpathtext:string;
211225 function localfind(var sa:TStringDynArray;ssss:string):boolean;
212- function iddownload(Url: string): string;
213- function getsearchtext(Url: String): String;
226+ function iddownload(Url: string): string;
227+ function getsearchtext(Url: String): String;
228+ function tnetdownload(Url: string): string;
214229 { Private 宣言 }
215230 public
216231 { Public 宣言 }
217232 Files:TGrid;
233+ EnableReplaceReg:boolean;
218234
219235 function QueryContinueDrag(fEscapePressed:BOOL;grfKeyState:Longint):HResult;stdcall;
220236 function GiveFeedback(dwEffect:Longint):HResult;stdcall;
@@ -444,6 +460,129 @@ begin
444460 Result:=S_OK;
445461 end;
446462
463+procedure TTextDeFindForm.PTextTextReplaceClick(Sender: TObject);
464+begin
465+ ReplaceDialog.FindText := Text.SelText ;
466+ EnableReplaceReg:=false;
467+ ReplaceDialog.Options:=ReplaceDialog.Options-[frHideMatchCase];
468+ ReplaceDialog.Options:=ReplaceDialog.Options-[frHideWholeWord];
469+ ReplaceDialog.Execute() ;
470+end;
471+
472+procedure TTextDeFindForm.PTextTextReplaceRegClick(Sender: TObject);
473+begin
474+ ReplaceDialog.FindText := Text.SelText ;
475+ EnableReplaceReg:=true;
476+ ReplaceDialog.Options:=ReplaceDialog.Options+[frHideMatchCase];
477+ ReplaceDialog.Options:=ReplaceDialog.Options+[frHideWholeWord];
478+ ReplaceDialog.Execute() ;
479+end;
480+
481+procedure TTextDeFindForm.MTextDelKakkoClick(Sender: TObject);
482+var s:string;
483+ sa:TStringDynArray;
484+begin
485+ Text.Lines.Text:=TRegEx.Replace(Text.Lines.Text,'\(.*?\)','');
486+ Text.Lines.Text:=TRegEx.Replace(Text.Lines.Text,'\[.*?\]','');
487+
488+ for s in self.Text.lines do
489+ sa.adduni(trim(s));
490+ with sa.stringselfcreate do try
491+ self.Text.lines.Assign(this);
492+ finally
493+ free;
494+ end;
495+
496+end;
497+
498+
499+procedure TTextDeFindForm.ReplaceDialogFind(Sender: TObject);
500+var
501+ R: TReplaceDialog;
502+ ST : TSearchTypes;
503+ p,l,sels,sell:integer;
504+ rs,fs:string;
505+ regmop: TRegExOptions;
506+ regmt: TMatch;
507+ regg: TGroup;
508+
509+begin
510+ R:=ReplaceDialog;
511+ fs:=R.FindText;
512+ if (frMatchCase in R.Options) then ST:=ST+[stMatchCase];
513+ if (frWholeWord in R.Options) then ST:=ST+[stWholeWord];
514+
515+ sels:=Text.SelStart;
516+ sell:=Text.SelLength;
517+
518+ p:=-1;
519+ l:=0;
520+ if frDown in R.Options then begin
521+ if EnableReplaceReg then begin
522+
523+ Text.Lines.LineBreak:=LF;
524+ rs:=Text.Lines.Text;
525+ for regmt in TRegEx.Matches(rs,fs,regmop) do begin
526+ for regg in regmt.Groups do begin
527+// if regg.Value=regmt.Value then continue;
528+ if regg.Index>sels+sell then begin
529+ p:=regg.Index-1;
530+ l:=regg.Length;
531+ break;
532+ end;
533+ end;
534+ if p>=0 then break;
535+ end;
536+
537+ end else begin
538+
539+ p:=Text.FindText(fs,sels+sell,Text.Lines.Text.Length-sels,ST);
540+ l:=fs.Length;
541+
542+ end;
543+ if p>-1 then begin
544+ Text.SelStart:=p;
545+ Text.SelLength:=l;
546+ end;
547+ end;
548+
549+end;
550+
551+procedure TTextDeFindForm.ReplaceDialogReplace(Sender:TObject);
552+var
553+ l:Integer;
554+ s:Integer;
555+ R:TReplaceDialog;
556+ ss,fs,rs:string;
557+begin
558+ R:=ReplaceDialog;
559+ fs:=R.FindText;
560+ rs:=R.ReplaceText;
561+
562+ repeat
563+ if EnableReplaceReg then begin
564+
565+ Text.Lines.LineBreak:=LF;
566+ ReplaceDialogFind(Sender);
567+ Text.SelText:=TRegEx.Replace(Text.SelText,fs,rs);
568+
569+ end else begin
570+
571+ Text.SelLength:=0;
572+ ReplaceDialogFind(Sender);
573+ if (Text.SelLength>0) then begin
574+ l:=Text.SelLength;
575+ s:=Text.SelStart;
576+ Text.seltext:=R.ReplaceText;
577+ Text.SelStart:=s;
578+ Text.SelLength:=R.ReplaceText.Length;
579+ end;
580+ end;
581+ if not(frReplaceAll in R.Options) then break;
582+ until not((Text.SelLength>0));
583+
584+end;
585+
447586 function TTextDeFindForm.GiveFeedback(dwEffect:Longint):HResult;
448587 begin
449588 Result:=DRAGDROP_S_USEDEFAULTCURSORS;
@@ -481,6 +620,25 @@ begin
481620 IdHTTP.Disconnect;
482621 end;
483622
623+function TTextDeFindForm.tnetdownload(Url:string):string;
624+var
625+ s:TStringStream;
626+begin
627+// IdHTTP.HandleRedirects:=true;
628+// IdHTTP.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8;
629+// IdHTTP.Request.ContentEncoding := 'UTF-8';
630+ s:=TStringStream.Create('',TEncoding.UTF8);
631+ try
632+ Url:=TIdURI.ParamsEncode(Url,IndyTextEncoding_UTF8);
633+ NetHTTPRequest.Get(Url, s);
634+ s.Position:=0;
635+ Result:=s.ReadString(s.Size);
636+ finally
637+ FreeAndNil(s);
638+ end;
639+end;
640+
641+
484642
485643 function TTextDeFindForm.getsearchtext(Url:String):String;
486644 var
@@ -521,6 +679,7 @@ var
521679 row:integer;
522680 hit:Integer;
523681 hitl:boolean;
682+ hitm:boolean;
524683
525684
526685 function rowadd(row:integer):integer;
@@ -545,6 +704,8 @@ var
545704 hit:Integer;
546705 data:string;
547706 artist:string;
707+ s:string;
708+ hitm:boolean;
548709 function getval(k:string):string;
549710 begin
550711 try
@@ -556,7 +717,7 @@ var
556717
557718 begin
558719 result:=0;
559- data:=iddownload(Url);
720+ data:=tnetdownload(Url);
560721
561722 if OpURLOpenSave.Checked then begin
562723 Memo1.Lines.text:=data;
@@ -571,6 +732,18 @@ var
571732 artist:=getval('artistName');
572733 if OpURLituneNazo.Checked then
573734 if not MatchesMask(artist,getsearchtext(ListName.Text)) then continue;
735+ if OpURLituneTitleMatch.Checked then begin
736+ hitm:=true;
737+ for s in getsearchtext(ss).Split([' ']) do begin
738+ if not MatchesMask(getval('trackName'),'*'+s+'*') then begin
739+ hitm:=false;
740+ break;
741+ end;
742+ end;
743+ if not hitm then continue;
744+
745+ end;
746+
574747
575748 inc(hit);
576749 row:=rowadd(row);
@@ -1131,6 +1304,11 @@ begin
11311304 Result:=hit;
11321305 end;
11331306
1307+
1308+
1309+
1310+
1311+
11341312 procedure TTextDeFindForm.FindClick(Sender:TObject);
11351313 var
11361314 s,ss:string;
Show on old repository browser