├── .gitignore
├── README.md
├── docs
├── assets
│ ├── logo.png
│ └── style.css
└── index.html
├── src
└── main
│ └── java
│ └── net
│ └── jacobpeterson
│ ├── download
│ ├── format
│ │ ├── SongDownload.java
│ │ ├── VideoDownload.java
│ │ └── AudioDownload.java
│ ├── FFMPEGProcessor.java
│ └── Download.java
│ ├── view
│ ├── groupcomposite
│ │ ├── AudioInfoComposite.java
│ │ ├── VideoInfoComposite.java
│ │ ├── song
│ │ │ └── AlbumCoverCanvas.java
│ │ └── EditSongComposite.java
│ ├── UpdateShellComposite.java
│ ├── albumcovertab
│ │ ├── ThumbnailTabItem.java
│ │ ├── AlbumCoverTabItem.java
│ │ └── CustomTabItem.java
│ ├── ApplicationShell.java
│ ├── EditAlbumCoverComposite.java
│ └── ApplicationShellContents.java
│ ├── controller
│ ├── DownloadsController.java
│ ├── ApplicationDataController.java
│ └── viewcontroller
│ │ ├── EditAlbumCoverCompositeController.java
│ │ └── ApplicationShellController.java
│ ├── util
│ ├── ExceptionUtils.java
│ └── SWTUtils.java
│ ├── MediaFission.java
│ └── MediaFissionCommandLine.java
├── lib
└── Lib Download Links.txt
├── MediaFission.iml
├── resources
├── logo.svg
└── Random Code.txt
└── pom.xml
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .idea/
3 | target/
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # MediaFission
2 | Visit https://petersoj.github.io/MediaFission/ for more info.
--------------------------------------------------------------------------------
/docs/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Petersoj/MediaFission/master/docs/assets/logo.png
--------------------------------------------------------------------------------
/src/main/java/net/jacobpeterson/download/format/SongDownload.java:
--------------------------------------------------------------------------------
1 | package net.jacobpeterson.download.format;
2 |
3 | public class SongDownload {
4 | }
5 |
--------------------------------------------------------------------------------
/src/main/java/net/jacobpeterson/download/FFMPEGProcessor.java:
--------------------------------------------------------------------------------
1 | package net.jacobpeterson.download;
2 |
3 | public class FFMPEGProcessor {
4 |
5 |
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/net/jacobpeterson/download/format/VideoDownload.java:
--------------------------------------------------------------------------------
1 | package net.jacobpeterson.download.format;
2 |
3 | import net.jacobpeterson.download.Download;
4 |
5 | public class VideoDownload {
6 | }
7 |
--------------------------------------------------------------------------------
/src/main/java/net/jacobpeterson/download/format/AudioDownload.java:
--------------------------------------------------------------------------------
1 | package net.jacobpeterson.download.format;
2 |
3 | import net.jacobpeterson.download.Download;
4 |
5 | public class AudioDownload {
6 |
7 |
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/lib/Lib Download Links.txt:
--------------------------------------------------------------------------------
1 | Lib download links
2 |
3 | http://download.eclipse.org/eclipse/downloads/
4 |
5 | Install maven jar to local maven repo!
6 |
7 |
8 | To install to local maven repo:
9 | https://stackoverflow.com/questions/30347310/adding-a-system-dependency-to-maven
--------------------------------------------------------------------------------
/src/main/java/net/jacobpeterson/download/Download.java:
--------------------------------------------------------------------------------
1 | package net.jacobpeterson.download;
2 |
3 | import java.io.File;
4 | import java.net.URL;
5 |
6 | public class Download {
7 |
8 | private File dataLocation;
9 | private URL downloadURL;
10 |
11 | public Download(File dataLocation) {
12 |
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/net/jacobpeterson/view/groupcomposite/AudioInfoComposite.java:
--------------------------------------------------------------------------------
1 | package net.jacobpeterson.view.groupcomposite;
2 |
3 | import org.eclipse.swt.widgets.Group;
4 |
5 | public class AudioInfoComposite {
6 |
7 | private Group groupContainer;
8 |
9 | public AudioInfoComposite(Group groupContainer) {
10 | this.groupContainer = groupContainer;
11 |
12 | }
13 |
14 | public void setup() {
15 |
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/main/java/net/jacobpeterson/controller/DownloadsController.java:
--------------------------------------------------------------------------------
1 | package net.jacobpeterson.controller;
2 |
3 | import net.jacobpeterson.MediaFission;
4 |
5 | public class DownloadsController {
6 |
7 | private MediaFission mediaFission;
8 |
9 | public DownloadsController(MediaFission mediaFission) {
10 | this.mediaFission = mediaFission;
11 | }
12 |
13 | public void download(String url) {
14 |
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/src/main/java/net/jacobpeterson/view/groupcomposite/VideoInfoComposite.java:
--------------------------------------------------------------------------------
1 | package net.jacobpeterson.view.groupcomposite;
2 |
3 | import org.eclipse.swt.widgets.Group;
4 |
5 | public class VideoInfoComposite {
6 |
7 | private Group groupContainer;
8 |
9 | public VideoInfoComposite(Group groupContainer) {
10 | this.groupContainer = groupContainer;
11 |
12 | }
13 |
14 | public void setup() {
15 |
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/net/jacobpeterson/controller/ApplicationDataController.java:
--------------------------------------------------------------------------------
1 | package net.jacobpeterson.controller;
2 |
3 | import net.jacobpeterson.MediaFission;
4 |
5 | import java.io.File;
6 |
7 | public class ApplicationDataController {
8 |
9 | private MediaFission mediaFission;
10 |
11 | private File applicationDataLocation;
12 |
13 | public ApplicationDataController(MediaFission mediaFission) {
14 | this.mediaFission = mediaFission;
15 |
16 | this.applicationDataLocation = new File(System.getProperty("user.home") + "/Library/Application Support/MediaFission/"); // Only for Mac
17 | }
18 |
19 | public void setup() {
20 | if (!applicationDataLocation.mkdir()) { // Failed to create app support directory
21 |
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/net/jacobpeterson/view/UpdateShellComposite.java:
--------------------------------------------------------------------------------
1 | package net.jacobpeterson.view;
2 |
3 | import org.eclipse.swt.SWT;
4 | import org.eclipse.swt.widgets.Label;
5 | import org.eclipse.swt.widgets.Shell;
6 |
7 | public class UpdateShellComposite {
8 |
9 | private Shell shell;
10 |
11 | private Label updatingLabel;
12 |
13 | public UpdateShellComposite(Shell shell) {
14 | this.shell = shell;
15 |
16 | this.updatingLabel = new Label(shell, SWT.WRAP | SWT.CENTER);
17 | }
18 |
19 | public void setup() {
20 | this.setupShell();
21 | this.setupWidgets();
22 | this.setupLayout();
23 | }
24 |
25 | private void setupShell() {
26 |
27 | }
28 |
29 | private void setupWidgets() {
30 |
31 | }
32 |
33 | private void setupLayout() {
34 |
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/MediaFission.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/main/java/net/jacobpeterson/util/ExceptionUtils.java:
--------------------------------------------------------------------------------
1 | package net.jacobpeterson.util;
2 |
3 | import net.jacobpeterson.MediaFission;
4 |
5 | public class ExceptionUtils {
6 |
7 | private static MediaFission mediaFissionInstance;
8 |
9 | public static void setMediaFissionInstance(MediaFission mediaFission) {
10 | mediaFissionInstance = mediaFission;
11 | }
12 |
13 | public static void handleException(Exception e, boolean fatal) {
14 | e.printStackTrace(); // If ever debugging
15 | if (fatal) {
16 | System.exit(0);
17 | }
18 | }
19 |
20 | public static void handleError(String error, boolean openDialog, boolean fatal) {
21 | try {
22 | if (openDialog) {
23 | // MessageBox dialog = new MessageBox(mediaFissionInstance.getShellController().getApplicationShell().getShell(), SWT.ICON_ERROR | SWT.YES | SWT.NO);
24 | // dialog.setMessage("ERROR: " + error);
25 | }
26 | } catch (NullPointerException e) { // In case one of the above instances is null
27 | fatal = true;
28 | }
29 | if (fatal) {
30 | System.exit(0);
31 | }
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/resources/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/resources/Random Code.txt:
--------------------------------------------------------------------------------
1 | /Users/Jacob/Downloads/ffmpeg -i /Users/Jacob/Desktop/f/Post\ Malone\ -\ No\ Option.webm -vn -ab 128k -ar 44100 -y -metadata title="No Option" -metadata artist="Post Malone" /Users/Jacob/Desktop/out9.mp3
2 |
3 |
4 | To help combine audio and video:
5 | https://superuser.com/a/590210
6 |
7 | To get/test album art:
8 | https://stackoverflow.com/a/4501009 - for test key
9 | https://www.last.fm/api/show/track.getInfo - for track info
10 | http://ws.audioscrobbler.com/2.0/?method=track.getInfo&api_key=bc67636b1f06495cdee8b3dbcc49f477&artist= &track= &format=json
11 |
12 | https://www.codeproject.com/articles/36001/using-public-web-services-to-get-information-about
13 |
14 |
15 | Drawing centered text:
16 | http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/DrawTextDemo.htm
17 |
18 |
19 | Example youtube-dl command:
20 | /Users/Jacob/Desktop/youtube-dl -v -f bestaudio --no-playlist --dump-json --playlist-items 1
21 |
22 | FFMPEG commands:
23 | /Users/Jacob/Desktop/ffmpeg -i -vn -aq 128k -ar 44100 -y out.mp3 - http://bytefreaks.net/gnulinux/bash/ffmpeg-extract-audio-from-webm-to-mp3
24 | /Users/Jacob/Desktop/ffmpeg -i /Users/Jacob/input.mp3 -i album_cover.jpg -c copy -map 0:0 -map 1:0 -metadata title=" " -metadata artist=" " -metadata album=" " -metadata album_artist=" " -metadata genre=" " -metadata:s:v title="Cover (front)" output.mp3
25 |
26 | /Users/Jacob/Desktop/ffmpeg -i -i -y -map 0 -map 1 -metadata title=" " -metadata artist=" " -metadata album=" " -metadata album_artist=" " -metadata genre=" " -metadata:s:1 title="Cover (front)"