рдЕрдкрдиреЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Last.FM API рдФрд░ VK.COM API рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ Vkontakte рдФрд░ Last.fm рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рджреЛрдиреЛрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рдмреАрдЪ рдПрдХреАрдХрд░рдг рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВрдЧреЗред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо last.fm рд╕реЗ рдкрд╕рдВрджреАрджрд╛ рдкрдЯрд░рд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рд╡реАрдХреЗ рдореЗрдВ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╕рд╛рдордЧреНрд░реА рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдПрдЪрдбреАрдбреА рдХреЛ рдмрдЪрд╛рдПрдВрдЧреЗред
рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддрдХрдиреАрдХреА рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬрд╛рд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред

рдЕрдЧрд░ рдкрд╛рдардХ рдХреЛ рдЗрд╕рдореЗрдВ рд╕реЗ рдЬреЛ рднреА рдЖрдпрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдХреИрдЯ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред



рддреНрдпрд╛рдЧ


рд╣рдорд╛рд░реЗ рднрдпрд╛рдирдХ рд╕рдордп рдореЗрдВ, рдЬрдм рдирд┐рдЧрдо рдПрдХ -рджреВрд╕рд░реЗ рдкрд░ рдХреЛрдб рдХреА рдПрдХ рдЕрд░рдм рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдХрджрдорд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЬрдм рдЖрдк рд╕рдорд╕реНрдпрд╛ "рдПрдХ-рджреЛ" рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╢реИрдХреНрд╖рд┐рдХ рдЖрд╡реЗрдЧ рд╣реИрдВ рдФрд░ рдпрд╣ рдХрд┐рд╕реА рднреА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХрд╛ рдкреАрдЫрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдкрд╣рдЪрд╛рди


рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдЦреАрдВрдЪреВрдВрдЧрд╛ред рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред
  1. Last.fm рдкрд░ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЯреНрд░реИрдХ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
  2. Vk.com рд╕рд░реНрд╡рд░ рдкрд░ рдЯреНрд░реИрдХ рдЦреЛрдЬреЗрдВ
  3. рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдЯреНрд░реИрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ


рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рджреЛрдиреЛрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣реЛрдмреЗ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЗрдЦ рдереЗред рдореИрдВ рд╕рдм рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛, рдЗрд╕рд▓рд┐рдП рддреБрд░рдВрдд рд▓рд┐рдВрдХ:
Last.fm API рдХреА
Vk.com рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА
рдЕрдЧрд▓рд╛, рд╣рдо рдзреНрдпрд╛рди рд╕реЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ ( last.fm , vk.com ) рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдо рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рджрд░рдЕрд╕рд▓, рд╣рдореЗрдВ audio.search рдФрд░ user.getLovedTracks рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред

рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрд░реЛрдз


рдЖрд╡реЗрджрди рдкрд╣рд▓реЗ рд╣реА рдирд┐рд░реНрдорд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред
Last.fm рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓рд╛рдЗрди рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп HTML рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ:
http: // ws.audioscrobbler.com/2.0/?method=user.getlovedtracks&user= USER & api_key = API_KEY
рдпрджрд┐ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк xml'ku рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЯреНрд░реИрдХ рдХреЗ рдирд╛рдо рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Vk.com рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ, рдПрдХрдорд╛рддреНрд░ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХрд┐ access_token рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд┐рдирд╛, рд╣рдо рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдкрд╛рдПрдВрдЧреЗред
рд╣рдо рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ:
http: // api.vk.com/oauth/authorize?client_id= ID & redirect_uri = http: //api.vk.com/blank.html&scope= рдСрдбрд┐рдпреЛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди = рдкреГрд╖реНрда рдФрд░ response_type = token
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд╣рдореЗрдВ рдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдВрдХ рдкрд░ рднреЗрдЬреЗрдЧрд╛:
http: // api.vk.com/blank.html#access_token= XYZ рдФрд░ expires_in = 86400 рдФрд░ user_id = ID
XYZ рд╡рд╣ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред
рдЕрдм рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдЕрдиреБрд░реЛрдз:
https: // api.vk.com/method/audio.search.xml?q=AC/DC%20-%20Highway%20to%20Hell&access_token= XYZ рдХреЛ рдПрдХ xml рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдБ рдЖрдк рдмрд╛рдЗрдирд░реА рдореНрдпреВрдЬрд╝рд┐рдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рднреМрддрд┐рдХ рдкрддрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЧрд░ рд╕рдм рдХреБрдЫ "рджреВрд░" рд╣реЛ рдЧрдпрд╛, рддреЛ рд╣рдо рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рд╣рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.рдкреНрд░реЙрдкреАрдЯреАрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓реЗрдЧреА, рдЬрд╣рд╛рдВ рд╡рд░реНрддрдорд╛рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рдПрдВрдЧреАред
last_fm_api=
last_fm_user=
last_fm_ws_address=http://ws.audioscrobbler.com/2.0/
vk_com_access_token=
vk_com_ws_address=https://api.vk.com/method/

рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрдпреВрдЖрдИ рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдбреЗрдЯрд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдбрд┐рдмреНрдмреЗ рдХреЗ POJO рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 public class LovedTrackBean { public LovedTrackBean(String trackName, String trackArtist) { this.trackName = trackName; this.trackArtist = trackArtist; } //GETTERS & SETTERS public String toString() { return trackArtist + " - " + trackName; } private String trackName = null; private String trackArtist = null; private String trackURL = null; } 

рдЕрдм рд╣рдореЗрдВ last.fm API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЯреНрд░реИрдХ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
 public class TrackLover { public TrackLover() { StringBuffer buff = new StringBuffer(); buff.append(PropertyLoader.getProperties().get(PropertyLoader.LAST_FM_WS_ADDRESS)); buff.append("?method="); buff.append(LAST_FM_API_METHOD); buff.append("&user="); buff.append(PropertyLoader.getProperties().get(PropertyLoader.LAST_FM_USER)); buff.append("&api_key="); buff.append(PropertyLoader.getProperties().get(PropertyLoader.LAST_FM_API)); connectToUrl = buff.toString(); } public List<LovedTrackBean> getLovedTracks() throws IOException, ParserConfigurationException, SAXException { if(lovedTracks == null) { URL url = new URL(connectToUrl); URLConnection conn = url.openConnection(); DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); Document doc = docBuilder.parse(conn.getInputStream()); doc.getDocumentElement().normalize(); NodeList listOfLovedTracks = doc.getElementsByTagName("track"); int tracksTotal = listOfLovedTracks.getLength(); lovedTracks = new ArrayList<LovedTrackBean>(tracksTotal); //... //  //... System.out.println("######### AFTER LAST.FM RESPONSE #########"); for(LovedTrackBean track: lovedTracks) { System.out.println(track.toString()); } return lovedTracks; } else { lovedTracks = new ArrayList<LovedTrackBean>(1); lovedTracks.add(new LovedTrackBean("Wish you were here", "Pink Floyd")); return lovedTracks; } } private String connectToUrl = null; private List<LovedTrackBean> lovedTracks = null; public static final String LAST_FM_API_METHOD = "user.getlovedtracks"; } 

рдпрд╣ рдХреЛрдб рд╣рдореЗрдВ рдЖрдкрдХреЗ рдкрд╕рдВрджреАрджрд╛ рдЯреНрд░реИрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдЧрд▓рд╛ рдкрдбрд╝рд╛рд╡ vk.com рд╣реИред
рдЖрдЗрдП "рд▓реЗрдЦрдХ - рд░рдЪрдирд╛" рдЬреЛрдбрд╝реЗ рдореЗрдВ рдПрдХ рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдПрдХ рд▓реЗ рд▓реЛред
 public class TrackURLFinder { public TrackURLFinder(LovedTrackBean lovedTrack) { this.lovedTrack = lovedTrack; StringBuffer buff = new StringBuffer(); buff.append(PropertyLoader.getProperties().get(PropertyLoader.VK_COM_WS_ADDRESS)); buff.append(VK_COM_API_METHOD); buff.append("?q="); buff.append(lovedTrack.toString()); buff.append("&"); buff.append("access_token="); buff.append(PropertyLoader.getProperties().get(PropertyLoader.VK_COM_ACCESS_TOKEN)); connectToUrl = buff.toString(); connectToUrl = connectToUrl.replaceAll(" ", "%20"); System.out.println(connectToUrl); } public void addUrlToLovedTrack() throws SAXException, IOException, ParserConfigurationException { if(lovedTrack != null) { URL url = new URL(connectToUrl); URLConnection conn = url.openConnection(); DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); Document doc = docBuilder.parse(conn.getInputStream()); doc.getDocumentElement().normalize(); NodeList audioList = doc.getElementsByTagName("audio"); Node currentNode = audioList.item(0); Element currentElement = (Element) currentNode; NodeList urlList = currentElement.getElementsByTagName("url"); Element urlElement = (Element) urlList.item(0); NodeList urlFormattedList = urlElement.getChildNodes(); String urlAddressOfTheMP3File = urlFormattedList.item(0).getNodeValue().trim(); lovedTrack.setTrackURL(urlAddressOfTheMP3File); System.out.println(urlAddressOfTheMP3File); } } private String connectToUrl = null; private LovedTrackBean lovedTrack = null; public static final String VK_COM_API_METHOD = "audio.search.xml"; } 

рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдорд┐рд▓рддреА рд╣реИ:
 public class MP3MusicContentDownloader { public MP3MusicContentDownloader(String urlAddress, String fileName) throws MalformedURLException { this.fileName = fileName; url = new URL(urlAddress); } public void download() throws IOException { conn = url.openConnection(); System.out.println("Started downloading of " + fileName); String contentType = conn.getContentType(); int contentLength = conn.getContentLength(); if (contentType.startsWith("text/") || contentLength == -1) { throw new IOException("This is not a binary file."); } File folder = new File(DEFAULT_DIRECTORY_NAME); if (!folder.exists() || !folder.isDirectory()) { folder.mkdir(); } File binaryFile = new File(DEFAULT_DIRECTORY_NAME + File.separator + fileName); if (!binaryFile.exists()) { BufferedInputStream in = new BufferedInputStream(conn.getInputStream()); byte[] data = new byte[contentLength]; int bytesRead = 0; int offset = 0; while (offset < contentLength) { bytesRead = in.read(data, offset, data.length - offset); if (bytesRead == -1) break; offset += bytesRead; } in.close(); if (offset != contentLength) { throw new IOException("Only read " + offset + " bytes; Expected " + contentLength + " bytes"); } FileOutputStream out = new FileOutputStream(binaryFile); out.write(data); out.flush(); out.close(); } else { return; } } private String fileName = null; private URL url = null; private URLConnection conn = null; private static final String DEFAULT_DIRECTORY_NAME = "music"; } 

рд╡рд╣ рд╕рдм рд╣реИред рд▓реЙрдиреНрдЪ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ, рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред

Todos


рдЪреВрдВрдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓рд╛ рд╣реИ, рдЬреЛ рдХрд┐, рд╕реНрд╡-рдЕрдзреНрдпрдпрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВ рд▓рдЧрднрдЧ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрдИ рдмрдЧ / рдХрдорд┐рдпрд╛рдВ рд╣реИрдВред рдлрд┐рд░ рднреА, рдореЗрд░реЗ рдЯреНрд░реИрдХ рдкрд░ рдЙрджрд╛рд╣рд░рдг рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рдЪрдпрдирд┐рдд рдЧреАрддреЛрдВ (рдЕрдм рдкрд╣рд▓реЗ 50 рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ) рдХреА рдПрдХ рдкреВрд░реНрдг рд╕реНрдХреИрди, рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, access_tokenov (рдЕрдЪрд╛рдирдХ, рд╕рдорд╛рдкреНрдд) рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ред рд╣рд╛рдВ, рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬреЗрдВред рд▓реЗрдХрд┐рди, рдЕрдЧрд░ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдЦ рдХрд╛ рдореБрджреНрджрд╛ рдпрд╣ рдирд╣реАрдВ рдерд╛ рдХрд┐ :)

рдЖрдк рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкрд╛рдиреЗ рдХрд╛ рдзреИрд░реНрдп рд╣реИ!

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


All Articles