Java Resource File sanitizeResource(String inputResource)

Here you can find the source of sanitizeResource(String inputResource)

Description

Returns a more practical audio resource name.

License

Open Source License

Parameter

Parameter Description
inputResource The input resource, a file, URL, PLS-file or M3U-file.

Return

A more practical audio resource name.

Declaration

public static String sanitizeResource(String inputResource) 

Method Source Code


//package com.java2s;
//License from project: Open Source License 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class Main {
    /**/*w  w  w  .  jav  a2  s.co  m*/
     * Returns a more practical audio resource name. E.g. if
     * http://stream.com/stream.pls is given, the PLS-file is parsed and the
     * first audio file is returned. It supports PLS, M3U, AXS and XSPF"
     * 
     * @param inputResource
     *            The input resource, a file, URL, PLS-file or M3U-file.
     * 
     * @return A more practical audio resource name.
     */
    public static String sanitizeResource(String inputResource) {
        if (inputResource.toLowerCase().endsWith("pls")) {
            inputResource = parsePLS(inputResource);
        } else if (inputResource.toLowerCase().endsWith("m3u")) {
            inputResource = parseM3U(inputResource);
        } else if (inputResource.toLowerCase().endsWith("asx")) {
            inputResource = parseASX(inputResource);
        } else if (inputResource.toLowerCase().endsWith("xspf")) {
            inputResource = parseXSPF(inputResource);
        }
        return inputResource;
    }

    /**
     * Parses the PLS file and returns the first file name.
     * 
     * @param inputUrl
     *            The input PLS file.
     * @return The first file name in the PLS playlist.
     */
    public static String parsePLS(String inputUrl) {
        String inputFile = "";
        try {
            String plsContents = readTextFromUrl(new URL(inputUrl));
            for (String line : plsContents.split("\n")) {
                if (line.startsWith("File1=")) {
                    inputFile = line.replace("File1=", "").trim();
                    break;
                }
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        return inputFile;
    }

    /**
     * Parses the M3U file and returns the first file name.
     * 
     * @param inputUrl
     *            The input M3U file.
     * @return The first file name in the M3U play list.
     */
    public static String parseM3U(String inputUrl) {
        String inputFile = "";
        try {
            String plsContents = readTextFromUrl(new URL(inputUrl));
            for (String line : plsContents.split("\n")) {
                if (!line.trim().isEmpty() && !line.trim().startsWith("#")) {
                    inputFile = line.trim();
                    break;
                }
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        return inputFile;
    }

    private static String parseASX(String inputResource) {
        String inputFile = "";
        try {
            String contents = readTextFromUrl(new URL(inputResource));
            for (String line : contents.split("\n")) {
                if (line.toLowerCase().contains("href")) {
                    String pattern = "(?i).*href=\"(.*)\".*";
                    inputFile = line.replaceAll(pattern, "$1");
                    break;
                }
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        return inputFile;
    }

    private static String parseXSPF(String inputResource) {
        String inputFile = "";
        try {
            String contents = readTextFromUrl(new URL(inputResource));
            for (String line : contents.split("\n")) {
                if (line.toLowerCase().contains("href")) {
                    String pattern = "(?i)<location>(.*)</location>.*";
                    inputFile = line.replaceAll(pattern, "$1");
                    break;
                }
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        return inputFile;
    }

    /**
     * Return the text of the file with the given URL. E.g. if
     * http://test.be/text.txt is given the contents of text.txt is returned.
     * 
     * @param url
     *            The URL.
     * @return The contents of the file.
     */
    public static String readTextFromUrl(URL url) {
        StringBuffer fubber = new StringBuffer();
        try {
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                fubber.append(inputLine).append("\n");
            }
            in.close();
        } catch (IOException exception) {
            exception.printStackTrace();
        }
        return fubber.toString();
    }
}

Related

  1. parseASX(String inputResource)
  2. printUsage(ResourceBundle bundle)
  3. put(String resource, Map headers, String data)
  4. resourceExists(String s)
  5. runtimeResourceLocation(String src)
  6. toFile(Class c, String resource)
  7. toStream(String resource)
  8. unpackDeps(final String resource, final ClassLoader cl)