Abril 20, 2018, 06:13:41 pm

Autor Tema: Goear Parser  (Leído 1612 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 Parser
« en: Junio 24, 2011, 04:43:21 am »
Descripcion:

Goear es un sitio online donde escuchar musica, crear tus propios playlist, puntuar canciones....,pues gracias a esta clase podremos interactuar con goear de una forma sencilla y facil pudiendo crear aplicaciones qué puedan buscar canciones en el motor de busqueda goear.

Código: (java) You are not allowed to view links. Register or Login

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Search;

import java.net.*;
import java.io.*;
import java.util.*;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.NamedNodeMap;

/**
 *
 * @author Moises
 */
public class Parser {
    private static String reqUri = "http://goear.com/reqsearch.php?q=";
    private static String reqXmlUri = "http://www.goear.com/tracker758.php?f=";
    private static ArrayList<String> identificators = new ArrayList<String>();
    private  static ArrayList<String> arrHttp = new ArrayList<String>();
    private static ArrayList<String> artistList = new ArrayList<String>();
    private static ArrayList<String> titleList = new ArrayList<String>();
    private static ArrayList<String> pathList = new ArrayList<String>();
    public static String urlEncode(String key)
    {
        return ( URLEncoder.encode(key) );
    }

    private static InputStream returnInputStream(String key)
    {
        String keyCod = urlEncode(key);
        System.out.println("Url encoded:" + keyCod);
        InputStream input = null;
        try
        {
            HttpURLConnection conn = ( HttpURLConnection ) new URL(reqUri + keyCod).openConnection();
            if ( conn != null )
            {
                System.out.println("Connected!");
                input = conn.getInputStream();
            }
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
        return ( input );
    }

    private static InputStream returnInputStreamXml(String url)
    {
        InputStream stream = null;
      try{
          HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection();
          if ( conn != null )
          {
             stream = conn.getInputStream();
          }
      }catch (Exception ex)
      {
          ex.printStackTrace();
      }
        return ( stream );
    }

    public static void ParseEntry(String key)
    {
        InputStream resultStream = returnInputStream(key);
        if ( resultStream != null )
        {
            try{
                StringBuilder b = new StringBuilder();
                int bytes = 0;
                while ( (bytes = resultStream.read()) != -1 )
                {
                         b.append((char)bytes);
                }

                String content = b.toString();
                String[] arr = content.split("href=");
                for ( int c = 1; c < arr.length - 1; c++)
                {
  
                   int rangeHttp = arr[c].indexOf("http");
                   int destRange = arr[c].indexOf("'>");
                   String valueSubstring = arr[c].substring(rangeHttp,destRange);
                   valueSubstring = valueSubstring.replaceAll("'", " ");
                   arrHttp.add(valueSubstring);
                }

            }catch (Exception ex)
            {
                System.out.println(ex.toString());
            }
        }
    }



    public static ArrayList<String> getLinks()
    {
        return ( arrHttp );
    }

    public static ArrayList<String> returnIdentificators()
    {
        ArrayList<String> links = getLinks();
        for (int c = 0; c < links.size(); c++ )
        {
            String[] arr = links.get(c).split("/");
            for ( int count = 0; count < arr.length; count ++ )
            {
                 if ( count == 4 )
                 {
                     identificators.add(arr[count]);
                 }
            }
        }
        return ( identificators );
    }

    public static ArrayList<String> getArtistList()
    {
        return ( artistList );
    }

    public static ArrayList<String> getTitles()
    {
        return ( titleList );
    }

    public static ArrayList<String> getPaths()
    {
        return ( pathList );
    }




    public static void ParseXmlEntry(String url)
    {
         InputStream resultStream = returnInputStreamXml(url);
         try{
             DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
             DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
             Document document = documentBuilder.parse(resultStream);

             NodeList lista = document.getChildNodes();
             int sizeLista = lista.getLength();

             //Refresh vectors for refreshing JTable.



             for ( int count = 0; count < sizeLista; count++ )
             {
                      String nodeName = lista.item(count).getNodeName();
                      if ( nodeName.equals("songs"))
                      {
                          NodeList listaDos = ( NodeList ) lista.item(count).getChildNodes();
                          for ( int countDos = 0; countDos < listaDos.getLength(); countDos++)
                          {
                              if ( listaDos.item(countDos).getNodeName().equals("song"))
                              {
                                  NamedNodeMap map = listaDos.item(countDos).getAttributes();
                                  for ( int countTres = 0; countTres < map.getLength(); countTres++ )
                                  {
                                      String nodeNameAttr = map.item(countTres).getNodeName();
                                      if ( nodeNameAttr.equals("artist"))
                                      {
                                          String content = map.item(countTres).getNodeValue();
                                          artistList.add(content);
                                      }
                                      if ( nodeNameAttr.equals("path"))
                                      {
                                          String content = map.item(countTres).getNodeValue();
                                          pathList.add(content);
                                      }
                                      if ( nodeNameAttr.equals("title"))
                                      {
                                          String content = map.item(countTres).getNodeValue();
                                          titleList.add(content);
                                      }
                                  }
                              }
                          }
                      }
             }
            



         }catch (Exception ex)
         {
             ex.printStackTrace();
         }
    }

    public static String constructGoearUrl(String key)
    {
        String url = reqXmlUri + key;
        return ( url );
    }
}

Ejemplo de uso

Código: (java) You are not allowed to view links. Register or Login
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package GoearSearch;

/**
 *
 * @author Moises
 */
import Search.*;
import java.util.*;
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
              Parser.ParseEntry(Parser.urlEncode("nickelback"));
              ArrayList<String> id = Parser.returnIdentificators();
              for ( int c= 0; c < id.size(); c++)
              {
                  String uriXml = Parser.constructGoearUrl(id.get(c));
                  Parser.ParseXmlEntry(uriXml);
              }

              ArrayList<String> titles = Parser.getTitles();
              for ( int count = 0; count < titles.size(); count++)
              {
                  System.out.println("Titulos:" + titles.get(count));
              }
              ArrayList<String> mp3Path = Parser.getPaths();
              for ( int countPath = 0; countPath < mp3Path.size(); countPath++)
              {
                  String mp3  =(String)mp3Path.get(countPath);
                  if ( !mp3.equals("")) System.out.println("Archivos:" + mp3);
              }

    }

}

Saludos.

Salida del programa ejecutado en Netbeans

Citar
run:
Url encoded:nickelback
Connected!
Titulos:Far away
Titulos:Someday
Titulos:Hero
Titulos:Follow You Home
Titulos:Someday Acoustic
Titulos:Photograph
Titulos:Animals
Titulos:nickelback - side of a bullet
Titulos:Far Away - Nickelback
Titulos:Nickelback  This afternoon read
Archivos:http://live3.goear.com/listen/af048a109892861d710e71544de5d6cd/4e046986/sst2/mp3files/10072006/b64d5ff7eb16a6740831106ff97cf568.mp3
Archivos:http://live3.goear.com/listen/38629462684592e8419103bb12500a38/4e046986/sst2/mp3files/16072006/c8ba074f311cb69f160345399c781a00.mp3
Archivos:http://live1.goear.com/listen/f693154279238c216d6d5ac0c49cc3b4/4e046986/sst/mp3files/26072006/0428374e85ac3478861c8ade362a6398.mp3
Archivos:http://live1.goear.com/listen/c8fcf3e3a9ae82334d15ff40c0ad9440/4e046986/sst/mp3files/27072006/1bf1fa639077faf703414e3b6ec4f552.mp3
Archivos:http://live1.goear.com/listen/e4a8cb10e537d0f87c91d0da42108e64/4e046987/sst/mp3files/03082006/16f698c3bbfc276b28e10aa96cbfab85.mp3
Archivos:http://live1.goear.com/listen/6d141e47bc7897676017a4a71da50632/4e046987/sst/mp3files/13082006/1eb13b3cdd0c9d989dd6ffab226d42bc.mp3
Archivos:http://live1.goear.com/listen/689f16ddfff8679fdff9770b26f83c9b/4e046988/sst/mp3files/19082006/413d5dca318d9177fde8c87a1d1927ca.mp3
Archivos:http://live1.goear.com/listen/1591da2c5df719e374fa59e6598e4ae0/4e046989/sst4/mp3files/08062008/60d60be9d5a6903ec3b9ccb7c617125d.mp3
Archivos:http://live1.goear.com/listen/b959e1e0d76dc44890c44e00ac98cf53/4e046989/sst5/mp3files/01042009/bc865449a57c9e999205eee258a37513.mp3
Archivos:http://live1.goear.com/listen/4942759130b949d2352c406ccaeadc4e/4e046989/sst5/mp3files/06072010/588d0ca8c0cafccd3ddf223828a13a19.mp3
BUILD SUCCESSFUL (total time: 4 seconds)
« Última modificación: Junio 24, 2011, 04:48:34 am por MoisesE »


xx
Goear Parser[C# version]

Iniciado por MoisesE

0 Respuestas
1661 Vistas
Último mensaje Junio 25, 2011, 02:51:59 am
por MoisesE
xx
Goear Parser[PYTHON VERSION]

Iniciado por MoisesE

1 Respuestas
1211 Vistas
Último mensaje Julio 19, 2011, 03:48:37 am
por texo7
question
autoplay en goear.

Iniciado por Xskin77X

0 Respuestas
2806 Vistas
Último mensaje Junio 07, 2010, 10:23:03 pm
por Xskin77X
exclamation
[IPHONE]Goear Mobile ( CIDYA ) .

Iniciado por MoisesE

0 Respuestas
2287 Vistas
Último mensaje Julio 03, 2010, 05:35:34 am
por MoisesE
exclamation
Goear downloader[WII][Codigo fuente en C]

Iniciado por MoisesE

4 Respuestas
3029 Vistas
Último mensaje Enero 13, 2010, 08:53:04 am
por myguestp
exclamation
[Objective-C]Codigo fuente GOEAR MOBILE

Iniciado por MoisesE

7 Respuestas
2865 Vistas
Último mensaje Julio 04, 2010, 03:03:58 am
por MoisesE