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/
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; }
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"; }
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"; }
Source: https://habr.com/ru/post/143657/
All Articles