Vk.com рд╕реЗ рд╕рдВрдЧреАрдд рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

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) //    ,     .setParameter("need_user", "0") .setParameter("count", "2000") //    .setParameter("offset", "0") // ,       .setParameter("access_token", ACCESS_TOKEN); //  ,   URI uri = builder.build(); 

рд╣рдо рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ:
(рд╣рдо 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); //   ! String pathname = "e:/vkmp3/" + fixWndowsFileName(mp3.get("artist") + " - " + mp3.get("title")); try { File destination = new File(pathname + ".mp3"); if (!destination.exists()) { FileUtils.copyURLToFile(new URL((String) mp3.get("url")), destination); } } catch (FileNotFoundException e) { System.out.print("ERROR "+pathname); } } } 

рдЧрд╛рдиреЗ рдХреЗ рдирд╛рдо рдФрд░ рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреЗ рдирд╛рдо рдореЗрдВ рдРрд╕реЗ рдЕрдХреНрд╖рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рд╖рд┐рджреНрдз рд╣реИрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рддреНрд░реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ:
( Apache Commons Lang рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреБрдХреНрдд)

  private static String fixWndowsFileName(String pathname) { String[] forbiddenSymbols = new String[] {"<", ">", ":", "\"", "/", "\\", "|", "?", "*"}; //  windows String result = pathname; for (String forbiddenSymbol: forbiddenSymbols) { result = StringUtils.replace(result, forbiddenSymbol, ""); } //      '& amp',      return StringEscapeUtils.unescapeXml(result); } 


рд╣рдо рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЪрд▓рд╛рддреЗ рд╣реИрдВ - рдЖрдирдиреНрджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдСрдбрд┐рдпреЛ рдХрд╛ рдкреВрд░рд╛ рдСрдирд▓рд╛рдЗрди рд╕рдВрдЧреНрд░рд╣ рдбрд┐рд╕реНрдХ рдкрд░ рдХреИрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░


рдкреВрд░реНрдг рдХрд╛рд░реНрдп рд╕реНрд░реЛрдд рдХреЛрдб

рдХреЛрдб

рдирд┐рд░реНрднрд░рддрд╛ рд╕реВрдЪреА

Source: https://habr.com/ru/post/In183546/


All Articles