How to get audio download sound channel using audio file id

am using sound cloud search api. when i hit the search url it gave me search results. each sound has a channel url but does not load the url as it depends on the loader setting. Each download also has a download count of more than 1.for example when you click this URL

http://api.soundcloud.com/tracks.json?client_id=4346c8125f4f5c40ad666bacd8e96498&q=tere%20bin&limit=1

It will give a search result like this

[{"kind":"track","id":63225776,"created_at":"2012/10/13 01:52:38 +0000","user_id":26029726,"duration":206177,"commentable":true,"state":"finished","original_content_size":3298521,"last_modified":"2014/10/01 18:56:25 +0000","sharing":"public","tag_list":"","permalink":"tere-bin-uzair-jaswal-official","streamable":true,"embeddable_by":"all","downloadable":false,"purchase_url":null,"label_id":null,"purchase_title":null,"genre":"Musical","title":"Tere Bin - Uzair Jaswal [Official Music Audio]","description":"","label_name":"","release":"","track_type":"original","key_signature":"","isrc":"","video_url":null,"bpm":null,"release_year":null,"release_month":null,"release_day":null,"original_format":"mp3","license":"all-rights-reserved","uri":"https://api.soundcloud.com/tracks/63225776","user":{"id":26029726,"kind":"user","permalink":"uzair-jaswal-1","username":"Uzair Jaswal Music","last_modified":"2014/10/19 13:06:28 +0000","uri":"https://api.soundcloud.com/users/26029726","permalink_url":"http://soundcloud.com/uzair-jaswal-1","avatar_url":"https://i1.sndcdn.com/avatars-000110064166-2ts508-large.jpg"},"permalink_url":"http://soundcloud.com/uzair-jaswal-1/tere-bin-uzair-jaswal-official","artwork_url":"https://i1.sndcdn.com/artworks-000032079002-kup6vc-large.jpg","waveform_url":"https://w1.sndcdn.com/9bwAsZfGrxwN_m.png","stream_url":"https://api.soundcloud.com/tracks/63225776/stream","playback_count":359588,"download_count":100,"favoritings_count":7557,"comment_count":491,"attachments_uri":"https://api.soundcloud.com/tracks/63225776/attachments","policy":"ALLOW"}]

      

it is for one audio only and this sound is not loading, but it has 100 downloads. How is this possible? can anyone tell me how can i load this sound that is not loading? Any help is appreciated. Thank:)

+3


source to share


2 answers


I am fixing this myself, I was using android and the stream url is also the download url. stream url also loads the download url, but this will not affect the download count. you can try like this

String file_url = "https://api.soundcloud.com/tracks/93216523/stream?client_id=4346c8125f4f5c40ad666bacd8e96498"; 

      

pass this url to asyntack and manage it there, you can pass it this way



new DownloadFileFromURL().execute(file_url);

      

here is the DownloadFileFromUR class using asyntask

class DownloadFileFromURL extends AsyncTask<String, Integer, String> {


        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... f_url) {
            URL u = null;
            InputStream is = null;  

                 try {
                          u = new URL(f_url[0]);
                          is = u.openStream(); 
                          HttpURLConnection huc = (HttpURLConnection)u.openConnection();//to know the size of video
                          int size = huc.getContentLength();                 

                      if(huc != null){
                          String fileName = "FILE2.mp3";
                          String storagePath = Environment.getExternalStorageDirectory().toString();
                          File f = new File(storagePath,fileName);

                          FileOutputStream fos = new FileOutputStream(f);
                          byte[] buffer = new byte[1024];
                          long total = 0;
                          int len1 = 0;
                          if(is != null){
                             while ((len1 = is.read(buffer)) > 0) {
                                 total+=len1;
                                 publishProgress((int)((total*100)/size));
                                   fos.write(buffer,0, len1);   
                             }
                          }
                          if(fos != null){
                             fos.close();
                          }
                      }                     
                 }catch (MalformedURLException mue) {
                        mue.printStackTrace();
                 } catch (IOException ioe) {
                        ioe.printStackTrace();
                } finally {
                           try {                
                             if(is != null){
                               is.close();
                             }
                           }catch (IOException ioe) {
                                 // just going to ignore this one
                           }
                }
                 return "";
        }


        @Override
        protected void onPostExecute(String file_url) {


        }

    }

      

+4


source


String file_url = "https://api.soundcloud.com/tracks/93216523/stream?client_id=4346c8125f4f5c40ad666bacd8e96498"; 

      

DownLoad class:



  private class DownloadFile extends AsyncTask<String, Integer, String> {
    @Override
    protected String doInBackground(String... params) {
        int count;
        try {

            URL url = new URL(file_url);
            URLConnection conexion = url.openConnection();
            conexion.connect();
            // this will be useful so that you can show a tipical 0-100% progress bar
            int lenghtOfFile = conexion.getContentLength();

            // download the file
            InputStream input = new BufferedInputStream(url.openStream());
            OutputStream output = new FileOutputStream(getOutputMediaFile());
            byte data[] = new byte[1024];
            long total = 0;
            while ((count = input.read(data)) != -1) {
                total += count;           
                // publishing the progress....
                publishProgress((int) (total * 100 / lenghtOfFile));

                output.write(data, 0, count);
            }
            output.flush();
            output.close();
            input.close();
        } catch (Exception e) {
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(Integer... values) {

        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
    }
}

      

0


source







All Articles