5

几天后“Wirtualna Polska SA”关闭了“mp3.wp.pl”服务,所以我决定从那里下载一些音乐并保存在我的硬盘上。它大约有 150k(我不需要所有 btw.)文件,所以我自己这样做会浪费时间。我创建了一个程序,它可以下载特定类型的所有 id 并将其保存到 *.txt 文件夹中。要从网站下载音乐,我需要使用他们网站 download_utId('id') 中的 javascript 方法,其中 id 是 *.txt 文件中的一个整数

  1. 我可以在java中运行这个方法(download_utId)吗?
  2. 您将如何优化我的代码?
  3. 还有其他建议吗?

4.(编辑。)如何用自己的名字保存文件?当您要下载“http://mp3.wp.pl/i/sciagnij?id=666&jakosc=hifi&streaming=0”时,该文件的默认名称为“Dub_Brother-Dance_Mission”

import java.io.*; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; public class Test { public static int numberOfPages = 1; public ArrayList<String> downloadPage(String page, String findAString, String endString){ ArrayList<String> listOfIDs = new ArrayList<String>(); URL url; InputStream is = null; DataInputStream dis; String line; try { url = new URL(page); is = url.openStream(); // throws an IOException dis = new DataInputStream(new BufferedInputStream(is)); while ((line = dis.readLine()) != null) { if(line.contains("Liczba znalezionych utworów:")){ numberOfPages = numberOfPages(new Integer(line.substring(line.indexOf("<b>") + 3, line.lastIndexOf("</b>. Po")))); } if(line.contains(findAString)){ listOfIDs.add((line.substring(line.indexOf(findAString)+15, line.lastIndexOf(endString)))); } } } catch (MalformedURLException mue) { mue.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } finally { try { is.close(); } catch (IOException ioe) { // nothing to see here } } return listOfIDs; } public int numberOfPages(int numberOfSongs){ return numberOfSongs - numberOfSongs/10*10 >= 5 ? numberOfSongs/10+1 : numberOfSongs/10; } public void addToFile(){ ArrayList<String> hehe = new ArrayList<String>(); for(int i = 0; i < numberOfPages; i++){ String link = "http://mp3.wp.pl/p/strefa/utwory/E9,nazwa," + i + "0,+0,+0,+0.html"; hehe.addAll(downloadPage(link, "download_utId('", "'")); System.out.print(link); } FileWriter writer = null; try { writer = new FileWriter("c:/output.txt"); for(String str: hehe) { writer.write(str + " "); } writer.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args){ Test t = new Test(); t.addToFile(); } }
4

1 回答 1

1

有一个很好的工具Rhino Utilities不确定它是否可以安装,但它很容易使用。

于 2012-12-19T14:42:44.183 回答