Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Video Convertor #1111

Open
wants to merge 93 commits into
base: 1.9.2
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
c3605ed
Some Fix
muhanadali100 Mar 31, 2020
202476b
Fixed:
Gijs735 Jul 7, 2020
139a522
- Header consistency and design (mobile)
Gijs735 Jul 11, 2020
37aa313
quickfix new releases h3
Gijs735 Jul 11, 2020
80baa3b
use class instead of inline style
Gijs735 Jul 11, 2020
9a7e218
Open subtitles integration
Aug 12, 2020
789f451
Fixes for the PR review
Aug 23, 2020
5876ccc
Random Episode Feature for TV Shows
ConflictingTheories Sep 26, 2020
90f5de8
Added Turkish translation
Alcadramin Sep 28, 2020
c07dc4e
#985 Exclude various non video related dependencies from tika
daknin Nov 8, 2020
1c58284
Add files via upload
ekufrin Jan 10, 2021
86da291
Merge pull request #1 from emanuelkufrin/emanuelkufrin-croatian_trans…
ekufrin Jan 10, 2021
96d26d0
Add files via upload
ekufrin Jan 10, 2021
210d96e
Merge pull request #1035 from streamaserver/1.9.2
dularion Feb 5, 2021
2f0e204
Merge pull request #1032 from emanuelkufrin/master
dularion Feb 6, 2021
9023b2b
add turkish translations
Feb 6, 2021
e9f0b8c
Merge pull request #1001 from Gijs735/master
dularion Feb 6, 2021
4968043
Merge pull request #1024 from daknin/feature/StreamlineTika
dularion Feb 6, 2021
723b583
fix merge conflicts for randomEpisode
Feb 6, 2021
13ca54a
Merge branch 'ConflictingTheories-channel-playlist'
Feb 6, 2021
0a923bf
Merge remote-tracking branch 'origin/master'
Feb 6, 2021
10b0530
Merge pull request #954 from muhanadali100/patch-7
dularion Feb 6, 2021
e49954f
Merge branch 'feature/opensubtitles' of https://github.com/vsamofal/s…
Feb 6, 2021
08289e6
add nullsafety for subtitle.isDefault
Feb 6, 2021
0ef6a36
version "1.10.0"
Feb 6, 2021
afb2015
attempt to fix build issue
Feb 7, 2021
1dcc0d3
fix build issues
Feb 7, 2021
4ddd9f2
add dashboard counts
Feb 7, 2021
79541f1
add translation placeholder for DASHBOARD.TITLE_COUNTER_OF
Feb 7, 2021
031508d
v1.10.1
Feb 7, 2021
24a9833
fix genericMovie deleting
Feb 27, 2021
2a1e3f6
fix watchlist rendering for empty videos
Feb 27, 2021
24a5e01
version "1.10.2"
Feb 27, 2021
7fa291e
consolidate usages of poster_path
Feb 27, 2021
fd256f6
fix permission issue for marking videos as completed
Feb 27, 2021
9c97665
add GENRE Administration
Feb 28, 2021
83a9cf4
fix broken images in several places
Feb 28, 2021
3512481
fix genericVideo edit-link
Feb 28, 2021
2dfde79
hoist admin video
Feb 28, 2021
28142de
fix highlighting of genericVideos & movies with custom images
Feb 28, 2021
845d2a3
version "1.10.3"
Feb 28, 2021
ec8c852
Recursively add files in Bulk-Create
Nargren Mar 10, 2021
6f9a268
Adjust Up Next timer on videos as function of duration
Nargren Mar 13, 2021
4f8f7a2
Allow normal user to mark video unwatched
Nargren Mar 15, 2021
536cd44
change default value of `amountOfMediaEntries` in the `current.gson` …
Likh-Alex Mar 24, 2021
29a4602
refactor `results.each{}` in `TheMovieDbController` to assign proper …
Likh-Alex Mar 24, 2021
decb21a
add `counter` in `dash.tpl.htm` for `continue watching` section
Likh-Alex Mar 24, 2021
3d5d93d
add `vm.continueWatching` - in `dash-ctrl.js` in `initMedia` method.
Likh-Alex Mar 24, 2021
673ff5b
refactor `listContinueWatching` in `api-service.js` to receive `params`.
Likh-Alex Mar 24, 2021
e7fe797
refactor `listContinueWatching()` in `DashController`.
Likh-Alex Mar 24, 2021
bc1b600
refactor `listContinueWatching.gson` to have `total` of `ViewingStatu…
Likh-Alex Mar 24, 2021
ba6c556
refactor `listContinueWatching()` in `VideoService.groovy` to return …
Likh-Alex Mar 24, 2021
26abf7f
refactor `sort` parameter in `apiService.dash.listContinueWatching` o…
Likh-Alex Mar 24, 2021
c83ca07
remove redundant method `applyFilter` in `dash-ctrl.js`
Likh-Alex Mar 24, 2021
da52465
JShint changes
Likh-Alex Mar 25, 2021
fa818fc
JsHint changes
Likh-Alex Mar 26, 2021
b8f3910
add closeAndOpenNext button in thShow file modal #1044
Likh-Alex Mar 26, 2021
b262d8a
reduce unnecessary API Calls & fix two-way data binding for new featu…
Mar 25, 2021
0761346
add openNextEpisode to modal-manage-files in tvShows management section
Likh-Alex Mar 25, 2021
d91e986
Merge pull request #1064 from streamaserver/dev/AL/add-files-to-multi…
dularion Mar 29, 2021
d660165
add isActive flag to ViewingStatus & set during save
Apr 8, 2021
40007b9
only show isActive=true for dash/listContinueWatching
Apr 8, 2021
eefe526
change return to respond in a gson-response for dashController (refac…
Apr 8, 2021
8922f8b
remove deprecated method reduceContinueWatchingEps
Apr 8, 2021
fe3f07a
add migration for active ViewingStatuses - migrateContinueWatchingAct…
Apr 8, 2021
d1ec14d
Merge pull request #1062 from streamaserver/dev/AL/add-loadmore-conti…
dularion Apr 8, 2021
a6e6d04
Merge pull request #1058 from Nargren/mark-unwatched
dularion Apr 8, 2021
065428f
Merge pull request #1056 from Nargren/recursive-add-files
dularion Apr 8, 2021
fcac845
Merge pull request #1057 from Nargren/next-up-short-videos
dularion Apr 8, 2021
936b0f2
Create SECURITY.md
sartoshi-foot-dao Jul 28, 2021
f499d48
Update DE_de.js
JoshHehnle Aug 5, 2021
0dc9f38
Fixing error adding tv shows to watchlist
darkarp Oct 30, 2021
0e4b3e8
Fix shows not showing in watchlist
darkarp Oct 30, 2021
3809538
Catalan translation added
agustinpallares94 Nov 23, 2021
273fc33
Fix Log4Shell
dularion Dec 23, 2021
3a68d7f
Fix Log4Shell 2.17.0
dularion Dec 23, 2021
28f50fa
1.10.4
Jan 7, 2022
ad0f18c
update log4j to 2.17.1
Jan 7, 2022
6ae1431
Add Slovak translation.
jose1711 May 25, 2022
4ca423d
fix: add supported platform for Apple M1 Silicon
bufgix Jul 11, 2022
28049b9
update default sorting on dashboard to be sort: 'first_air_date', ord…
Dec 2, 2022
aac87c1
version "1.10.5"
Dec 2, 2022
d36327e
Merge pull request #1113 from jose1711/sk_translation
dularion Jan 24, 2023
7ce141a
Merge pull request #1094 from agustinpallares94/master
dularion Jan 24, 2023
94981b7
Merge pull request #1083 from JoshHehnle/patch-1
dularion Jan 24, 2023
e086e1c
Merge pull request #1082 from zidingz/patch-1
dularion Jan 24, 2023
8fb8151
Update SECURITY.md
dularion Jan 24, 2023
2f1ac98
Merge pull request #1116 from bufgix/m1-docker-mysql-server
dularion Jan 24, 2023
1fb9cf9
Merge pull request #1092 from darkarp/master
dularion Jan 24, 2023
72e3a75
Updated gradle from 3.0 to 3.1 to fix compatibility with IntelliJ
MarcoLvr May 26, 2023
a2e486f
allow adding of genre to custom movies & tvShows #1054
Mar 5, 2021
cd0e2e7
Merge branch 'streamaserver:master' into master
MarcoLvr Apr 3, 2024
5b490a7
Merge pull request #1137 from MarcoLvr/master
dularion Apr 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Security Policy

## Reporting a Vulnerability

Please report security issues to dularion@gmail.com
41 changes: 39 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ buildscript {
}
}

version "1.9.3"
version "1.10.5"
group "streama"


Expand Down Expand Up @@ -95,8 +95,45 @@ dependencies {
console "org.grails:grails-console"
profile "org.grails.profiles:angular"
runtime "org.grails.plugins:async:4.0.0"
compile "org.apache.tika:tika-parsers:1.12"
compile ("org.apache.tika:tika-parsers:1.12") {
exclude group: 'org.ow2.asm', module: 'asm'
exclude group: 'com.healthmarketscience.jackcess'
exclude group: 'net.sourceforge.jmatio'
exclude group: 'org.tukaani', module: 'xz'
exclude group: 'org.apache.pdfbox'
exclude group: 'org.apache.poi'
exclude group: 'org.codelibs', module: 'jhighlight'
exclude group: 'com.pff', module: 'java-libpst'
exclude group: 'com.github.junrar'
exclude group: 'org.apache.cxf'
exclude group: 'org.apache.opennlp'
exclude group: 'de.l3s.boilerpipe'
exclude group: 'com.rometools'
exclude group: 'org.bouncycastle'
exclude group: 'org.ccil.cowan.tagsoup'
exclude group: 'com.googlecode.json-simple'
exclude group: 'com.googlecode.juniversalchardet'
exclude group: 'edu.ucar', module: 'netcdf4'
exclude group: 'edu.ucar', module: 'grib'
exclude group: 'edu.ucar', module: 'cdm'
exclude group: 'edu.ucar', module: 'httpservices'
exclude group: 'org.apache.commons', module: 'commons-csv'
exclude group: 'org.apache.commons', module: 'commons-exec'
exclude group: 'org.apache.sis.storage'
exclude group: 'org.apache.sis.core'
exclude group: 'org.json', module: 'json'
exclude group: 'com.google.code.gson'
exclude group: 'org.apache.commons', module: 'commons-compress'
exclude group: 'org.opengis', module: 'geoapi'
exclude group: 'org.apache.james'
}

// Fix Log4Shell
compile 'org.apache.logging.log4j:log4j-api:2.17.1'
compile 'org.apache.logging.log4j:log4j-core:2.17.1'
compile 'org.apache.logging.log4j:log4j-to-slf4j:2.17.1'
compile 'ch.qos.logback:logback-classic:1.2.8'
compile 'ch.qos.logback:logback-core:1.2.8'

// test
testCompile "org.grails:grails-plugin-testing"
Expand Down
1 change: 1 addition & 0 deletions docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ version: "3"

services:
mysql:
platform: linux/x86_64
image: mysql:5.7
restart: always
container_name: mysql
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
grailsVersion=3.2.6
gradleWrapperVersion=3.0
gradleWrapperVersion=3.1
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.0-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-3.1-all.zip
2 changes: 1 addition & 1 deletion grails-app/assets/bower/bootstrap/bootstrap.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion grails-app/assets/bower/bootstrap/bootstrap.custom.css

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
//= wrapped

angular.module('streama').controller('adminGenresCtrl', [
'apiService', '$state', '$rootScope', '$filter', function (apiService, $state, $rootScope, $filter) {
var vm = this;

vm.addGenre = addGenre;
vm.deleteGenre = deleteGenre;

apiService.genres.list().then(function (response){
vm.genres = response.data;
});


function addGenre(){
alertify.set({ buttonReverse: true, labels: {ok: "Create", cancel : "Cancel"}});
alertify.prompt('Add a new custom genre.', function (confirmed, name) {
if(confirmed){
apiService.genres.create(name).then(function (response) {
alertify.success('The Genre was created.');
vm.genres.push(response.data);
});
}
})
}

function deleteGenre(id){
alertify.set({ buttonReverse: true, labels: {ok: "Yes", cancel : "Cancel"}});
alertify.confirm("Are you sure, you want to delete this Genre?", function (confirmed) {
if(confirmed){
apiService.genres.delete(id).then(function () {
_.remove(vm.genres, {id: id});
}, function (){
alertify.error('Genre is probably used in a video / tvShow or liked by a user. Delete all usages first, then try again.')
});
}
})
}

}]);


Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ angular.module('streama').controller('adminMovieCtrl', [
};

$scope.manageFiles = function(movie){
modalService.fileManagerModal(movie, function (data) {
modalService.fileManagerModal(movie, null, function (data) {
movie.hasFiles = !!movie.files.length;
});
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@ angular.module('streama').controller('adminShowCtrl', [
$scope.showLoading = true;
$scope.hasMovieDBKey = true;

$scope.listEpisodesForSeason = listEpisodesForSeason;

apiService.theMovieDb.hasKey().then(function (response) {
apiService.theMovieDb.hasKey().then(function (response) {
if (!response.data.key) {
$scope.hasMovieDBKey = false;
}
Expand Down Expand Up @@ -91,6 +89,7 @@ angular.module('streama').controller('adminShowCtrl', [

$scope.setCurrentSeason = function (index) {
$scope.currentSeason = index;
$scope.currentEpisodesForSeason = listEpisodesForSeason(index);
if(index){
if($scope.hasMovieDBKey){
apiService.theMovieDb.countNewEpisodesForSeason({apiId: $scope.show.apiId, showId: $stateParams.showId, season: index})
Expand Down
112 changes: 61 additions & 51 deletions grails-app/assets/javascripts/streama/controllers/admin-video-ctrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,73 +4,83 @@ angular.module('streama').controller('adminVideoCtrl', [
'$scope', 'apiService', '$stateParams', 'modalService', '$state', 'uploadService',
function ($scope, apiService, $stateParams, modalService, $state, uploadService) {
$scope.loading = true;
$scope.uploadStatus = {};

$scope.openVideoModal = openVideoModal;
$scope.manageFiles = manageFiles;
$scope.delete = doDelete;
$scope.addSimilarMovieToStreama = addSimilarMovieToStreama;
$scope.addToCurrentNotification = addToCurrentNotification;

$scope.upload = initUpload();

init();

function init(){
apiService.genericVideo.get($stateParams.videoId).then(function (response) {
var data = response.data;
$scope.video = data;
$scope.loading = false;
$scope.highlightOnDashboard = modalService.newReleaseModal.bind(modalService, $scope.video, 'genericVideo');
});
}

apiService.genericVideo.get($stateParams.videoId).then(function (response) {
var data = response.data;
$scope.video = data;
$scope.loading = false;
});
function initUpload(){
uploadService.doUpload.bind(uploadService, $scope.uploadStatus, 'video/uploadFile.json?id=' + $stateParams.movieId, function (data) {
$scope.uploadStatus.percentage = null;

$scope.openVideoModal = function () {
if(data.error) return

$scope.video.files = $scope.video.files || [];
$scope.video.files.push(data);
}, function () {})
}

function addToCurrentNotification(){
apiService.notification.addMovieToCurrentNotification($stateParams.movieId).then(function () {
alertify.success('The movie was added to the current notification queue.');
});
}

function doDelete(){
alertify.set({ buttonReverse: true, labels: {ok: "Yes", cancel : "Cancel"}});
alertify.confirm("Are you sure, you want to delete this Video?", function (confirmed) {
if(confirmed){
apiService.genericVideo.delete($stateParams.videoId).then(function () {
$state.go('admin.videos');
});
}
})
}

function openVideoModal() {
modalService.genericVideoModal($scope.video, function (data) {
angular.merge($scope.video, data)
});
};
}

$scope.delete = function(){
alertify.set({ buttonReverse: true, labels: {ok: "Yes", cancel : "Cancel"}});
alertify.confirm("Are you sure, you want to delete this Video?", function (confirmed) {
if(confirmed){
apiService.genericVideo.delete($stateParams.videoId).then(function () {
$state.go('admin.videos');
});
}
})
};

$scope.addToCurrentNotification = function(){
apiService.notification.addMovieToCurrentNotification($stateParams.movieId).then(function () {
alertify.success('The movie was added to the current notification queue.');
});
};

$scope.manageFiles = function(video){
modalService.fileManagerModal(video);
};

function manageFiles(video){
modalService.fileManagerModal(video);
}

$scope.addSimilarMovieToStreama = function(movie, redirect){
function addSimilarMovieToStreama(movie, redirect){
alertify.set({ buttonReverse: true, labels: {ok: "Yes", cancel : "Cancel"}});

alertify.confirm("Do you want to add \""+ movie.title +"\" to the Streama library?", function (confirmed) {
if(confirmed){
alertify.confirm("Do you want to add \""+ movie.title +"\" to the Streama library?", function (confirmed) {
if(confirmed){

var apiId = movie.id;
delete movie.id;
movie.apiId = apiId;

apiService.movie.save(movie).then(function (data) {
if(redirect){
$state.go('admin.movie', {movieId: data.data.id});
}
if(redirect){
$state.go('admin.movie', {movieId: data.data.id});
}
});
}
})
};

$scope.uploadStatus = {};

$scope.upload = uploadService.doUpload.bind(uploadService, $scope.uploadStatus, 'video/uploadFile.json?id=' + $stateParams.movieId, function (data) {
$scope.uploadStatus.percentage = null;

if(data.error) return

$scope.video.files = $scope.video.files || [];
$scope.video.files.push(data);
}, function () {});




}
})
}

}]);
Original file line number Diff line number Diff line change
Expand Up @@ -139,14 +139,27 @@ function modalCreateFromFileCtrl($scope, $uibModalInstance, apiService, uploadSe
directory.isSelected = !directory.isSelected;
if(directory.isSelected){
openLocalDirectory(directory, true, function () {
_.forEach(directory.localFiles, function (file) {
toggleSelection(file);
_.forEach(directory.localFiles, function (content) {
if(content.path.split('\\').pop().split('.').length > 1){
toggleSelection(content);
}else{
openLocalDirectory(content, true, function () {
_.forEach(content.localFiles, function (file) {
toggleSelection(file);
});
});
};
});
});
}else{
_.forEach(directory.localFiles, function (file) {
deselect(file);
directory.showFiles = false;
file.showFiles = false;
_.forEach(file.localFiles, function (subfile) {
deselect(subfile);
subfile.showFiles = false;
});
});
}

Expand Down
Loading