Skip to content

Commit

Permalink
Merge pull request #10 from mattwright324/fxml
Browse files Browse the repository at this point in the history
Major changes for v1.4.0
  • Loading branch information
mattwright324 authored Jan 23, 2019
2 parents c0db8d0 + c6f8f7b commit abc157e
Show file tree
Hide file tree
Showing 159 changed files with 8,601 additions and 4,878 deletions.
10 changes: 6 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@

.idea
out
.idea/
out/
log/
src/META-INF
youtube-comment-suite.iml
commentsuite.json
commentsuite.sqlite3
commentsuite.sqlite3
*.bak
thumbs/
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2018 Matthew Wright
Copyright (c) 2019 Matthew Wright

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
19 changes: 5 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# <img src="https://i.imgur.com/edLrUKt.png" width="466" height="64" />
# <img src="https://i.imgur.com/Uw2CJ7v.png" width="466" height="64" />

![Github All Releases](https://img.shields.io/github/downloads/mattwright324/youtube-comment-suite/total.svg)
![GitHub release](https://img.shields.io/github/release/mattwright324/youtube-comment-suite.svg)
Expand All @@ -7,7 +7,7 @@
YouTube Comment Suite lets you aggregate YouTube comments from numerous videos, playlists, and channels for archiving, general search, and showing activity.
Achieve the functionality of the *Community > Comments* tool that is provided to YouTube creators and more.

![Example](https://i.imgur.com/pE57Cql.png)
![Examples](https://i.imgur.com/J8UP1Gp.png)

* Want to see how often a keyword/topic comes up?
* Have a question that may have been answered in the thousands of comments and videos?
Expand All @@ -24,7 +24,7 @@ Achieve the functionality of the *Community > Comments* tool that is provided to
* Sign into multiple YouTube accounts and choose which to reply with.
* View video context when selecting a comment.

## Getting Started
## Install
[![GitHub Releases](https://img.shields.io/badge/downloads-releases-brightgreen.svg?maxAge=60&style=flat-square)](https://github.com/mattwright324/youtube-comment-suite/releases)

### Windows
Expand All @@ -37,15 +37,6 @@ Extract the latest release zip file into its own folder. Before you can run the
* If your version of Java is `OpenJDK` you will have to install JavaFX which is not included. Use the command `sudo apt-get install openjfx`.
* If your version of Java is `OracleJDK`, JavaFX is included and you are good to go!

## Using a Group
Begin managing a group by starting in the `Manage Groups` tab and selecting the Group that you want. `Default` is the group provided by default and can be renamed using the manager.

Adding channels, playlists, or videos to the group can be done one of two ways:
* **A:** While managing the group, click the `Add Item` button and paste in the full URL to the video, playlist, or channel.
* **B:** Search for videos, playlists, or channels using the `Search YouTube` tab at the top. Select any of the results and click the `Add to Group` button at the bottom.

Download all of the comments by clicking the `Refresh` button. * *Errors may appear while refreshing. Most commonly 404 errors, they can be caused by a slowed or interrupted internet. **Excessive 404 errors** may be a result of reaching the YouTube API Quota limit. If this happens, wait until the next day when the Quota resets at midnight Pacific Time (PT).*

Stats are viewable in the group manager after every refresh. This can be turned off in the settings.
## Getting Started

Search all of the downloaded comments using the `Search Comments` tab. Clicking on a comment will load their profile picture(s) and related video context. Right clicking selected comments provide options to open a direct link to the comment, comment's author, and comment's video of origin.
Want to know more about how to use this program? [Check out the Wiki!](https://github.com/mattwright324/youtube-comment-suite/wiki/Overview-of-the-interface)
Binary file added icon.pdn
Binary file not shown.
20 changes: 20 additions & 0 deletions module-info.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Java 9+ Compatibility
module mattw.youtube.commentsuite {
requires com.google.common;
requires gson;
requires java.desktop;
requires java.sql;
requires javafx.base;
requires javafx.graphics;
requires javafx.controls;
requires javafx.fxml;
requires javafx.web;
requires org.apache.commons.text;
requires org.apache.logging.log4j;
requires org.jsoup;
requires sqlite.jdbc;
requires youtube.data.list.mod;
opens mattw.youtube.commentsuite to javafx.fxml;
opens mattw.youtube.commentsuite.fxml to javafx.fxml;
exports mattw.youtube.commentsuite;
}
Binary file added readme_header.pdn
Binary file not shown.
179 changes: 179 additions & 0 deletions src/SuiteStyles.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
/* Global Styles */
.overlay {
-fx-background-color: rgba(127,127,127,0.4);
}
.overlayMenu {
-fx-background-color: #eee;
-fx-opacity: 1;
}
.divider {
-fx-border-width: 0 0 0 0;
}
.dividerPrimary { -fx-background-color: derive(#007bff, 80%); }
.dividerSecondary { -fx-background-color: derive(#6c757d, 80%); }
.dividerSuccess { -fx-background-color: derive(#28a745, 80%); }
.dividerDangerLight { -fx-background-color: derive(#dc3545, 40%); }
.dividerDanger { -fx-background-color: derive(#dc3545, 80%); }
.dividerWarning { -fx-background-color: derive(#ffc107, 40%); }
.dividerInfo { -fx-background-color: derive(#17a2b8, 80%); }
.dividerLight { -fx-background-color: derive(#f8f9fa, 80%); }
.dividerDark { -fx-background-color: derive(#343a40, 80%); }
.bold {
-fx-font-weight: bold;
}
.noPadding {
-fx-padding: 0;
-fx-border-color: red;
}
.noBorder {
-fx-border-color: transparent;
-fx-background-color: transparent;
}
.btn {}
.btnPrimary { -fx-base: #007bff; -fx-text-fill: #fff; }
.btnSecondary { -fx-base: #6c757d; -fx-text-fill: #fff; }
.btnSuccess { -fx-base: #28a745; -fx-text-fill: #fff; }
.btnDangerLight { -fx-base: derive(#dc3545, 40%); -fx-text-fill: #fff; }
.btnDanger { -fx-base: #dc3545; -fx-text-fill: #fff; }
.btnWarning { -fx-base: #ffc107; -fx-text-fill: #212529; }
.btnInfo { -fx-base: #17a2b8; -fx-text-fill: #fff; }
.btnLight { -fx-base: #f8f9fa; -fx-text-fill: #212529; }
.btnDark { -fx-base: #343a40; -fx-text-fill: #fff; }
.question {
-fx-padding: 0;
-fx-text-fill: cornflowerblue;
-fx-font-weight: bold;
-fx-cursor: hand;
}
.font12 { -fx-font-size: 12; }
.font14 { -fx-font-size: 14; }
.font16 { -fx-font-size: 16; }
.font18 { -fx-font-size: 18; }
.textMuted { -fx-text-fill: #6c757d; }
.textMutedLight { -fx-text-fill: darkgray; }
.clearTextField {
-fx-background-color: transparent;
-fx-text-box-border: transparent;
}
.textFieldNoBorder {
-fx-background-insets: 0;
-fx-padding: 1 3 1 3;
}
.noRadiusRight {
-fx-border-radius: 4 0 0 4;
-fx-background-radius: 4 0 0 4;
}
.noRadiusLeft {
-fx-border-radius: 0 4 4 0;
-fx-background-radius: 0 4 4 0;
}
.alertBase {
-fx-padding: 4;
-fx-border-radius: 5;
-fx-background-radius: 5;
}
.alertPrimary {
-fx-text-fill: #004085;
-fx-background-color: #cce5ff;
-fx-border-color: #b8daff;
}
.alertWarning {
-fx-text-fill: #856404;
-fx-background-color: #fff3cd;
-fx-border-color: #ffeeba;
}
.alertSuccess {
-fx-text-fill: #155724;
-fx-background-color: #d4edda;
-fx-border-color: #c3e6cb;
}
.alertDanger {
-fx-text-fill: #721c24;
-fx-background-color: #f8d7da;
-fx-border-color: #f5c6cb;
}
.border4 {-fx-border-radius: 4; -fx-background-radius: 4;}
.addItemExample {
-fx-cursor: hand;
-fx-text-fill: #155724;
}
.listView .list-cell {
-fx-padding: 0;
-fx-background-insets: 0;
}

/* Main.fxml */
.headerBtn {
-fx-background-color: #eeeeee;
-fx-base: rgba(255,255,255,0.5);
-fx-focus-color: transparent;
-fx-border-width: 0 1 3 1;
-fx-border-color: white #eeeeee white #eeeeee;
}
.headerBtn:selected {
-fx-background-color: derive(firebrick, 95%);
-fx-border-width: 0 1 3 1;
-fx-border-color: white #eeeeee firebrick #eeeeee;
}
.headerBtn:hover {
-fx-background-color: rgba(255,127,127,0.2);
-fx-border-width: 0 1 3 1;
-fx-border-color: white #eeeeee indianred #eeeeee;
}
.settingsBtn {
-fx-background-color: transparent;
-fx-cursor: hand;
}

/* Settings.fxml */
.sectionTitle {
-fx-border-width: 0 0 1 0;
-fx-border-color: white white lightgray white;
}

/* SearchYouTube.fxml */
.control {
-fx-height: 31px;
-fx-min-height: 31px;
-fx-pref-height: 31px;
-fx-max-height: 31px;
}

/* ManageGroupManager.fxml */
.dashedBottom {
-fx-border-width: 0 0 4 0;
-fx-border-style: dashed;
-fx-border-color: transparent transparent darkgray transparent;
}
.btnGroup Label {
-fx-padding: 0 8 0 8;
-fx-background-color: derive(lightgrey, 70%);
-fx-text-fill: derive(lightgrey, -20%);
-fx-border-color: lightgray;
}

/* SearchComments.fxml */
.toggleContext {
-fx-cursor: hand;
-fx-background-color: linear-gradient(to right, lightgray, transparent);
}
.toggleQuery {
-fx-cursor: hand;
-fx-background-color: linear-gradient(to left, lightgray, transparent);
}
.reply {
-fx-background-color: linear-gradient(to right, rgba(127,255,127,0.2), transparent);
}

.commentDate {
-fx-padding: 0 8 0 8;
-fx-background-color: derive(rgba(255,255,255,0.5), 70%);
-fx-background-radius: 5;
}

.commentLikes {
-fx-padding: 0 8 0 8;
-fx-background-color: derive(rgba(255,255,255,0.5), 70%);
-fx-text-fill: derive(cornflowerblue, -20%);
-fx-background-radius: 5;
}
19 changes: 19 additions & 0 deletions src/log4j2.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="RollingFile" fileName="log/output-${date:yyyyMMdd}.log"
filePattern="log/output-%d{yyyyMMdd}.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<TimeBasedTriggeringPolicy />
</RollingFile>
</Appenders>
<Loggers>
<Root level="ALL">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
14 changes: 14 additions & 0 deletions src/mattw/youtube/commentsuite/Cleanable.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package mattw.youtube.commentsuite;

/**
* For use in instances where UI components can "clean up" and reset their state instead of creating an
* entirely new instance of the component each time.
*
* Most applicable to modals.
*
* @since 2018-12-30
* @author mattwright324
*/
public interface Cleanable {
void cleanUp();
}
Loading

0 comments on commit abc157e

Please sign in to comment.