[Tool/Web/Other] (Plugin) UrlDownloadToFile
#1

O que й?

Essa nгo, vocк deve estar pensando .. Mais um "leitor de urls" ? Bem, desta vez nгo. Este sistema robusto para leitura desde arquivos grandes atй pequenos arquivos em pawn.

Vocк decide qual URL baixar e especifica o arquivo para onde deve ser baixado. Й uma ferramenta bastante dedicada entгo o download do arquivo muitas vezes й feito em pouquissimos segundos sem ocupar muito processo do servidor pois й tudo feito em um processo alternativo - Fora da main thread

Foi testado pwncurl, HTTP da sa:mp e BaixarWebSites de Ken, nenhum conseguiu fazer a leitura de arquivos grandes como uma mъsica de 5 megabytes digamos.

O pwncurl й feito a base da uma include chamada CURL e esta biblioteca й apenas usada e especificada para requerimento de sites pequenas.

BaixarWebSites de Ken й uma ferramenta feita com bastante gambiarra, ela cria um VBS alternativo que й aberto no servidor e outro Site.txt que terб o conteъdo do site, logo dб conflito baixar 2 sites seguidos e nгo sabe-se quando o arquivo termina de baixar

HTTP de sa:mp й quase o mesmo que pwncurl, sу que й muito genйrica e nгo funciona com arquivos grandes :d

----

Criei este sistema, pois pretendo criar um analisador de arquivos MP3 E TESTEI todos sistema de downloads e nenhum funcionou para um arquivo MP3 grande (para poder ler informaзхes de um arquivo MP3 para PlayAudioStream da SA:MP)

-------

Download:

Plugin:
Baixe o plugin deste site abaixo e coloque na pasta plugins do seu servidor. Apуs isto vб no server.cfg e em uma linha coloque plugin udtf

Download do Plugin:
http://www.solidfiles.com/d/470e668d4a/

Source Code

PHP код:
//-------------------------------------------------
//     URL DOWNLOAD TO FILE
//  Por Bruno da Silva @ [iPs]TeaM 2012
//-------------------------------------------------
#include "main.h"
#include "malloc.h"
#include <windows.h>
#include <urlmon.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#pragma comment(lib, "urlmon.lib")
logprintf_t logprintf;
void **ppPluginData;
using namespace std;
extern void *pAMXFunctions;
PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports()
{
    return 
SUPPORTS_VERSION SUPPORTS_AMX_NATIVES;
}
PLUGIN_EXPORT bool PLUGIN_CALL Load(void **ppData)
{
    
pAMXFunctions ppData[PLUGIN_DATA_AMX_EXPORTS];
    
logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF];
    
logprintf("URLDownloadToFile Por Bruno da Silva");
    return 
true;
}
PLUGIN_EXPORT void PLUGIN_CALL Unload()
{
    
logprintf("URLDownloadToFile Por Bruno da Silva");
}
/********************************************************************************/
char    *parametro[2];
int      processar;
void WINAPI processoAlternativo(LPVOID parames);
void WINAPI processoAlternativo(LPVOID parames)
{
    
char string[64] = "scriptfiles/";
    
strcat_s(string, (LPCSTR)parametro[1]);
    
processar 1;
    
HRESULT hr URLDownloadToFileNULL, (LPCSTR)parametro[0], (LPCSTR)string0NULL );
    
char append[05] = "_OX_";
    
strcat_s(stringappend);
    
FILE pFile;
    
pFile fopen (string"w+");
    if (
pFile != NULL) {
        
fclose (pFile);
    }
}
static 
cell AMX_NATIVE_CALL n_URLDownloadToFile(AMX *amxcell *params)
{
    if(
params[0] == 8) {
        
amx_StrParam(amxparams[1], parametro[0]);
        
amx_StrParam(amxparams[2], parametro[1]);
        
DWORD dwXuxaTHR;
        
processar 0;
        
HANDLE hThread CreateThread(0,0,(LPTHREAD_START_ROUTINE)processoAlternativo, (LPVOID)00,&dwXuxaTHR);
        while(!
processar) continue;
        return 
1;
    }
    return 
0;
}
AMX_NATIVE_INFO nvoNatives[] =
{
    { 
"URLDownloadToFileInterno"n_URLDownloadToFile},
    { 
0}
};
PLUGIN_EXPORT int PLUGIN_CALL AmxLoad(AMX *amx)
{
    return 
amx_Register(amxnvoNatives, -1);
}
PLUGIN_EXPORT int PLUGIN_CALL AmxUnload(AMX *amx)
{
    return 
AMX_ERR_NONE;

(pastebin http://pastebin.com/CfpE9S6e)

Include:
Pegue o cуdigo deste site e salve em a_udtf.inc Apуs isto coloque #include a_udtf em seu gamemode

pawn Код:
///////////////////////////////////////////////////////////////////////////////
 
// a_gvars.inc -> Por Bruno
#if !defined varGet
#define varGet(%0)      getproperty(0,%0)
#endif
 
#if !defined varSet
#define varSet(%0,%1) setproperty(0, %0, %1)
#endif
 
// a_udtf.nic -> Por Bruno
// defina aqui o mбximo de downloads que podem ser feitos
#define MAX_DOWNLOADS 500
 
///////////////////////////////////////////////////////////////////////////////
 
new szSiteDownload[MAX_DOWNLOADS][128];
new szFileDownload[MAX_DOWNLOADS][064];
new giDownloads;
 
native URLDownloadToFileInterno(site[], arquivo[]);
 
stock URLDownloadToFile(site[], arquivo[])
{
 
    static strBuff[64];
    format(strBuff, 64, "%s", arquivo);
 
    URLDownloadToFileInterno(site, strBuff);
 
    varSet(strBuff, SetTimerEx("gDown_CHKFile", 900, true, "i", giDownloads));
 
    format(szFileDownload[giDownloads], 64, arquivo);
    format(szSiteDownload[giDownloads], 00128, site);
 
    giDownloads++;
 
    return true;
}
 
 
forward gDown_CHKFile(fileid);
public gDown_CHKFile(fileid)
{
 
    if(szFileDownload[fileid][0]) {
 
        static stmpHeCK[64];
        format(stmpHeCK, 64, "%s_OX_", szFileDownload[fileid]);
 
        if(fexist(stmpHeCK)) {
 
            KillTimer(varGet(szFileDownload[fileid]));
 
// public OnURlDownloaded(site[], file[])
            CallLocalFunction("OnURlDownloaded", "ss", szSiteDownload[fileid], szFileDownload[fileid]);
 
            fremove(stmpHeCK);
 
        }
 
    }
    return true;
}
 
 
forward OnURlDownloaded(site[], arquivo[]);

(pastebin: http://pastebin.com/dVuPEe3G)


Modo de uso:
O modo de uso й muito simples !! Para baixar um arquivo .mp3 em seu servidor digamos, vocк usa a seguinte funзгo:
PHP код:
URLDownloadToFile("http://dl.dropbox.com/u/89425664/Julho01.mp3""arquivoBaixado.mp3"); 
Apуs baixar uma callback jб declarada serб chamada no seu gamemode
PHP код:
forward OnURlDownloaded(site[], arquivo[]);
public 
OnURlDownloaded(site[], arquivo[]) {
    
printf("O arquivo vindo do site %s \n terminou de baixar e esta salvo em %s"sitearquivo);
    return 
true;

Ela serve para indicar que o arquivo foi baixado.

Enfim .. Fiz o tуpico na corrida, se virem ler uraurua Se tiverem dъvidas explico melhor

------------------------------------------------------

Desenvolvido por Bruno da Silva @ [iPs]TeaM 2010 2012

------------------------------------------------------
Reply
#2

Espero chegar um dia aonde o Bruno chegou e.e
Cara, vocк faz magia.
Reply
#3

Bruno, sem ofenзa... mas, vocк nгo faz outras coisas alйm de ficar criando cуdigos na frente do pc?

Fica a maioria do tempo aqui no forum. So estou sendo sincero, antes que venha os "iPs" falar merda.


@Topic
Parabйns '-'


This forum requires that you wait 120 seconds between posts. Please try again in 26 seconds.
Reply
#4

Quote:
Originally Posted by @Riichard
Посмотреть сообщение
Bruno, sem ofenзa... mas, vocк nгo faz outras coisas alйm de ficar criando cуdigos na frente do pc?

Fica a maioria do tempo aqui no forum. So estou sendo sincero, antes que venha os "iPs" falar merda.


@Topic
Parabйns '-'
І

Enfim Muito Bom...
Espero que eu tenha uma logica assim
Reply
#5

Excelente Drakins!
Reply
#6

Quote:
Originally Posted by @Riichard
Посмотреть сообщение
Bruno, sem ofenзa... mas, vocк nгo faz outras coisas alйm de ficar criando cуdigos na frente do pc?

Fica a maioria do tempo aqui no forum. So estou sendo sincero, antes que venha os "iPs" falar merda.


@Topic
Parabйns '-'


This forum requires that you wait 120 seconds between posts. Please try again in 26 seconds.
Relaxa, deixa que minha vida cuido eu. Obrigado
Reply
#7

Quote:
Originally Posted by [FeK]DraKiNs
Посмотреть сообщение
Relaxa, deixa que minha vida cuido eu. Obrigado
Hum, fazer oque :]
Reply
#8

Й que eu nгo durmo, entгo muitas vezes nгo tenho nada para fazer durante o dia, entгo venho aqui no fуrum dar uma olhada e faзo um projetinho ou outro. Os cуdigos sгo pequenos, nгo ocupam muita parte do meu tempo .. tenso. Sem contar que nгo tem nada haver com o tуpico.

Alguйm aqui me ajuda com a estrutura de um arquivo MP3? Estou tentando pegar a taxa de bit rates dele (pуs baixado) para poder pegar as informaзхes dele. Mas nгo acho nenhuma funзгo que explique isto direito. Sem ser ffmpeg.
Reply
#9

Quote:
Originally Posted by [FeK]DraKiNs
Посмотреть сообщение
Alguйm aqui me ajuda com a estrutura de um arquivo MP3? Estou tentando pegar a taxa de bit rates dele (pуs baixado) para poder pegar as informaзхes dele. Mas nгo acho nenhuma funзгo que explique isto direito. Sem ser ffmpeg.
Usa o Audacity.
Reply
#10

Gostei Bruno, estou vendo que vocк estб conseguindo lidar com os plugins.

Uma coisa, nгo necessita de colocar [Tool/Web/Other] o forum tem uma tag de plugins ..

@Off

Bruno ainda esta com aqueles problemas quando vai dormir?
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)