Mayo 20, 2018, 11:02:13 pm

Autor Tema: Goear downloader[WII][Codigo fuente en C]  (Leído 3042 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado MoisesE

  • Me das tu IP?
  • *
  • Mensajes: 156
  • El querer es poder
    • Ver Perfil
Goear downloader[WII][Codigo fuente en C]
« en: Enero 11, 2010, 10:48:08 am »
Aquí os dejo el codigo fuente de un homebrew qué desarolle con el devkitPRO, se qué vosotros le dareis mas utilidad qué yo:

Código: You are not allowed to view links. Register or Login
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <ogcsys.h>
#include <gccore.h>
#include <wiiuse/wpad.h>
#include <zlib.h>
#include <network.h>
#include <tinyxml.h>
#include <mp3player.h>
 
 
 
static void *xfb = NULL;
static GXRModeObj *rmode = NULL;
 
static char * url = NULL;
 
 
 
/*
   Getter
*/
char * getUrl(){
         return ( url );  
}
 
/*
  Setter.
*/
 
void setUrl(char * set ){
     if ( set != NULL ){
             url = set;
         }
}
 
void initPlayerAndPlay(char buffer[]){
    MP3Player_Init ();
        MP3Player_PlayBuffer(buffer,strlen(buffer),0);
}
 
        
                  void getFile(char * url,const char * file){
                  net_init();
          if ( url != NULL ){
                   //Inicializamos el socket.
                   struct sockaddr_in sock;
                   struct hostent * host;
                   host = net_gethostbyname(url);
                   sock.sin_family = AF_INET;
                   sock.sin_addr.s_addr = *(unsigned long*)host->h_addr_list[0];
                   sock.sin_port = htons ( 80 );
                   u32 pSocket = net_socket(AF_INET,SOCK_STREAM,0);
                   if ( pSocket != -1 ){
                          printf("%s%s%s","Conectado con:",inet_ntoa(sock.sin_addr),"\n");
                          s32 pConnect = net_connect(pSocket,(struct sockaddr*)&sock,sizeof(sock));
                          if ( pConnect != -1 ){
                                  printf("%s","\nConectado...!\n");
                                  //Una vez conectadmos..
                                  //creamos el buffer de 255.
                                  int recvd_len = 0;
                                  
                                
                                char pbuff[30];
                                strcpy(pbuff,"GET ");
                                strcat(pbuff,file);
                                strcat(pbuff," HTTP/1.1\r\n");
                                strcat(pbuff,"Host:www.goear.com\r\n");
                                strcat(pbuff,"User-Agent: Wii\r\n\r\n");
                                
                                
                                 printf("%s",pbuff);
                              
                                
                                char buff[229];
                                
                                int pSend = net_send(pSocket,pbuff,strlen(pbuff),0);
                                if ( pSend != -1 ){
                                        printf("%s%s%s","Buffer enviado:",pbuff,"\n");
                                        printf("%s","Reciviendo datos..\n");
                                        while ( ( recvd_len = net_recv(pSocket,buff,228,0) ) != 0 ){
                                                  if ( recvd_len > 0 ){
                                                               buff[recvd_len] = 0;
                                                               printf("%s",buff);
                                                          }
                                              }
                                   }
                             }
                      }
             }
     }
 
         void parseBuffer(char * buffer){
       TiXmlDocument doc;
       doc.Parse(buffer);
                  TiXmlNode * node = doc.FirstChild();
                  if( node != NULL ){
                            TiXmlNode * pNode = node->NextSibling("songs");
                            if ( pNode != NULL ){
                                    if ( pNode->Value() == NULL ){
                                         printf("%s","ret=-1");
                                       }else{
                                                  printf("%s","Parseando nodos..\n");
                                                  const char * pParsedNode = pNode->Value();
                                                  printf("%s %s %s","Parsed nodes:",pParsedNode,"\n");
                                                  TiXmlNode * nodos = pNode->FirstChild();
                                                  if ( nodos != NULL ){
                                                         const char * nodoFinal = nodos->Value();
                                                         if ( nodoFinal != NULL ){
                                                                printf("%s %s","Parsed node:\n",nodoFinal);
                                                                TiXmlElement * element = nodos->ToElement();
                                                                if ( element != NULL ){
                                                                      const char * pathMp3 = element->Attribute("path");
                                                                      const char * idSong = element->Attribute("artist");
                                                                      printf("%s %s %s %s %s","\nArchivo:\n",pathMp3,"\nTitulo:\n",idSong,"\n");
                                                                      if ( strstr(pathMp3,"http://") ){
                                                                             printf("%s","Es una direccion valida..\n");
                                                                             char * test[10];
                                                                             //no of elements.
                                                                             char * pChar = (char*)pathMp3;
                                                                             test[0] = strtok(pChar,"/");
                                                                             test[1] = strtok(NULL,"/");
                                                                             test[2] = strtok(NULL,"/");
                                                                             test[3] = strtok(NULL,"/");
                                                                             test[4] = strtok(NULL,"/");
                                                                             test[5] = strtok(NULL,"/");
                                                                             test[6] = strtok(NULL,"/");
                                                                             char * pCharName = test[6];
                                                                             if ( pCharName != NULL ){
                                                                                     char buff[10];
                                                                                     strcpy(buff,"/");
                                                                                     strcat(buff,test[2]);
                                                                                     strcat(buff,"/");
                                                                                     strcat(buff,test[3]);
                                                                                     strcat(buff,"/");
                                                                                     strcat(buff,test[4]);
                                                                                     strcat(buff,"/");
                                                                                     strcat(buff,test[5]);
                                                                                     strcat(buff,"/");
                                                                                     strcat(buff,test[6]);
                                                                                     strcat(buff,"/");
                                                                                     printf("%s",buff);
                                                                                     getFile("www.goear.com",buff);
                                                                                    
                                                                                }
                                                                         }
                                                                   }
                                                                
                                                            }
                                                     }
                                             }
                               }
                        }
     }
 
void getHttp(char * url){
          if( net_init() != 0 ){
                      printf("%s","Inicializado!");
                  }
          if ( url != NULL ){
                   //Inicializamos el socket.
                   struct sockaddr_in sock;
                   struct hostent * host;
                   host = net_gethostbyname(url);
                   sock.sin_family = AF_INET;
                   sock.sin_addr.s_addr = *(unsigned long*)host->h_addr_list[0];
                   sock.sin_port = htons ( 80 );
                   u32 pSocket = net_socket(AF_INET,SOCK_STREAM,0);
                   if ( pSocket != -1 ){
                          printf("%s%s%s","Conectado con:",inet_ntoa(sock.sin_addr),"\n");
                          s32 pConnect = net_connect(pSocket,(struct sockaddr*)&sock,sizeof(sock));
                          if ( pConnect != -1 ){
                                  printf("%s","\nConectado...!\n");
                                  //Una vez conectadmos..
                                  //creamos el buffer de 255.
                                  int recvd_len = 0;
                                  
                                      const char * request_text =
                                "GET /files/xmlfiles/2/secm254f84d.xml HTTP/1.1\r\n"
                                "Host: www.goear.com\r\n"
                                "User-Agent: Wii\r\n\r\n";
                                
                                char buff[234];
                                
                                s32 pSend = net_send(pSocket,request_text,strlen(request_text),0);
                                if ( pSend != -1 ){
                                        printf("%s%s%s","Buffer enviado:",request_text,"\n");
                                        printf("%s","Reciviendo datos..\n");
                                        while ( ( recvd_len = net_recv(pSocket,buff,233 ,0) ) != 0 ){
                                                  if ( recvd_len > 0 ){
                                                           int pLen = strlen(buff);
                                                           if ( strcasecmp(buff,"GET") ){
                                                                 for ( int indx = 0; indx < pLen; indx++){
                                                                      if ( buff[indx] == 'H' ) {
                                                                             buff[indx] = 0;
                                                                         }    
                                                                        
                                                                 }
                                                              }
                                                              buff[recvd_len] = 0;
                                                              if ( buff == NULL ){
                                                                       printf("%s","EMPTY!");
                                                                 }else{
                                                                          parseBuffer(buff);
                                                                       }
                                                          
                                                     }
                                              }
                                   }
                             }
                      }
             }
     }
    
        
        
/*
 
 
    Initializes socket per host
*/
 
 
 
    
 
 
 
        
 
//---------------------------------------------------------------------------------
int main(int argc, char **argv) {
//---------------------------------------------------------------------------------
 
        // Initialise the video system
        VIDEO_Init();
        
        // This function initialises the attached controllers
        WPAD_Init();
        
        //This function initialised the attached keyboard.
        
        
        // Obtain the preferred video mode from the system
        // This will correspond to the settings in the Wii menu
        rmode = VIDEO_GetPreferredMode(NULL);
 
        // Allocate memory for the display in the uncached region
        xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
        
        // Initialise the console, required for printf
        console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
        
        // Set up the video registers with the chosen mode
        VIDEO_Configure(rmode);
        
        // Tell the video hardware where our display memory is
        VIDEO_SetNextFramebuffer(xfb);
        
        // Make the display visible
        VIDEO_SetBlack(FALSE);
 
        // Flush the video register changes to the hardware
        VIDEO_Flush();
 
        // Wait for Video setup to complete
        VIDEO_WaitVSync();
        if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
 
 
        // The console understands VT terminal escape codes
        // This positions the cursor on row 2, column 0
        // we can use variables for this with format codes too
        // e.g. printf ("\x1b[%d;%dH", row, column );
        printf("\x1b[2;0H");
        
 
        printf("Presiona A para comenzar a escribir en el teclado...!\n");
        printf("Presione 1 para descargar su cancion de goear..\n");
        
        
 
        while(1) {
 
                // Call WPAD_ScanPads each loop, this reads the latest controller states
                WPAD_ScanPads();
                
 
                // WPAD_ButtonsDown tells us which buttons were pressed in this loop
                // this is a "one shot" state which will not fire again until the button has been released
                u32 pressed = WPAD_ButtonsDown(0);
 
                
                      
                                
                                
        // We return to the launcher application via exit
                if ( pressed & WPAD_BUTTON_HOME ) exit(0);
                
                //Si se presiona el boton A.
                
                if ( pressed & WPAD_BUTTON_A ) {
                   getHttp("www.goear.com");
                }
                
                
 
                // Wait for the next frame
                VIDEO_WaitVSync();
        }
 
        return 0;
}

Saludos y gracias.

« Última modificación: Enero 11, 2010, 12:41:04 pm por MoisesE »

Desconectado myguestp

  • Yo vivo en CPH
  • ***
  • Mensajes: 1469
  • A storm comin that the weatherman couldn’t predict
    • Ver Perfil
Re: Goear downloader[WII][Codigo fuente en C]
« Respuesta #1 en: Enero 12, 2010, 12:24:50 pm »
es impresionantes, pero es tuyo??? lo has hecho tu?
de donde conseguimos esas librerias?? :/

You are not allowed to view links. Register or Login

Desconectado MoisesE

  • Me das tu IP?
  • *
  • Mensajes: 156
  • El querer es poder
    • Ver Perfil
Re: Goear downloader[WII][Codigo fuente en C]
« Respuesta #2 en: Enero 12, 2010, 01:28:14 pm »

Sí, estas librerias las puedes conseguir de aquí:

You are not allowed to view links. Register or Login en la seccion Automated installer.
You are not allowed to view links. Register or Login tinyxml, xml parser engine.


Aquí teneis un video demostrativo del software funcionando en wii con Wiikey:

You are not allowed to view links. Register or Login

Salute.

Makefile

Código: You are not allowed to view links. Register or Login
#---------------------------------------------------------------------------------
# Clear the implicit built in rules
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITPPC)),)
$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC")
endif

include $(DEVKITPPC)/wii_rules

#---------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing extra header files
#---------------------------------------------------------------------------------
TARGET := $(notdir $(CURDIR))
BUILD := build
SOURCES := source
DATA := data  
INCLUDES :=

#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------

CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
CXXFLAGS = $(CFLAGS)

LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map

#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
LIBS := -lwiiuse -lbte -logc -lm

#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS :=

#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------

export OUTPUT := $(CURDIR)/$(TARGET)

export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir))

export DEPSDIR := $(CURDIR)/$(BUILD)

#---------------------------------------------------------------------------------
# automatically build a list of object files for our project
#---------------------------------------------------------------------------------
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))

#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
export LD := $(CC)
else
export LD := $(CXX)
endif

export OFILES := $(addsuffix .o,$(BINFILES)) \
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \
$(sFILES:.s=.o) $(SFILES:.S=.o)

#---------------------------------------------------------------------------------
# build a list of include paths
#---------------------------------------------------------------------------------
export INCLUDE := $(foreach dir,$(INCLUDES), -iquote $(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
-I$(CURDIR)/$(BUILD) \
-I$(LIBOGC_INC)

#---------------------------------------------------------------------------------
# build a list of library paths
#---------------------------------------------------------------------------------
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
-L$(LIBOGC_LIB)

export OUTPUT := $(CURDIR)/$(TARGET)
.PHONY: $(BUILD) clean

#---------------------------------------------------------------------------------
$(BUILD):
@[ -d $@ ] || mkdir -p $@
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile

#---------------------------------------------------------------------------------
clean:
@echo clean ...
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol

#---------------------------------------------------------------------------------
run:
wiiload $(TARGET).dol


#---------------------------------------------------------------------------------
else

DEPENDS := $(OFILES:.o=.d)

#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(OUTPUT).dol: $(OUTPUT).elf
$(OUTPUT).elf: $(OFILES)

#---------------------------------------------------------------------------------
# This rule links in binary data with the .jpg extension
#---------------------------------------------------------------------------------
%.jpg.o : %.jpg
#---------------------------------------------------------------------------------
@echo $(notdir $<)
$(bin2o)

-include $(DEPENDS)

#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------





« Última modificación: Enero 12, 2010, 01:32:09 pm por MoisesE »

Desconectado jep

  • Night Elf Druid
  • Colaborador
  • ****
  • Mensajes: 1771
  • Sexo: Masculino
    • Ver Perfil
Re: Goear downloader[WII][Codigo fuente en C]
« Respuesta #3 en: Enero 12, 2010, 01:47:51 pm »
interesante, no conocía esas bibliotecas.
muy buen aporte MoisesE!

Desconectado myguestp

  • Yo vivo en CPH
  • ***
  • Mensajes: 1469
  • A storm comin that the weatherman couldn’t predict
    • Ver Perfil
Re: Goear downloader[WII][Codigo fuente en C]
« Respuesta #4 en: Enero 13, 2010, 08:53:04 am »
WOW, entonces tu haces programas y cosas para la wii? xD


exclamation
[Objective-C]Codigo fuente GOEAR MOBILE

Iniciado por MoisesE

7 Respuestas
2895 Vistas
Último mensaje Julio 04, 2010, 03:03:58 am
por MoisesE
xx
[Pauscal] Código Downloader's

Iniciado por Yuki

0 Respuestas
5200 Vistas
Último mensaje Febrero 26, 2015, 03:54:06 am
por Yuki
xx
Codigo para que no vean el codigo fuente de una web

Iniciado por Ealexander19

13 Respuestas
2925 Vistas
Último mensaje Marzo 01, 2007, 02:04:51 pm
por Godfreie
xx
Ver código fuente de un .exe

Iniciado por NicPortal

0 Respuestas
1583 Vistas
Último mensaje Febrero 09, 2007, 07:10:09 pm
por NicPortal
xx
código fuente

Iniciado por Stuxnet

5 Respuestas
1818 Vistas
Último mensaje Mayo 30, 2012, 10:18:54 pm
por seth
xx
codigo fuente msn

Iniciado por bernyrc

9 Respuestas
4526 Vistas
Último mensaje Enero 03, 2008, 12:02:37 pm
por ziBboh
question
Codigo Fuente

Iniciado por angelicaisr

0 Respuestas
861 Vistas
Último mensaje Mayo 10, 2007, 09:57:30 am
por angelicaisr
xx
Codigo de fuente de sha y md5

Iniciado por vVegeta

1 Respuestas
2310 Vistas
Último mensaje Junio 04, 2008, 07:28:27 pm
por WaesWaes
xx
Codigo fuente de no-ip!!

Iniciado por ToR0

1 Respuestas
1253 Vistas
Último mensaje Marzo 25, 2008, 04:49:17 pm
por WaesWaes
xx
codigo fuente

Iniciado por dhararon

4 Respuestas
1206 Vistas
Último mensaje Junio 26, 2008, 11:53:18 am
por Sagitarius