Ajuda com Projeto

Delphi

04/10/2009

Bom dia pessoal, hoje pela manhã fui solicitado a desenvolver um sistema de busca de vídeos de uma igreja (vídeos clipes de música evangelicas), vai ser basicamente assim, os arquivos de vídeos irão ficar gravados em uma pasta no HD, e me solicitaram para fazer uma consulta rápida e mais fácil dos arquivos. Exemplo:
Nome do arquivo:

MELISSA BARCELOS - ENQUANTO EU VIVER - FAIXA 1

A busca identificaria se o usuário digitasse qualquer palavra do arquivo e listasse em algum ListView.

Outra solicitação que fizeram foi do tempo de resposta da consulta, ser o mais rápido possível.

Vocês tem alguma idéia?
Já fizeram algum projeto semelhante?


Jpauloss

Jpauloss

Curtidas 0

Respostas

Baker

Baker

04/10/2009

Bom, existem N maneiras de se fazer isso.

Uma das maneiras (se fosse eu), faria uma aplicação com banco de dados que acessasse a pasta previamente configurada. O sistema gravaria o nome de todos os arquivos da pasta (ou somente vídeos) em uma tabela e quando fizer uma consulta, fará em SQL, o que poderá ser bem rápido trazendo como resultado o local do arquivo e ao dar clicar duas vezes abriria o arquivo. E Mais, depois você poderia fazer um indexador que fique gerenciando a(s) pasta(s) e seus arquivos incluídos ou excluídos.

Mas caso você não queria tanta complicação, segue abaixo uma unit que adaptei de um código que um dia usei. Só falta você adaptar para que a função faça uma busca para cada uma das palavras digitadas exceto de artigos definidos e suas declinações para que a busca seja mais exata.

Qualquer coisa é só mandar e-mail. Falow e até mais.

 unit Unit1;

interface

uses
  Windows, Messages, URLmon, Shellapi, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, FileCtrl, Buttons;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    SpeedButton1: TSpeedButton;
    Edit2: TEdit;
    ListBox1: TListBox;
    function Procurar_Arquivo(Diretorio, Arquivo: String): Boolean;
    procedure SpeedButton1Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}


function TForm1.Procurar_Arquivo(Diretorio, Arquivo: String): Boolean;
var
  Temp1: Integer;
  Temp2: TSearchRec;
  Proximo_Diretorio: String;
begin
  Result:=False; //Se True, achou o arquivo
  Diretorio:=Trim(Diretorio);
  if Diretorio[Length(Diretorio)]<>´\´ then Diretorio:=Diretorio+´\´;
  if FindFirst(Diretorio+Arquivo,faAnyFile,Temp2)=0 then Result:=True //Verifica diretório
  else                                                                //Verifica sub-diretórios
    begin
      FindClose(Temp2);
      Temp1:=FindFirst(Diretorio+´*.*´,faDirectory,Temp2);
        while (Temp1=0) and (not Result) do
          begin
            if (Temp2.Name<>´.´) and (Temp2.Name<>´..´) then                //Não procura por diretórios e sim por arquivos
              begin
                Proximo_Diretorio:=Diretorio+Temp2.Name+´\´;
                Result:=Procurar_Arquivo(Proximo_Diretorio,Arquivo);
                Label1.Caption:=Copy(Proximo_Diretorio,1,Length(Proximo_Diretorio)-1);
                  if Result then
                     begin
                       Result:=False;
                       Diretorio:=Proximo_Diretorio;                               //Se achou, próximo arquivo
                       
                       listbox1.Items.Add(Proximo_Diretorio+Arquivo);
                     end;
                  end;
                Temp1:=FindNext(Temp2);
                Application.ProcessMessages;
              end;
              FindClose(Temp2);
            end;
          if not Result then Diretorio:=´´;
          
       end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var nome: pchar;
begin

    Procurar_Arquivo(edit2.Text,edit1.text);
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
if edit1.text=´´ then
   speedbutton1.Enabled:=false
else
   speedbutton1.Enabled:=true;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
   speedbutton1.OnClick(edit1);
end;

end.
 



GOSTEI 0
Jpauloss

Jpauloss

04/10/2009

Bom, existem N maneiras de se fazer isso. Uma das maneiras (se fosse eu), faria uma aplicação com banco de dados que acessasse a pasta previamente configurada. O sistema gravaria o nome de todos os arquivos da pasta (ou somente vídeos) em uma tabela e quando fizer uma consulta, fará em SQL, o que poderá ser bem rápido trazendo como resultado o local do arquivo e ao dar clicar duas vezes abriria o arquivo. E Mais, depois você poderia fazer um indexador que fique gerenciando a(s) pasta(s) e seus arquivos incluídos ou excluídos. end. [/code]


Obrigado pelo retorno.

Os arquivos de vídeos ficariam gravados no banco de dados, ou só o lugar onde estão?

Você já fez alguns desses?


GOSTEI 0
Baker

Baker

04/10/2009

Somente gravaria no banco o nome do arquivo e local.

Um sistema tão específico assim eu nunca fiz. O que eu fiz a uns tempos atras foi um sistema de monvimentação de pessoas (entrada, saída, agendamento, reconhecimento de placa de veículo e crachá) + sistema servidor que faz os tratamentos dos dados. Neste client, a imagem da webcam era salva numa pasta e o local da mesma era salva no banco de dados.

Depende muito das imagens, mas digamos que 90 ¬ dos programadores não salvam a imagem no banco e sim só o caminho. No seu caso são vídeos, então mais do que interessante é salvar somente o local.

Até mais.


GOSTEI 0
Jpauloss

Jpauloss

04/10/2009

Somente gravaria no banco o nome do arquivo e local. Um sistema tão específico assim eu nunca fiz. O que eu fiz a uns tempos atras foi um sistema de monvimentação de pessoas (entrada, saída, agendamento, reconhecimento de placa de veículo e crachá) + sistema servidor que faz os tratamentos dos dados. Neste client, a imagem da webcam era salva numa pasta e o local da mesma era salva no banco de dados. Depende muito das imagens, mas digamos que 90 ¬ dos programadores não salvam a imagem no banco e sim só o caminho. No seu caso são vídeos, então mais do que interessante é salvar somente o local. Até mais.


Querendo salvar esses videos no FB teria condições?


GOSTEI 0
Baker

Baker

04/10/2009

Até teria cara, mas não recomendo. Irá deixar seu banco lento.

Nunca fiz isso com vídeo, mas creio que seja o mesmo procedimento de inclusão de imagem. Dê uma pesquisada aqui no forum sobre o assunto, pois acho que já vi aqui algum tópico explicando muito bem como se faz isso.

Até mais cara


GOSTEI 0
Luiz_aquino

Luiz_aquino

04/10/2009

Bom dia pessoal, hoje pela manhã fui solicitado a desenvolver um sistema de busca de vídeos de uma igreja (vídeos clipes de música evangelicas), vai ser basicamente assim, os arquivos de vídeos irão ficar gravados em uma pasta no HD, e me solicitaram para fazer uma consulta rápida e mais fácil dos arquivos. Exemplo: Nome do arquivo: MELISSA BARCELOS - ENQUANTO EU VIVER - FAIXA 1 A busca identificaria se o usuário digitasse qualquer palavra do arquivo e listasse em algum ListView. Outra solicitação que fizeram foi do tempo de resposta da consulta, ser o mais rápido possível. Vocês tem alguma idéia? Já fizeram algum projeto semelhante?


Pq vc não cria um servidor de storage de video e desenvolva um sistema para gerenciar isso!

vc define a origem, aponta as informações e o proprio sistema faz o gerenciamento, colocando o nome e a copia do arquivo que é transparente para o usuário


GOSTEI 0
Baker

Baker

04/10/2009

Pq vc não cria um servidor de storage de video e desenvolva um sistema para gerenciar isso! vc define a origem, aponta as informações e o proprio sistema faz o gerenciamento, colocando o nome e a copia do arquivo que é transparente para o usuário


COncordo com o Luiz, basta que você defina os parametros de sua aplicação, se for algo simples e que não vá crescer, faça algo leve e de fácil acesso e sem complicações, caso seja algo grande ou que a tendencia seja de crescer ainda mais, crie uma estrutura legal com um server e um client.

PS: Nas ambas opções, evite salvar as imagens no banco... somente o caminho.


GOSTEI 0
POSTAR