Цитата(Vampire2012 @ 25.2.2012, 23:50) | Как прочитать список аудиозаписей из контактов?
Когда ввел логин и пароль контактов, зашел на страницу и получило возможность просмотра вкладок других пользователь - например список аудиозаписей какого-нибудь человека. "http://vk.com/audio" "http://vk.com/audio?id=87654321"
Как програмно на java это сделать? |
Я решал подобную задачу с фотографиями . тебе надо прочитать основное по Апи тут http://vk.com/developers.php?oid=-1&p=audio.getя выкачивал все фотографии (аналогично музыку ) групп или со страницы пользователя Для Десктоп клиента смотри мой код тут http://forum.vingrad.ru/forum/topic-315777...ml#st_15_view_0Использовал сторонние либы : HttpClient и org.scribe тебе так же надо будет создать добавить свое приложение , и права доступа к audio в итоге через API контакта ты получаешь json объект типа Код | [{"aid":"id","owner_id":"oid","artist":"Papa Roach","title":"Broken Home","duration":"219","url":"http:\/\/cs4707.vkontakte.ru\/u14410938\/audio\/2846f4e085eb.mp3","lyrics_id":"iidd","album":"aiidd"},
{"aid":"id","owner_id":"oid","artist":"Papa Roach","title":"Blood Brothers","duration":"213","url":"http:\/\/cs4876.vkontakte.ru\/u33406545\/audio\/3f0fd127003e.mp3","album":"aiidd"}
|
получаешь прямые ссылки url и скачиваешь файлы к себе В коде замени Код | String PROTECTED_RESOURCE_URL = "https://api.vkontakte.ru/method/wall.post"; //wall.post //notes.add
|
на Код | String PROTECTED_RESOURCE_URL = "https://api.vkontakte.ru/method/audio.get"
|
и Код | request.addBodyParameter("owner_id", "-clubID"); request.addBodyParameter("from_group", "1");
|
на твои параметры - пользователя или группы , альбома который тебе нужен Код |
request.addBodyParameter("uid", uid); // request.addBodyParameter("gid", gid); request.addBodyParameter("album_id", album_id); request.addBodyParameter("count", count); request.addBodyParameter("offset", count);
|
Как парсить json мои классы : Код | /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package vkaudio;
import java.util.logging.Level; import java.util.logging.Logger; import org.json.JSONException; import org.json.JSONObject;
/** * * @author User */ public class Item { public String aid ; public String owner_id ; public String artist ; public String title ; public String url ; public String album ;
public String getAid() { return aid; }
public void setAid(String aid) { this.aid = aid; }
public String getAlbum() { return album; }
public void setAlbum(String album) { this.album = album; }
public String getArtist() { return artist; }
public void setArtist(String artist) { this.artist = artist; }
public String getOwner_id() { return owner_id; }
public void setOwner_id(String owner_id) { this.owner_id = owner_id; }
public String getTitle() { return title; }
public void setTitle(String title) { this.title = title; }
public String getUrl() { return url; }
public void setUrl(String url) { this.url = url; }
public Item(String aid, String owner_id, String artist, String title, String url, String album) { this.aid = aid; this.owner_id = owner_id; this.artist = artist; this.title = title; this.url = url; this.album = album; }
public Item(JSONObject audio) { try { aid = (String) audio.get("aid"); owner_id = (String) audio.get("owner_id"); artist = (String) audio.get("artist"); title = (String) audio.get("title"); url = (String) audio.get("url"); album = (String) audio.get("album"); } catch (JSONException ex) { String error = ex.toString(); if (error.contains("album")) { album = ""; }
if (error.contains("url")) { url = ""; }
if (error.contains("title")) { title = ""; } if (error.contains("artist")) { artist = ""; } if (error.contains("owner_id")) { owner_id = ""; } }
} public void printString() { System.out.println("aid : " + aid + " ; artist : " +artist + " ; title : " + title + " ; album : " + album); System.out.println("url : " + url ); } }
|
функция для скачивания файла Код | public static void saveFile(String url) throws Exception{ URL u = new URL(url); String filename = u.getFile(); System.out.println("**** filename " +filename + "****"); URLConnection uc = u.openConnection(); String contentType = uc.getContentType(); int contentLength = uc.getContentLength(); if ( contentLength == -1) { throw new IOException("This is not a binary file."); } InputStream raw = uc.getInputStream(); InputStream in = new BufferedInputStream(raw); byte[] data = new byte[contentLength]; int bytesRead = 0; int offset = 0; double max = 100/contentLength; while (offset < contentLength) { bytesRead = in.read(data, offset, data.length - offset); if (bytesRead == -1) break; offset += bytesRead; int i = offset*100/contentLength; if (i % 10 == 0) System.out.println(i + "%"); } in.close();
if (offset != contentLength) { throw new IOException("Only read " + offset + " bytes; Expected " + contentLength + " bytes"); } filename = u.getFile().substring(filename.lastIndexOf('/') + 1); FileOutputStream out = new FileOutputStream(path+filename); out.write(data); out.flush(); out.close(); System.out.println("**** done ****"); }
|
функция для парсинга json и сохранения sb.toString() - тут твой ответ в формате json Код | {"response":[{"aid":"id","owner_id":"oid","artist":"Papa Roach","title":"Broken Home","duration":"219","url":"http:\/\/cs4707.vkontakte.ru\/u14410938\/audio\/2846f4e085eb.mp3","lyrics_id":"iidd","album":"aiidd"},
{"aid":"id","owner_id":"oid","artist":"Papa Roach","title":"Blood Brothers","duration":"213","url":"http:\/\/cs4876.vkontakte.ru\/u33406545\/audio\/3f0fd127003e.mp3","album":"aiidd"}]}
|
Код |
JSONArray response = new JSONArray(sb.toString()); int size = response.length(); for (int i = 7; i < 20; i++) { System.out.print("[" + i +"]"); JSONObject audio = response.getJSONObject(i); Item item = new Item(audio); item.printString(); try{ saveFile(item.url); } catch(Exception ex){ System.out.println("error " + ex.getMessage() ); } }
|
|