string get_videoid(string url){
vector<string> resultado,valor;
string retorna = "";
string cmtest = "";
string idv = "";
SearchReplace(url,"?","&");
stringexplode(url, "/", &resultado);
if (resultado.size() > 1){
url = resultado.at(1);
resultado.clear();
stringexplode(url, "&", &resultado);
for (int i=0; i <= resultado.size()-1;i++){
valor.clear();
stringexplode(resultado.at(i), "=", &valor);
// si el Url del video tiene range entonces dar un resultado en retorna que luego pueda convertirse en un cache miss y romper el bucle
// Se a URL do vídeo possui range, então retorna um resultado que vai ser entendido como MISS e interrompe o loop
if (valor.at(0) == "range"){
retorna = ""; // cache miss
break;
}
if (valor.at(0) == "cm2"&& valor.at(1)=="0"){
retorna = ""; // cache miss
}
if (valor.at(0) == "id" || valor.at(0) == "video_id") {
idv = valor.at(1);
retorna = idv;
break;
}
}
if (retorna != ""){
retorna = idv;
}
else
{retorna == ""; }
}
return retorna;
}
extern "C" resposta getmatch(const string url) {
resposta r;
r.file = get_videoid(url);
// al tener una condicion para analizar !r.file.empty(), y nuestra funcion get_videoid retornar vacio al detectar range se hace cache miss y todo queda OK
// a checagem de r.file.empty() agora serve para apontar cache miss: (01) se não encontrar id e (02) se encontrar range.
if ( !r.file.empty() and
((url.find(".googlevideo.com") != string::npos) or (url.find(".youtube.com") != string::npos) or
(regex_match("74\\.125\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)", url) != "")) and
(url.find("videoplayback") != string::npos) and
(url.find("begin=") == string::npos)) {
r.match = true;
r.domain = "youtube";
r.file += ".flv";
} else {
r.match = false;
}
return r;
}
#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"
using namespace std;
string get_videoid(string url){
vector<string> resultado,valor;
string retorna = "";
string cmtest = "";
string idv = "";
SearchReplace(url,"?","&");
stringexplode(url, "/", &resultado);
if (resultado.size() > 1){
url = resultado.at(1);
resultado.clear();
stringexplode(url, "&", &resultado);
for (int i=0; i <= resultado.size()-1;i++){
valor.clear();
stringexplode(resultado.at(i), "=", &valor);
// si el Url del video tiene range entonces dar un resultado en retorna que luego pueda convertirse en un cache miss y romper el bucle
// Se a URL do vídeo possui range, então retorna um resultado que vai ser entendido como MISS e interrompe o loop
if ((valor.at(0) == "range") || (valor.at(0) == "cm2" && valor.at(1)=="0")) {
retorna = "MISS"; // cache miss
break; // se possui range, não precisa continuar a busca por ID
}
if (valor.at(0) == "id" || valor.at(0) == "video_id") {
idv = valor.at(1);
}
}
if (retorna != "MISS"){
retorna = idv;
} else {
retorna == "";
}
}
return retorna;
}
extern "C" resposta getmatch(const string url) {
resposta r;
r.file = get_videoid(url);
// al tener una condicion para analizar !r.file.empty(), y nuestra funcion get_videoid retornar vacio al detectar range se hace cache miss y todo queda OK
// a checagem de r.file.empty() agora serve para apontar cache miss: (01) se não encontrar id e (02) se encontrar range.
if ( !r.file.empty() and
((url.find(".googlevideo.com") != string::npos) or (url.find(".youtube.com") != string::npos) or
(regex_match("74\\.125\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)", url) != "")) and
(url.find("videoplayback") != string::npos) and
(url.find("begin=") == string::npos)) {
r.match = true;
r.domain = "youtube";
r.file += ".flv";
} else {
r.match = false;
}
return r;
}
Lembrou de dar permissão de execução ao plugin?yoboss escreveu:>| El ultimo plugin compilado de 32 bits no funciona :(
[brazilfw-devel]/devel/addons/thunder-svn-publico/thunder/plugins# g++ -m32 -I. -fPIC -shared -g -o youtube.com.so youtube.com.cpp
In file included from /usr/local/include/curl/curl.h:35:0,
from ../utils.cpp:4,
from youtube.com.cpp:4:
/usr/local/include/curl/curlrules.h:143:41: error: size of array '__curl_rule_01__' is negative
/usr/local/include/curl/curlrules.h:153:53: error: size of array '__curl_rule_02__' is negative
[brazilfw-devel]/devel/addons/thunder-svn-publico/thunder/plugins#
grage95 escreveu:for all youtube video cache able
force generate uri range request with single link uri youtube redirect
example :
*.youtube.com/generate_204\\? to *.youtube.com/videoplayback\\?
any idea?
brunovescovi escreveu:Boa noite, pessoal.
Seguindo o código do yoboss, alterei algumas linhas para ficar com menos ifs e saindo mais cedo do loop.
Os plugins compilados estão aqui:
http://www.brazilfw.com.br/users/brunovescovi/addons/3.0/bfwcache/youtube.com.so
http://www.brazilfw.com.br/users/brunovescovi/addons/3.0_64/bfwcache/youtube.com.so
Lembre-se que ao colocar o plugin do youtube você deve verificar se ele já está com permissões de execusão no arquivo, senão ele não funciona.
O source desse plugin está abaixo (yoboss, for favor veja se está de acordo com sua sugestão):
- Código: Selecionar todos
#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"
using namespace std;
string get_videoid(string url){
vector<string> resultado,valor;
string retorna = "";
string cmtest = "";
string idv = "";
SearchReplace(url,"?","&");
stringexplode(url, "/", &resultado);
if (resultado.size() > 1){
url = resultado.at(1);
resultado.clear();
stringexplode(url, "&", &resultado);
for (int i=0; i <= resultado.size()-1;i++){
valor.clear();
stringexplode(resultado.at(i), "=", &valor);
// si el Url del video tiene range entonces dar un resultado en retorna que luego pueda convertirse en un cache miss y romper el bucle
// Se a URL do vídeo possui range, então retorna um resultado que vai ser entendido como MISS e interrompe o loop
if ((valor.at(0) == "range") || (valor.at(0) == "cm2" && valor.at(1)=="0")) {
retorna = "MISS"; // cache miss
break; // se possui range, não precisa continuar a busca por ID
}
if (valor.at(0) == "id" || valor.at(0) == "video_id") {
idv = valor.at(1);
}
}
if (retorna != "MISS"){
retorna = idv;
} else {
retorna == "";
}
}
return retorna;
}
extern "C" resposta getmatch(const string url) {
resposta r;
r.file = get_videoid(url);
// al tener una condicion para analizar !r.file.empty(), y nuestra funcion get_videoid retornar vacio al detectar range se hace cache miss y todo queda OK
// a checagem de r.file.empty() agora serve para apontar cache miss: (01) se não encontrar id e (02) se encontrar range.
if ( !r.file.empty() and
((url.find(".googlevideo.com") != string::npos) or (url.find(".youtube.com") != string::npos) or
(regex_match("74\\.125\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)", url) != "")) and
(url.find("videoplayback") != string::npos) and
(url.find("begin=") == string::npos)) {
r.match = true;
r.domain = "youtube";
r.file += ".flv";
} else {
r.match = false;
}
return r;
}
Vou ver se nesses dias verifico o restante do código para verificar a url_rewrite por dentro dele.
Um abraço.
coolporro escreveu:brunovescovi escreveu:Boa noite, pessoal.
Seguindo o código do yoboss, alterei algumas linhas para ficar com menos ifs e saindo mais cedo do loop.
Vou ver se nesses dias verifico o restante do código para verificar a url_rewrite por dentro dele.
Um abraço.
buen dia amigo podras darme un ejemplo de plugin para esta pagina www.noticias24.com para poder guiarme con otros para paginas parecidas, gracias amigo
yoboss escreveu:>| El ultimo plugin compilado de 32 bits no funciona :(
yoboss escreveu:>|
es todo si?
me falta algo mas?
Yoboss, Aqui fiz os testes em 64 bits e funcionou bem o último plugin que coloquei. O amigo Willian também relatou que está funcionando bem. Eu recompilei o plugin para 32 bits para o caso desse que postei estar corrompido, mas o plugin gerado é udêntico ao que eu compilei, então este não está corrompido. Veja se consegue fazer mais testes.williamsio escreveu:Por otra parte el plugin youtube.com.so posteado funciona OK.
Para compilar em 32 bits:yoboss escreveu:entonces compilo sin el -m32 y compila bien, pero asumo que me esta compilando para 64 bits algo que no nesesito
porque tampoco me funciona cuando ya lo ingreso en mi sistema de 32 bits
g++ -m32 -march=i586 -I. -fPIC -shared -g -o youtube.com.so youtube.com.cpp
Esta pasta foi criada no repositório quando fizemos o teste no webadmin para o BFW Cache 1.0 64 bits. O source foi retirado porque o lançamento da versão 64 bits ficou para ser junto do BFW Cache 1.1. Por isso tem uma pasta lá mas está vazia. O source vai vir na versão 1.1 do BFW Cache.yoboss escreveu:entro a
http://www.brazilfw.com.br/downloads/addons/bfw3.x/sources/bfwcache/
no hay nada
coolporro escreveu:buen dia amigo podras darme un ejemplo de plugin para esta pagina www.noticias24.com para poder guiarme con otros para paginas parecidas, gracias amigo
Já forneci plugins de exemplo no tópico de acompanhamento parte 4. Tem que pesquisar senão os posts vão ficar muito repetitivos.xtanctp escreveu:igualmente... un ejemplo de plugin para esta pagina http://animextremist.com/ para poder guiarme con otros para paginas parecidas
[brazilfw-devel]/devel/addons/thunder-svn-publico# ./configure
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for a BSD-compatible install... /bin/install -c
checking for ar... ar
checking for perl... perl
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for initgroups... yes
checking for setgroups... yes
checking OS... Linux
checking for main in -lmysqlclient... no
configure: error: "libmysqlclient was not found! Please install libmysqlclient or correspondent for your system"
[brazilfw-devel]/devel/addons/thunder-svn-publico#
[brazilfw-devel]/devel/addons/thunder-svn-publico# ./configure
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for a BSD-compatible install... /bin/install -c
checking for ar... ar
checking for perl... perl
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for initgroups... yes
checking for setgroups... yes
checking OS... Linux
checking for main in -lmysqlclient... yes
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... no
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking mysql/mysql.h usability... no
checking mysql/mysql.h presence... no
checking for mysql/mysql.h... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating thunder/Makefile
config.status: creating etc/thunder/thunder.conf
config.status: creating thunder/plugins/Makefile
config.status: creating thunder/default.h
config.status: thunder/default.h is unchanged
[brazilfw-devel]/devel/addons/thunder-svn-publico# make
cd thunder && make
make[1]: Entering directory `/devel/addons/thunder-svn-publico/thunder'
g++ -Wall -O2 -lmysqlclient -ldl -DHAVE_CONFIG_H -c -o thunder.o thunder.cpp
In file included from connectiontohttp2.h:6:0,
from proxyhandler.h:6,
from thunder.cpp:5:
database_mysql.h:1:25: fatal error: mysql/mysql.h: No such file or directory
compilation terminated.
make[1]: *** [thunder.o] Error 1
make[1]: Leaving directory `/devel/addons/thunder-svn-publico/thunder'
make: *** [all] Error 2
[brazilfw-devel]/devel/addons/thunder-svn-publico#
killerinstinc escreveu:Alguien sabe como limpiar solo el cache de youtube sin afectar lo demas el bfwcache remake limpia todo, acabo de instalar el plugin posteado y quiereo checar su funcionamiento ya con el cache limpio (solo el de youtube)
#!/bin/sh
echo ""
echo "+==========================================================================+"
echo "| REMOVER ARCHIVOS INCOMPLETOS |"
echo "+==========================================================================+"
#--------------------------------------------------------------------------------------------------
/etc/init.d/squid stop
/etc/init.d/bfwcache stop
mysql -u root bfwcache -p << then
DELETE FROM bfwcache WHERE domain="youtube" and size<"2048000";
then
find . partition/bfwcache/cache/youtube/ -name "*.flv" -size -2048k -exec rm {} \;
/etc/init.d/mysql stop
/etc/init.d/squid start
/etc/init.d/mysql start
/etc/init.d/bfwcache start
echo "+==========================================================================+"
echo "| OPERACION FINALIZADA |"
echo "+==========================================================================+"
betao345 escreveu:ola bom dia sou novo com bfw mas estou gostando muito eu testei o ultimo plugin do youtube ele esta funcionando a 100% sem erros aqui comigo obrigado e um bom dia todos
williamsio escreveu:Hola amigos y aunque no tenemos codigo fuente de este cleaner de videos fallados de youtube al parecer Funciona OK
aqui el link
http://perufw.wordpress.com/2012/04/06/lidiando-con-el-thundercache-3-3-1/
como indico anteriormente el amigo yoboss, la forma de detectar que el video esta OK o fallado es de la siguiente manera
si el archivo comienza con los 3 primeros caracteres FLV esta OK si comienza con otra cosa esta mal, asi de simple creo que se puede implementar un sh y todo.
EDCOSMOS escreveu:Ainda não captei como se faz a instalação do novo plugin do youtube no bfwcache alguem poderia explicar como se faz a instalação desde ja obrigado
EDCOSMOS escreveu:Ainda não captei como se faz a instalação do novo plugin do youtube no bfwcache alguem poderia explicar como se faz a instalação desde ja obrigado
cd /partition
package bfwcache.pkg
mt
cp bfwcache.pkg /mnt
umt
rm bfwcache.bfw
#!/bin/sh
echo ""
echo "+==========================================================================+"
echo "| REMOVER ARQUIVOS INCOMPLETOS |"
echo "+==========================================================================+"
#--------------------------------------------------------------------------------------------------
/etc/brazilfw/custom/squid stop
/etc/brazilfw/custom/thunder stop
mysql -u root thunder -p << then
DELETE FROM thunder WHERE domain="youtube" and size<"2048000";
then
find . partition/thunder/cache/youtube/ -name "*.flv" -size -2048k -exec rm {} \;
/etc/init.d/mysql stop
/etc/init.d/mysql start
/etc/brazilfw/custom/squid start
/etc/brazilfw/custom/thunder start
echo "+==========================================================================+"
echo "| OPERACAO FINALIZADA |"
echo "+==========================================================================+"
###precione enter####
/etc/brazilfw/custom/squid start
/etc/brazilfw/custom/thunder start
backup
apoliano escreveu:Boa tarde galera.
Bruno como está o andamento dos testes do BFWcache 1.1?
saivercon escreveu:O grupo de beta test continuam testando exaustivamente as alterações antes lançar a nova versão que agora mudou para BFWCACHE 2.0, entendo a ansiedade de todos afinal a pouco também estava desse lado, mas tenham um pouco mais de paciência a todos que os testes do grupo beta é essencial para o lançamento de uma versão sem bugs ou ao menos com uma quantidade minima de erros.
apoliano escreveu:saivercon escreveu:O grupo de beta test continuam testando exaustivamente as alterações antes lançar a nova versão que agora mudou para BFWCACHE 2.0, entendo a ansiedade de todos afinal a pouco também estava desse lado, mas tenham um pouco mais de paciência a todos que os testes do grupo beta é essencial para o lançamento de uma versão sem bugs ou ao menos com uma quantidade minima de erros.
Sim, eu entendo o trabalho do grupo de Beta Tester, sei que ele é estremamente importante, só queria saber se tudo está ocerrendo bem.
Não importa a demora para que seja lançado o novo addon para download, sem problema algum podemos esperar o tempo que for necessário, é melhor que
um sistema apois ser desenvolvido seja rigorosamente testado, como você disse, para lança-lo com nenhum bug e/ou quantidade mínima de erros, do que um sistema
que seja desenvolvido e lançado rapidamente sem funcionar.
O sistema em si está bem estável com as mudanças que relacionei num post anterior.saivercon escreveu:Em relação a como andam os testes prefiro deixar a critério do Bruno as informações a ser passadas para o fórum aberto.
Voltar para Certified Addons of Project BFW
Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes