Vk.com рдкрд░ рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣рд╛рд▓рд┐рдпрд╛ рдкреНрд░рдЪрд╛рд░ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдЪрд▓рд╛рдиреЗ рдФрд░ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдЕрдкрдиреЗ рдкреВрд░реЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рд┐рдЦреАред рдиреАрдЪреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрд╕рдХрд╛ рдХреЛрдб рд╣реИред рдпрд╣ рд▓реЗрдЦ рдЙрди рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ рдФрд░ рдЗрд╕ рдкрд░ рд▓рд┐рдЦреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреЛрдЯ: рдпрджрд┐ рдЖрдкрдХреА рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдкрд╣рд▓реЗ рд╣реА рд╣рдЯрд╛ рджреА рдЧрдИ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИредрдЯреНрд░реЗрдирд┐рдВрдЧ
рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреА рд╕реВрдЪреА рд╕рд╛рдЗрдЯ рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрддреЗ рдкрд░ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ (рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП vk.com рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд
рдорд╛рдирдХ рд╡рд┐рдзрд┐ рд╣реИ):
oauth.vk.com/authorize?client_id=3711445&scope=audio&
redirect_uri=https://oauth.vk.com/blank.html&display=page&v=5.0&response_type=token
рдФрд░ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рдкрд░, рдЕрдкрдиреА рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХреНрд╕реЗрд╕ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ, рдЙрд╕рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдлреЙрд░реНрдо рдХреЗ рдкрддреЗ рдкрд░ рдкреБрдирдГ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
oauth.vk.com/blank.html#access_token=abc&expires_in=86400&user_id=123456
рдпрд╣рд╛рдВ рд╣рдореЗрдВ access_token рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЗрд╕реЗ рдпрд╛рдж рд░рдЦреЗрдВред рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ user_id рдЖрдкрдХреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рднреА рд╣реЛрдЧреАред
рдЗрди рдЪрд░рдгреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдХреЛ рдЖрдкрдХреА рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреА рд╕реВрдЪреА рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдкреНрд░рд╛рдкреНрдд рдЯреЛрдХрди рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЬреНрдЮрд╛рдд рд╣реИ - рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╛ рддреЛ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ, рдмреЗрд╣рддрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЖрдк vk.com рдкрд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ app_id рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЯреЛрдХрди рд╣реИ, рд╣рдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рд╣рдореЗрдВ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ, рд╣рдо рдЙрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЧреАрдд рдХрд╛ рдирд╛рдо, рдХрд▓рд╛рдХрд╛рд░ рдХрд╛ рдирд╛рдо рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдордкреА 3 рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрддрд╛) рдФрд░ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЗрд╕реЗ рдПрдХ рд╕рд╛рд░реНрдердХ рдирд╛рдо рджреЗрдВред
рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдПрдХ POST рдЕрдиреБрд░реЛрдз рднреЗрдЬрдХрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
(рдПрдкреАрдЖрдИ рд╡рд┐рдзрд┐
Audio.get рджреЗрдЦреЗрдВ)
URIBuilder builder = new URIBuilder(); builder.setScheme("https").setHost("api.vk.com").setPath("/method/audio.get") .setParameter("oid", USER_ID)
рд╣рдо рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ:
(рд╣рдо HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
Apache HttpClient рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)
HttpClient httpclient = new DefaultHttpClient(); HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getEntity(); if (entity != null) { InputStream instream = null; try { instream = entity.getContent(); String responseAsString = IOUtils.toString(instream); parseAndDownload(responseAsString); } finally { if (instream != null) instream.close(); } }
JSON рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдлрд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рд╕рд░рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ -
Apache Commons IO :
(рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреЛрдЯ - рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╡рд╣ рдлрд╝реЛрд▓реНрдбрд░ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)
private static void parseAndDownload(String resp) throws IOException, ParseException { JSONParser parser = new JSONParser(); JSONObject jsonResponse = (JSONObject) parser.parse(resp); JSONArray mp3list = (JSONArray) jsonResponse.get("response"); for (int i=1; i<mp3list.size(); i++) { JSONObject mp3 = (JSONObject) mp3list.get(i);
рдЧрд╛рдиреЗ рдХреЗ рдирд╛рдо рдФрд░ рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреЗ рдирд╛рдо рдореЗрдВ рдРрд╕реЗ рдЕрдХреНрд╖рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рд╖рд┐рджреНрдз рд╣реИрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рддреНрд░реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ:
(
Apache Commons Lang рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреБрдХреНрдд)
private static String fixWndowsFileName(String pathname) { String[] forbiddenSymbols = new String[] {"<", ">", ":", "\"", "/", "\\", "|", "?", "*"};
рд╣рдо рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЪрд▓рд╛рддреЗ рд╣реИрдВ - рдЖрдирдиреНрджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдСрдбрд┐рдпреЛ рдХрд╛ рдкреВрд░рд╛ рдСрдирд▓рд╛рдЗрди рд╕рдВрдЧреНрд░рд╣ рдбрд┐рд╕реНрдХ рдкрд░ рдХреИрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░
- рдХреЛрдб рдмрд▓реНрдХрд┐ рдЧрдВрджрд╛ рд╣реИ рдФрд░ рдФрджреНрдпреЛрдЧрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИ (рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЧрд╛рдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрд╣реБрдд рдмрдбрд╝реЗ рд╣реИрдВ, рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ), рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ
- рдЬрд╛рд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдХреЛрдб рдХреЛ рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛
- рдСрдбрд┐рдпреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрди рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рд╣реИ (рдЙрдирдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрдЯрд╛ рдХреЛ рдЙрдирдХреЗ рдкрд╛рд╕ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ)
- рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдХрдИ рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдХреЗрд╡рд▓ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдбрд┐рд╕реНрдХ рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ
рдкреВрд░реНрдг рдХрд╛рд░реНрдп рд╕реНрд░реЛрдд рдХреЛрдб
рдХреЛрдбрдирд┐рд░реНрднрд░рддрд╛ рд╕реВрдЪреА
- json-рд╕рд░рд▓-1.1.1.jar
- рдХреЙрдордиреНрд╕-lang3-3.1.jar
- рдХреЙрдордиреНрд╕-рдХрдм-2.4.jar
- httpcompents-client-4.2.5-bin.zip (рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд╕рднреА рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓реЗрдВ)