diff --git a/m3u8script/.gitignore b/m3u8script/.gitignore deleted file mode 100644 index 65e3ba2..0000000 --- a/m3u8script/.gitignore +++ /dev/null @@ -1 +0,0 @@ -test/ diff --git a/m3u8script/LICENSE b/m3u8script/LICENSE deleted file mode 100644 index 6885c5b..0000000 --- a/m3u8script/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 eneller - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/m3u8script/README.md b/m3u8script/README.md deleted file mode 100644 index 6f51810..0000000 --- a/m3u8script/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# m3u8script -A script to facilitate downloading videos saved as .m3u8 in general. - -## Finding the .m3u8 file -[Please extract the URL to your .m3u8 file first:](findm3u8.mp4) -1. Open the developer tools -2. Go to the network tab and reload the page -3. locate an entry containing an m3u8 link (search for chunklist) -4. copy the link - -In pictures: -![](find1.png) -![](find2.png) -(Pictures taken in Firefox) -

-![](brave.png) -(Pictures taken in Brave (Chromium Browser)) - -## Using the tool -The tool does not need to be installed, only downloaded (m3u8script.java). All you might need to do is [install the Java Development Kit, or JDK,](https://www.oracle.com/de/java/technologies/javase-jdk15-downloads.html) and set the CLASSPATH variable. -You can then run it: -![java m3u8script.java](cli.jpg) - -When encountering an error, you might also try -`java -cp ./ m3u8script.java` - -## Options -|option|explanation| -|----|----| -|`-single m3u8URL`| allows you to download and convert a single .m3u8 file. In this case, output must either end in a *folder/* or *file.m3u8*| -|`-multi textfile`| allows you to specify the path to a text file that contains links to .m3u8 files (one on each line), allowing hands-free batch processing. -output must specify a folder path| -|`-output fileorfolder`| specifies a local directory path. When using ’-multi’, it must contain only a folder name, since filenames will be applied automatically. When used with -single, it can contain a full filename with the extension .m3u8. If you want to use automatic naming, just specify a folder path| -|`-prefix prefixToUse`| You can use this command to specify the pattern this script should look for. Default should work in most cases. | - -Example: `java m3u8script.java -multi /home/guest/Downloads/list.txt -output /home/guest/Downloads/videos` - -## Downloading -You can then use ffmpeg or VLC media player to download the videos: - -![vlc](vlc.png) diff --git a/m3u8script/brave.png b/m3u8script/brave.png deleted file mode 100644 index 35e1a8c..0000000 Binary files a/m3u8script/brave.png and /dev/null differ diff --git a/m3u8script/cli.jpg b/m3u8script/cli.jpg deleted file mode 100644 index 921d992..0000000 Binary files a/m3u8script/cli.jpg and /dev/null differ diff --git a/m3u8script/find1.png b/m3u8script/find1.png deleted file mode 100644 index cd71992..0000000 Binary files a/m3u8script/find1.png and /dev/null differ diff --git a/m3u8script/find2.png b/m3u8script/find2.png deleted file mode 100644 index 17a1c8c..0000000 Binary files a/m3u8script/find2.png and /dev/null differ diff --git a/m3u8script/findm3u8.mp4 b/m3u8script/findm3u8.mp4 deleted file mode 100644 index d90fcf0..0000000 Binary files a/m3u8script/findm3u8.mp4 and /dev/null differ diff --git a/m3u8script/m3u8script.java b/m3u8script/m3u8script.java deleted file mode 100644 index d20ab21..0000000 --- a/m3u8script/m3u8script.java +++ /dev/null @@ -1,140 +0,0 @@ -package de.eneller.scripts; - -import java.io.*; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Arrays; -import java.util.Scanner; -import java.util.logging.Level; -import java.util.logging.Logger; - -public class m3u8script { - public static Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); - - public static void main(String[] args) { - logger.setLevel(Level.ALL); - if (args.length < 2) { - printHelp(); - System.exit(1); - } - System.out.println(Arrays.toString(args)); - String url = ""; - String inputFile = ""; - String prefix = "media_"; - String output = ""; - boolean m = false; - for (int i = 0; i < args.length - 1; i++) { - switch (args[i]) { - case "-single": - url = args[i + 1].trim(); - break; - case "-multi": - inputFile = args[i + 1].trim(); - m = true; - break; - case "-prefix": - prefix = args[i + 1].trim(); - break; - case "-output": - output = args[i + 1].trim(); - break; - } - } - if (m == false) { - if (output.matches(".*\\.m3u8$") == false) { - output = output + "/"; - } - parse(url, output, prefix); - } else { - String[] pathArr = output.split("/"); - - if (output.matches(".*/$") == false) { - output = output + "/"; - } - - try (Scanner scn = new Scanner(new File(inputFile));) { - - String data; - int c = 0; - int a = 0; - while (scn.hasNextLine()) { - a++; - data = scn.nextLine(); - if (parse(data, output, prefix)) { - c++; - } - } - logger.log(Level.INFO, c + " out of " + a + " operations successfully completed. In case of errors, please check the log."); - } catch (FileNotFoundException e) { - logger.log(Level.SEVERE, "Couldnt find input file"); - } - } - - } - - public static boolean parse(String m3u8WebPath, String outputPath, String matchPrefix) { - boolean b = true; - try { - URL url = new URL(m3u8WebPath); - Scanner scn = new Scanner((new BufferedReader(new InputStreamReader(url.openStream())))); - String[] splitWebPath = m3u8WebPath.split("/"); - String m3u8WebPrefix = ""; - for (int i = 0; i < splitWebPath.length - 1; i++) { - m3u8WebPrefix = m3u8WebPrefix + splitWebPath[i] + "/"; - } - if (outputPath.matches(".*/$")) { - String generatedFileName = splitWebPath[splitWebPath.length - 2]; - generatedFileName = generatedFileName.replaceAll("%20", "_"); - /* above line should be - generatedFileName = java.net.URLDecoder.decode(generatedFileName, StandardCharsets.UTF_8); - */ - generatedFileName = generatedFileName.replaceAll("\\.smil", ".m3u8"); - outputPath = outputPath + generatedFileName; - } - - File outm3u8 = new File(outputPath); - - if (outm3u8.createNewFile()) { - logger.log(Level.INFO, "File created at " + outputPath); - } else { - logger.log(Level.WARNING, "File already exists, please specify a different path " + outputPath); - return false; - } - - FileWriter outWriter = new FileWriter(outm3u8); - String data = ""; - while (scn.hasNextLine()) { - data = scn.nextLine(); - if (data.startsWith(matchPrefix)) { - data = m3u8WebPrefix + data; - } - outWriter.write(data + "\n"); - } - outWriter.close(); - scn.close(); - } catch (FileNotFoundException e) { - logger.log(Level.SEVERE, "Couldnt find .m3u8 file at specified path"); - } catch (MalformedURLException e) { - logger.log(Level.SEVERE, "Couldnt read file at URL"); - } catch (IOException e) { - logger.log(Level.SEVERE, "An error occured while trying to create the output file, please check that your path exists"); - } - - - return true; - } - - public static String getInput(String s) { - Scanner scn = new Scanner(System.in); - System.out.println(s); - return scn.nextLine(); - } - - public static void printHelp() { - System.out.println("Seems like you tried to run the script without specifying necessary parameters." + System.lineSeparator() + - "The following commands are available:" + System.lineSeparator() + System.lineSeparator() + - "Use -multi yourfile.txt to specify the absolute path to an input file containing a list of URLs" + System.lineSeparator() + - "Or use -single urlto.m3u8 in combination with -output /path/to/output/folderorfile" + System.lineSeparator() + System.lineSeparator() + - "Please go to https://github.com/eneller/m3u8script for additional help"); - } -} diff --git a/m3u8script/vlc.png b/m3u8script/vlc.png deleted file mode 100644 index 6345a4f..0000000 Binary files a/m3u8script/vlc.png and /dev/null differ