package com.kolakcc.swf; import java.io.File; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.JFileChooser; import javax.swing.JFrame; import com.kolakcc.loljclient.util.FileSystem; public class SWFExtractor { private static String[][] files = { { "ImagePack_items.swf", "items", "png" }, { "ImagePack_buddyIcons.swf", "buddyIcons", "jpg" }, { "ImagePack_spells.swf", "spells", "png" }, { "ImagePack_masteryIcons.swf", "masteries", "png" } }; // file, destination folder, file type public SWFExtractor() { //check swfdump File swfdump = new File("C:\\Program Files (x86)\\SWFTools\\swfdump.exe"); if (!swfdump.exists()) swfdump = new File("C:\\Program Files\\SWFTools\\swfdump.exe"); if (!swfdump.exists()) swfdump = new File("/usr/local/bin/swfdump"); if (!swfdump.exists()) swfdump = new File("swfdump"); if (!swfdump.exists()) { JFileChooser swfFileChooser = new JFileChooser(); swfFileChooser.setDialogTitle("Select swfdump"); swfFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); swfFileChooser.showOpenDialog(new JFrame()); swfdump = swfFileChooser.getSelectedFile(); } if (!swfdump.exists()) throw new RuntimeException("SWFdump not found."); String swfdumpLocation = swfdump.getParent() + File.separatorChar; Process swfdumpProcess = null; Scanner outputScanner = null; Scanner outputScannerWithDelimiter = null; try { for (String[] file : files) { swfdumpProcess = new ProcessBuilder(swfdumpLocation + "swfdump", FileSystem.getRADSFile("assets/imagePacks/"+file[0]).getAbsolutePath()).start(); outputScanner = new Scanner(swfdumpProcess.getInputStream()); outputScannerWithDelimiter = outputScanner.useDelimiter("\n"); String output; while (true) { if (!outputScannerWithDelimiter.hasNext()) break; output = outputScannerWithDelimiter.next(); Pattern pat = Pattern.compile(".*exports (.+?) as.*__e_(.*)\""); Matcher m = pat.matcher(output); if (m.find()) { ProcessBuilder pb = new ProcessBuilder(swfdumpLocation + "swfextract", FileSystem.getRADSFile("assets/imagePacks/"+file[0]).getAbsolutePath(), "-"+file[2].charAt(0),m.group(1), "--output", file[1]+File.separatorChar+m.group(2)+"."+file[2]); System.out.println(pb.command()); pb.directory(FileSystem.getFile("app://img/")); pb.start(); } } } } catch (Exception e) { e.printStackTrace(); } finally { if (outputScanner != null) outputScanner.close(); if (outputScannerWithDelimiter != null) outputScannerWithDelimiter.close(); } } }