Convert youtube to mp3 using website

I am trying to make a program that can download youtube videos as mp3 files. I used this youtube-mp3.org website to achieve this. So, I downloaded the contents of www.youtube-mp3.org/?c#v=sTbd2e2EyTk , where sTbd2e2EyTk is the identifier of the video, now I need to get a link to the mp3 file (in this case http://www.youtube-mp3.org / get? video_id ..... ), but there is no link in the downloaded content. I noticed that chrome developer tools (ctrl + shift + j, tab Elements) show that the link and view source option (ctrl + u) in chrome gives me the same result that I get when loading a page using java. How can I get this link? I tried to get the data using JSoap, but the data that I need is not loaded onto the page right away, so I can’t get it.

The following code is for loading the contents of a web page ...

URL tU = new URL("http://www.youtube-mp3.org/?c#v=sTbd2e2EyTk"); HttpURLConnection conn = (HttpURLConnection) tU.openConnection(); InputStream ins = conn.getInputStream(); BufferedReader rd = new BufferedReader(new InputStreamReader(ins)); String line; StringBuffer content = new StringBuffer(); while ((line = rd.readLine()) != null) { content.append(line); } System.out.println(content.toString()); 

I used this method to get the file, but I need a link.

  private static void downloadStreamData(String url, String fileName) throws Exception { URL tU = new URL(url); HttpURLConnection conn = (HttpURLConnection) tU.openConnection(); String type = conn.getContentType(); InputStream ins = conn.getInputStream(); FileOutputStream fout = new FileOutputStream(new File(fileName)); byte[] outputByte = new byte[4096]; int bytesRead; int length = conn.getContentLength(); int read = 0; while ((bytesRead = ins.read(outputByte, 0, 4096)) != -1) { read += bytesRead; System.out.println(read + " out of " + length); fout.write(outputByte, 0, bytesRead); } fout.flush(); fout.close(); } 
+5
source share
2 answers

Found

 package main.java.com.thezujev.theyoutubepld.logic; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpVersion; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.HttpParams; import org.apache.http.params.HttpProtocolParams; import org.apache.http.params.SyncBasicHttpParams; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; /** * @author azujev * */ public class YouTubeMP3 { public static String[] getLink(String url) throws ClientProtocolException, IOException { boolean passCode = false; String h = ""; String title = ""; String result = ""; String[] returnVal = {"",""}; Map<String, String> jsonTable; DefaultHttpClient httpClient = new DefaultHttpClient(); HttpGet httpInitialGet = new HttpGet("http://www.youtube-mp3.org/api/pushItem/?item=http%3A//www.youtube.com/watch%3Fv%3D" + url + "&xy=_"); httpInitialGet.addHeader("Accept-Location", "*"); httpInitialGet.addHeader("Referrer", "http://www.youtube-mp3.org"); HttpParams params = new SyncBasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setUserAgent(params, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"); httpInitialGet.setParams(params); HttpResponse firstResponse = httpClient.execute(httpInitialGet); try { if (firstResponse.getStatusLine().toString().contains("200")) { passCode = true; } } finally { httpInitialGet.releaseConnection(); } if (passCode) { while (true) { HttpGet httpStatusGet = new HttpGet("http://www.youtube-mp3.org/api/itemInfo/?video_id=" + url + "&adloc="); httpStatusGet.addHeader("Accept-Location", "*"); httpStatusGet.addHeader("Referrer", "http://www.youtube-mp3.org"); httpStatusGet.setParams(params); HttpResponse secondResponse = httpClient.execute(httpStatusGet); HttpEntity secondEntity = secondResponse.getEntity(); InputStream is = secondEntity.getContent(); try { BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result = sb.toString(); } catch (Exception e) { e.printStackTrace(); } httpStatusGet.releaseConnection(); result = result.replaceAll("\\}.*", "}"); result = result.replaceAll(".*?\\{", "{"); try { JSONObject jsonData = new JSONObject(result); JSONArray jsonArray = jsonData.names(); JSONArray valArray = jsonData.toJSONArray(jsonArray); jsonTable = new HashMap<String, String>(jsonArray.length()); for (int i = 0; i < jsonArray.length(); i++) { jsonTable.put(jsonArray.get(i).toString(), valArray.get(i).toString()); } if (jsonTable.get("status").equals("serving")) { h = jsonTable.get("h"); title = jsonTable.get("title"); break; } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } returnVal[0] = "http://www.youtube-mp3.org/get?video_id=" + url + "&h=" + h; returnVal[1] = title; return returnVal; } else { //TODO: Error, vid not downloadable } return null; } } 
0
source

I did this with youtube-mp3.org. You can see my code here: YoutubeMp3

All you have to do is the following:

  DownloadManager d = new DownloadManager(); d.download(YoutubeMp3.builder("http://www.youtube.com/watch?v=ebcrEqm5FFg"), "C:\\Users\\loikkk\\Music\\testDownload"); d.setDownloadListener(new DownloadListener() { @Override public void onDownloadStart(long totalFileSize) { // TODO Auto-generated method stub } @Override public void onDownloadProcess(long currentFileSize, long totalFileSize) { // TODO Auto-generated method stub } @Override public void onDownloadFinished() { // TODO Auto-generated method stub } @Override public void onDownloadError(int arg0) { // TODO Auto-generated method stub } }); 

Hope this helps,

@hanry and Josh M:

I deleted my Github account. However, if you use Google Chrome, you can use the developer console in a network perspective. Thus, you can change the configured download link as I did.

  • Submit my Youtube URL to Youtube-mp-3.org
  • View response from webservice
  • Create a donwload link following the pattern they use.

Example:

Youtube url: http://www.youtube.com/watch?v=KMU0tzLwhbE ;

Web service request in content body: KMU0tzLwhbE

Reply from webservice: info = {"title": "Developers", "image": " http://i.ytimg.com/vi/KMU0tzLwhbE/default.jpg ", "length": "3", "status" : "serve", "progress_speed": "," progress ":", "ads": "," pf ":" http://ping.aclst.com/ping.php/10754233/KMU0tzLwhbE?h=401301 " , "h": "e8e446dbd937a0d8f636fdc8d8bb9874"};

Download link: http://www.youtube-mp3.org/get?ab=128&video_id=KMU0tzLwhbE&h=e8e446dbd937a0d8f636fdc8d8bb9874&r=1388680822878.1534658195

Hope this helps,

-1
source

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


All Articles