diff --git a/pom.xml b/pom.xml index ba8b6462e..346073489 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.tonikelope MegaBasterd - 7.23 + 7.24 jar diff --git a/src/main/java/com/tonikelope/megabasterd/LinkGrabberDialog.java b/src/main/java/com/tonikelope/megabasterd/LinkGrabberDialog.java index 73506edb0..b4732691c 100644 --- a/src/main/java/com/tonikelope/megabasterd/LinkGrabberDialog.java +++ b/src/main/java/com/tonikelope/megabasterd/LinkGrabberDialog.java @@ -326,6 +326,8 @@ public class LinkGrabberDialog extends javax.swing.JDialog implements ClipboardC String link = i.next(); + link = MiscTools.newMegaLinks2Legacy(link); + if (findFirstRegex("(?:https?|mega)://[^/]*/(#.*?)?!.+![^\r\n]+", link, 0) == null) { i.remove(); diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanel.java b/src/main/java/com/tonikelope/megabasterd/MainPanel.java index 949fdcd30..050feee89 100644 --- a/src/main/java/com/tonikelope/megabasterd/MainPanel.java +++ b/src/main/java/com/tonikelope/megabasterd/MainPanel.java @@ -57,7 +57,7 @@ import javax.swing.UIManager; */ public final class MainPanel { - public static final String VERSION = "7.23"; + public static final String VERSION = "7.24"; public static final boolean FORCE_SMART_PROXY = false; //TRUE FOR DEBUGING SMART PROXY public static final int THROTTLE_SLICE_SIZE = 16 * 1024; public static final int DEFAULT_BYTE_BUFFER_SIZE = 16 * 1024; diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanelView.java b/src/main/java/com/tonikelope/megabasterd/MainPanelView.java index c77f9abc6..1e1581b5c 100644 --- a/src/main/java/com/tonikelope/megabasterd/MainPanelView.java +++ b/src/main/java/com/tonikelope/megabasterd/MainPanelView.java @@ -945,9 +945,12 @@ public final class MainPanelView extends javax.swing.JFrame { Thread.currentThread().setPriority(Thread.MIN_PRIORITY); - Set urls = new HashSet(findAllRegex("(?:https?|mega)://[^\r\n]+(#[^\r\n!]*?)?![^\r\n!]+![^\\?\r\n]+", dialog.getLinks_textarea().getText(), 0)); + //Convert to legacy link format + String link_data = MiscTools.newMegaLinks2Legacy(dialog.getLinks_textarea().getText()); - Set megadownloader = new HashSet(findAllRegex("mega://enc[^\r\n]+", dialog.getLinks_textarea().getText(), 0)); + Set urls = new HashSet(findAllRegex("(?:https?|mega)://[^\r\n]+(#[^\r\n!]*?)?![^\r\n!]+![^\\?\r\n]+", link_data, 0)); + + Set megadownloader = new HashSet(findAllRegex("mega://enc[^\r\n]+", link_data, 0)); megadownloader.forEach((link) -> { try { @@ -959,7 +962,7 @@ public final class MainPanelView extends javax.swing.JFrame { } }); - Set elc = new HashSet(findAllRegex("mega://elc[^\r\n]+", dialog.getLinks_textarea().getText(), 0)); + Set elc = new HashSet(findAllRegex("mega://elc[^\r\n]+", link_data, 0)); elc.forEach((link) -> { try { @@ -971,7 +974,7 @@ public final class MainPanelView extends javax.swing.JFrame { } }); - Set dlc = new HashSet(findAllRegex("dlc://([^\r\n]+)", dialog.getLinks_textarea().getText(), 1)); + Set dlc = new HashSet(findAllRegex("dlc://([^\r\n]+)", link_data, 1)); dlc.stream().map((d) -> CryptTools.decryptDLC(d, _main_panel)).forEachOrdered((links) -> { links.stream().filter((link) -> (findFirstRegex("(?:https?|mega)://[^\r\n](#[^\r\n!]*?)?![^\r\n!]+![^\\?\r\n]+", link, 0) != null)).forEachOrdered((link) -> { diff --git a/src/main/java/com/tonikelope/megabasterd/MiscTools.java b/src/main/java/com/tonikelope/megabasterd/MiscTools.java index fbeecc7b7..bccfbcb7d 100644 --- a/src/main/java/com/tonikelope/megabasterd/MiscTools.java +++ b/src/main/java/com/tonikelope/megabasterd/MiscTools.java @@ -797,7 +797,9 @@ public class MiscTools { try { - String decoded = MiscTools.findFirstRegex("(?:https?|mega)://[^\r\n]+(#[^\r\n!]*?)?![^\r\n!]+![^\\?\r\n]+", new String(Base64.getDecoder().decode(chunk), "UTF-8"), 0); + String clean_data = MiscTools.newMegaLinks2Legacy(new String(Base64.getDecoder().decode(chunk))); + + String decoded = MiscTools.findFirstRegex("(?:https?|mega)://[^\r\n]+(#[^\r\n!]*?)?![^\r\n!]+![^\\?\r\n]+", clean_data, 0); if (decoded != null) { links.add(decoded); @@ -808,9 +810,11 @@ public class MiscTools { } } - links.addAll(findAllRegex("(?:https?|mega)://[^\r\n]+(#[^\r\n!]*?)?![^\r\n!]+![^\\?\r\n]+", URLDecoder.decode(data, "UTF-8"), 0)); + String clean_data = MiscTools.newMegaLinks2Legacy(URLDecoder.decode(data, "UTF-8")); - links.addAll(findAllRegex("mega://e(n|l)c[^\r\n]+", URLDecoder.decode(data, "UTF-8"), 0)); + links.addAll(findAllRegex("(?:https?|mega)://[^\r\n]+(#[^\r\n!]*?)?![^\r\n!]+![^\\?\r\n]+", clean_data, 0)); + + links.addAll(findAllRegex("mega://e(n|l)c[^\r\n]+", clean_data, 0)); res = links.stream().map((s) -> s + "\n").reduce(res, String::concat); } catch (UnsupportedEncodingException ex) { @@ -828,9 +832,11 @@ public class MiscTools { if (data != null) { try { - ArrayList links = findAllRegex("(?:https?|mega)://[^\r\n]+(#[^\r\n!]*?)?![^\r\n!]+![^\\?\r\n]+", URLDecoder.decode(data, "UTF-8"), 0); + String clean_data = MiscTools.newMegaLinks2Legacy(URLDecoder.decode(data, "UTF-8")); - links.addAll(findAllRegex("mega://e(n|l)c[^\r\n]+", URLDecoder.decode(data, "UTF-8"), 0)); + ArrayList links = findAllRegex("(?:https?|mega)://[^\r\n]+(#[^\r\n!]*?)?![^\r\n!]+![^\\?\r\n]+", clean_data, 0); + + links.addAll(findAllRegex("mega://e(n|l)c[^\r\n]+", clean_data, 0)); if (links.size() > 0) { @@ -1388,6 +1394,13 @@ public class MiscTools { } + public static String newMegaLinks2Legacy(String data) { + + String replace1 = data.replaceAll("https://mega\\.nz/folder/([^#]+)#(.+)", "https://mega.nz/#F!$1!$2"); + + return replace1.replaceAll("https://mega\\.nz/file/([^#]+)#(.+)", "https://mega.nz/#!$1!$2"); + } + private MiscTools() { } diff --git a/src/main/resources/images/mbasterd_screen.png b/src/main/resources/images/mbasterd_screen.png index c148f869d..2c73c24b4 100644 Binary files a/src/main/resources/images/mbasterd_screen.png and b/src/main/resources/images/mbasterd_screen.png differ