Commit Graph

1061 Commits

Author SHA1 Message Date
0xb00bface 0b384cf85e Improve Bongacams online state detection 2020-10-04 19:31:34 +02:00
0xb00bface e250628c96 Add com.sun.activation for Java versions > 8 2020-10-04 16:03:56 +02:00
0xb00bface a2e2dbda6d Catch JSON parse exception 2020-10-04 15:20:23 +02:00
0xb00bface 5fa939ae65 Write script output to temporary log file 2020-10-03 20:22:20 +02:00
0xb00bface 8cc6f7ae0e Delete FFmpeg log files on JVM termination 2020-10-03 20:16:41 +02:00
0xb00bface 098e2d1b67 Fix update of associated files in GUI 2020-10-03 19:00:20 +02:00
0xb00bface 986744dfe7 Improve file handling in HLS servlet 2020-10-03 18:29:09 +02:00
0xb00bface 1350dce14f Fix BongaCams online check
Fix Bongacams unfollow
2020-10-03 16:14:24 +02:00
0xb00bface 3b3854c488 Fix Streamate followed tab
Also use a preview image instead of the bio pic
2020-10-03 13:59:19 +02:00
0xb00bface 99b21845ab Change post-process return value to boolean 2020-09-30 20:09:52 +02:00
0xb00bface 4823c603a7 Mark FFmpeg log files for deletion on JVM exit 2020-09-30 19:13:11 +02:00
0xb00bface 385a4c53c3 Fix Locale related bug in CreateContactSheet 2020-09-30 16:52:47 +02:00
0xb00bface c88ab395e7 Add contact sheet to recordings associated files 2020-09-30 16:23:09 +02:00
0xb00bface dcd3df5d0c Implement contact sheet creation 2020-09-30 16:16:49 +02:00
0xb00bface ce908bded2 Improve video length detection 2020-09-30 13:29:27 +02:00
0xb00bface 3bf9c5fa26 Fix JSON parsing exception
Sometimes performerData is not available. In this case we assume the
model is offline
2020-09-30 10:52:30 +02:00
0xb00bface 26b73322cc Add migration of old pp settings to new pp steps 2020-09-29 20:50:37 +02:00
0xb00bface bccdf47a2e Add automatic fix for invalid resolution range 2020-09-29 19:16:19 +02:00
0xb00bface 7bb0e8fe5d Fix FFMpeg remux stop for server recordings on windows 2020-09-29 15:39:01 +02:00
0xb00bface 099ccc9399 Remove console output 2020-09-29 13:27:09 +02:00
0xb00bface e4eee063ba Fix Showup downloads
Add cid and pid to the playlist url, which fixes the download
functionality. But downloads now stop after a couple of minutes if you
are not logged in.
2020-09-28 14:34:11 +02:00
0xb00bface 8b6d246732 Merge branch 'pp' into dev 2020-09-27 15:25:49 +02:00
0xb00bface f29ae0eb69 Improve creation of segment URLs 2020-09-27 00:51:53 +02:00
0xb00bface 43cf0a0bc1 Add placeholder for recording notes 2020-09-26 20:19:01 +02:00
0xb00bface 5fa72eaaa0 Add setting to define the download file name 2020-09-26 19:52:09 +02:00
0xb00bface f575958fe9 Fix equals and hashcode
equals and hashcode used the path field, which is empty for old
recordings. Fixed by using getAbsoluteFile() instead
2020-09-26 18:10:16 +02:00
0xb00bface 93deeb3e52 Remove unused postProcessing setting 2020-09-26 17:22:42 +02:00
0xb00bface b8ffdb32ce Change config mock, so that the config dir is in the temp test dir 2020-09-26 17:04:17 +02:00
0xb00bface 4aca861390 Remove unused settings 2020-09-26 16:32:31 +02:00
0xb00bface 6fa6c63c85 Add test for DeleteTooShort pp 2020-09-26 16:07:11 +02:00
0xb00bface 9806badf57 Fix bug in Move pp 2020-09-26 15:14:54 +02:00
0xb00bface 13783140e9 Add test for Copy pp 2020-09-26 14:23:48 +02:00
0xb00bface 02814440d2 Add more tests 2020-09-25 21:09:50 +02:00
0xb00bface 43de2c2620 Add test for DeleteOriginal pp 2020-09-25 19:43:00 +02:00
0xb00bface b2b6a623ef Add more post-processing tests 2020-09-25 00:09:23 +02:00
0xb00bface 87d88b5bcb Add webhook post-processor skeleton 2020-09-24 11:35:55 +02:00
0xb00bface 30021d184d Add DeleteTooShort post-processor 2020-09-24 11:35:37 +02:00
0xb00bface f6afed3717 Add script post-processor 2020-09-23 18:52:30 +02:00
0xb00bface 67ff48e2dc Pass RecordingManager to post-processors 2020-09-22 22:15:28 +02:00
0xb00bface 7b1898072f Make recording single file after remux
Also set the file size to the size of the remuxed one
2020-09-22 20:41:07 +02:00
0xb00bface d23f3fea04 Add test for Rename pp for directories 2020-09-22 17:40:03 +02:00
0xb00bface 4167b222ba Add test for Rename post-processor 2020-09-22 14:58:20 +02:00
0xb00bface e1bce0acf5 Improve handling of the orignal and pp files 2020-09-22 12:38:21 +02:00
0xb00bface fbf1c8ac16 Add check, if source and target are the same 2020-09-20 18:27:26 +02:00
0xb00bface bf39d9a639 Implement proper handling of the orignal and pp files
If a copy is created, the original file is not touched anymore.
Otherwise the original file is used and the post-processing process is not repeatable anymore, or at least the results might get unpredictable
2020-09-20 18:14:24 +02:00
0xb00bface 90192d9b8f Fix server stuff for new recording path handling 2020-09-13 19:54:43 +02:00
0xb00bface 4f526fd13e Store absolute path in metadata file instead of path relative to rec dir 2020-09-13 17:34:58 +02:00
0xb00bface f0713b96f5 Try to terminate FFmpeg before killing it 2020-08-30 13:41:43 +02:00
0xb00bface 4f7d080f56 Add more pp steps 2020-08-30 13:41:03 +02:00
0xb00bface 6b81ef6870 Merge branch 'dev' into pp 2020-08-24 15:18:02 +02:00
0xb00bface d7d3e2944b Extend HlsDownload for MV Live to update the cloudflare cookies regularly 2020-08-24 15:16:45 +02:00
0xb00bface 1034488e94 Make RecorderServlet and RemoteRecorder compatible to new recording
fields
2020-08-24 15:15:34 +02:00
0xb00bface 89fa681a59 Increase log level 2020-08-23 13:38:18 +02:00
0xb00bface bdcf1bee00 Implement Renamer post-processor 2020-08-23 13:37:59 +02:00
0xb00bface c7e39fdd98 Fix MV Live models not showing up as recording
MV Live models with spaces in the name would not show up as recording.
2020-08-23 12:46:24 +02:00
0xb00bface 17a32cd928 Add first configurable PP step 2020-08-22 18:35:54 +02:00
0xb00bface 4f8e7dbca2 Merge branch 'dev' into pp 2020-08-21 19:15:08 +02:00
0xb00bface 337b096568 Fix API calls newer than Java 8 2020-08-21 18:19:59 +02:00
0xb00bface 05837b2fed Reset MFC WS on message parsing exception 2020-08-21 18:09:55 +02:00
0xb00bface 7bb33568cf Add new event for when the disk space is exhausted 2020-08-21 17:09:07 +02:00
0xb00bface 3351a976ae Fix: recording started event was not fired in client/server mode 2020-08-21 15:57:50 +02:00
0xb00bface d20680f228 Fix synchronisation problem between client and server
... for actions pin, unpin and setNote
2020-08-21 15:20:23 +02:00
0xb00bface 063395bc74 Increase log level for update check 2020-08-19 19:17:52 +02:00
0xb00bface 6c0fe83816 Don't stop a recording when setting the "stop at" date 2020-08-19 18:36:50 +02:00
0xb00bface fa3e5fbcaf Fix MFC models changing to other models 2020-08-19 18:25:24 +02:00
0xb00bface 2665d50ee1 Assume unknown show type means ONLINE 2020-08-19 17:53:15 +02:00
0xb00bface da3f0632e2 Set version to 3.9.0 2020-08-19 17:21:48 +02:00
0xb00bface 7e2924d780 Add confirmation dialog for shutdown
Show confirmation dialog when a shutdown is requested and there are
recordings in progress. The user now can decide to shutdown immediately,
shutdown gracefully or leave the app running
2020-08-19 12:45:47 +02:00
0xb00bface 335cdb8cb4 Add createModelFromUrl for MVLive 2020-08-18 20:25:05 +02:00
0xb00bface 096ed7a734 Implement proper online check and add search 2020-08-18 19:58:48 +02:00
0xb00bface 8b4a82d158 Add model name to Download threads 2020-08-18 19:57:53 +02:00
0xb00bface 2455797fb2 Use a different HTTP client for each MVLive download
MVLive only allows recording of mor than one stream, if the recorder looks like different HTTP sessions.
That's why we use a different HTTP client with its own cookie jar for each recording.
2020-08-18 14:39:48 +02:00
0xb00bface 7015c3173f Merge branch 'dev' into manyvids 2020-08-18 10:59:48 +02:00
0xb00bface ab10e9c176 Move recording precondition checks to its own class 2020-08-18 10:44:41 +02:00
0xb00bface e06bfaf88b Change the request to get the room number 2020-08-18 10:19:26 +02:00
0xb00bface 36885900b5 Add regular cloudflare cookie updates
MVLive updates those cookies every 2 minutes. This makes sure, that the streaming continues. IF the cookies are not updated, the stream ends after around 2:30 minutes
2020-08-17 12:19:24 +02:00
0xb00bface db186e65f4 Merge branch 'dev' into manyvids
# Conflicts:
#	common/src/main/java/ctbrec/io/HttpClient.java
2020-08-16 17:00:43 +02:00
0xb00bface 4139e42ce2 Set version to 3.8.6 2020-08-16 14:16:38 +02:00
0xb00bface 792a6c10c8 Revert MFC websocket message parsing change 2020-08-15 17:17:31 +02:00
0xb00bface 5c0d841474 Shut down all recordings simultaneously 2020-08-15 16:09:20 +02:00
0xb00bface 6cfdb59c96 Remove log output 2020-08-15 16:06:47 +02:00
0xb00bface 192e7093d3 Fix Flirt4Free models losing their name 2020-08-15 15:29:21 +02:00
0xb00bface 0e61421537 Fix MFC websocket message parser 2020-08-14 19:16:39 +02:00
0xb00bface a0779c118d Reduce log level again 2020-08-09 14:26:12 +02:00
0xb00bface 0fe16f8ff8 Add setting to disable online check for paused models 2020-08-09 12:27:04 +02:00
0xb00bface c02d9562bf Set version to 3.8.5 2020-08-09 11:05:56 +02:00
0xb00bface ee302e49a4 Distinguish between performer_id and display_name for LiveJasmin models 2020-08-09 11:04:24 +02:00
0xb00bface b6e4bad837 Fixed bug in JSON parsing
Some models wouldn't get recorded, because of a missing element in the
JSON doc
2020-08-08 21:23:38 +02:00
0xb00bface caf329eb23 Change look of the model table in the web interface 2020-08-08 20:11:48 +02:00
0xb00bface e55daa0772 Add GUI and remote support for temporary recordings 2020-08-08 17:51:03 +02:00
0xb00bface 729319dfd2 Add mechanism to record a model only up to a certain timestamp 2020-08-08 15:28:29 +02:00
0xb00bface cbd529d001 Replace wrong username used to retrieve the token balance 2020-08-08 13:37:21 +02:00
0xb00bface 81643545d2 Set version to 3.8.4 2020-07-26 15:42:36 +02:00
0xb00bface 2154aacdbe Fix problem, that downloads wouldn't finish properly
Some downloads couldn't be stopped properly, because they would wait for
segment data to arrive to write to disk indefinitely. We now only wait
for a max of 30 seconds and also cancel all futures, which are waiting
for segment data.
2020-07-26 15:40:03 +02:00
0xb00bface 963f0f0f5f Change order how things are shutdown 2020-07-26 15:14:44 +02:00
0xb00bface d63c98cf36 Fix NPEs in MFCs ServerConfig 2020-07-26 15:14:22 +02:00
0xb00bface 64c6b9aa4f Enable rerun PP for multiple recordings 2020-07-26 11:07:55 +02:00
0xb00bface c80230cee7 Add support for xHamsterLive 2020-07-20 18:44:25 +02:00
0xb00bface bc872b1ed5 Set version to 3.8.3 2020-07-19 18:23:32 +02:00
0xb00bface e50b9bcc71 Close response in onClosed in F4F websocket 2020-07-19 18:23:16 +02:00
0xb00bface 7462d68d7b Add external login dialog for stripchat
This also enables us to support xhamsterlive
2020-07-19 15:17:31 +02:00
0xb00bface 882742ce3b Make MFC client and getOnlineModels more robust 2020-07-18 19:30:24 +02:00
0xb00bface 010c4a04cd Adjust log levels 2020-07-18 19:15:09 +02:00
0xb00bface 7ff731ec88 Fix CamSoda downloads 2020-07-18 19:05:41 +02:00
0xb00bface 6ca0e61f1f Improve exception handling 2020-07-18 19:05:09 +02:00
0xb00bface b1d5d959d4 Add URL to HttpException 2020-07-18 12:48:12 +02:00
0xb00bface c50519be82 Fix CamSoda recordings 2020-07-18 12:48:00 +02:00
0xb00bface 4b2e17d0b1 Fix Cam4 favorites tab 2020-07-16 19:51:14 +02:00
0xb00bface 03b6de626c Fix Streamate
The way to obtains the xsrf token has changed
2020-07-16 18:53:22 +02:00
0xb00bface 3f4973137c Reduce core pool size to 0 for the download thread pool
Most of the time only one thread is used, so we can save resources by
reducing the core pool size
2020-07-16 18:52:34 +02:00
0xboobface 296585463a Don't apply min/max resolution settings, if resolution is unknown 2020-07-12 13:32:06 +02:00
0xboobface ed26228d7b Increase version number to 3.8.2 2020-07-12 13:11:19 +02:00
0xboobface f79b5eddc5 Reduce HTTP connection keep-alive to 1 minute 2020-07-12 12:39:49 +02:00
0xboobface 764119e20a Reduce event bus thread pool size from 10 to 2 2020-07-12 12:37:47 +02:00
0xboobface 59697c600f Reduce global connection pool size from 50 to 20
Also remove the second connectionPool call, which accidentally was left
in and rendered the global connection pool useless
2020-07-12 12:37:03 +02:00
0xboobface 9bb18426a6 Interrupt keep alive thread on reconnect
On reconnect interrupt the current keep alive thread, so that we don't
pile up a bunch keep alive threads, if the there is a problem with the
websocket connection.
2020-07-11 14:15:34 +02:00
0xboobface 6600b0da94 Get the authentication and the stream working 2020-07-10 22:12:28 +02:00
0xboobface ed0f5476b5 Merge branch 'dev' into manyvids 2020-07-10 18:09:26 +02:00
0xboobface 64569f83ab Optimize http client shutdown 2020-07-05 14:07:15 +02:00
0xboobface e7349b2118 Set version to 3.8.1 2020-07-03 19:12:18 +02:00
0xboobface d2c2cb476b Fix MyFreeCams websocket message parsing 2020-07-03 18:56:59 +02:00
0xboobface 09337aa59a Update Java class with newer Java versions 2020-06-30 20:45:24 +02:00
0xboobface 3382c7ff54 Fix initialization of the range slider 2020-06-30 19:40:08 +02:00
0xboobface d3d9662ec5 Add websocket client 2020-06-20 11:17:19 +02:00
0xboobface e6fa97dc15 Add affiliate link 2020-06-14 15:07:58 +02:00
0xboobface 00692f991e Add UI part for MVLive
At the moment only the thumbnail overview is working. More stuff to come...
2020-06-14 15:07:54 +02:00
0xboobface e59de2f70b Add base classes for Manyvids Live 2020-06-14 15:06:17 +02:00
0xboobface ff08fda618 Set default for max resolution to max value 2020-06-14 11:22:26 +02:00
0xboobface 3b5cbfaddf Fix NPE in getHttpHeaderFactory in MyFreeCamsModel 2020-06-14 11:22:01 +02:00
0xboobface 6e25f98b2b Add range slider for the recording resolution 2020-06-13 20:08:25 +02:00
0xboobface 229fc1f432 Add possibility to add notes to recordings 2020-06-13 19:32:00 +02:00
0xboobface 583c4ec722 Implement bandwidth meter for remote recording 2020-06-12 19:18:53 +02:00
0xboobface 43d2676e11 Add HttpHeaderFactory mechanism
Each model can provide its own factory to provide HTTP headers for the
different download requests (playlist, segment playlist, segments)
2020-06-12 18:24:34 +02:00
0xboobface 06029a1331 Code cleanup 2020-06-12 18:22:12 +02:00
0xboobface cd6175a7eb Add BandwidthMeter, which tracks the current bandwidth usage 2020-06-12 18:21:32 +02:00
0xboobface bd48d6bf9c Set version to 3.8.0 2020-06-12 18:10:56 +02:00
0xboobface 0ed6d93d30 Set version to 3.7.3 2020-06-09 19:36:17 +02:00
0xboobface d55f1c04ee Fix MFC websocket communication
The protocol had been changed for the initial login sequence
2020-06-09 19:33:43 +02:00
0xboobface 7e4a6393b0 Set version to 3.7.2 2020-06-07 13:57:15 +02:00
0xboobface acd6126619 Add "New" tab to each site where it was missing 2020-06-07 13:53:54 +02:00
0xboobface fdce3bcec0 Fix chaturbate login check
The check if ctbrec is logged in always returned true because of a
change on the user profile page. ctbrec now uses the user icon to check,
if the user is the anonymous user or a logged in user.
2020-06-07 12:28:08 +02:00
0xboobface c8614d7208 Set version to 3.7.1 2020-05-31 18:44:04 +02:00
0xboobface 1bea13dc05 Improve server download progress calculation 2020-05-31 17:20:25 +02:00
0xboobface b87f090ac3 Add max resolution setting for the player 2020-05-31 14:50:12 +02:00
0xboobface 258334b637 Add setting to remove recordings after post-processing 2020-05-29 19:50:03 +02:00
0xboobface 0858941b50 Fix NPE in MFC client 2020-05-23 16:20:49 +02:00
0xboobface f1a0e5900c Fix createModelFromUrl for Showup and Fc2Live 2020-05-23 16:20:32 +02:00
0xboobface 3958a7b5f1 Reduce log level in getModelList 2020-05-23 13:47:07 +02:00
0xboobface 9eea66d94f Remove the uid field from ShowupModel 2020-05-20 19:37:01 +02:00
0xboobface 9462a31111 Improve detection of stream termination 2020-05-20 19:00:09 +02:00
0xboobface c05785cd20 Improve Showup online detection 2020-05-20 18:18:29 +02:00
0xboobface e096e8555f Fix possible NPE 2020-05-20 18:17:58 +02:00
0xboobface 33a0094b19 Adjust to Stripchat API changes 2020-05-20 18:17:46 +02:00
0xboobface a91923baff Use the small preview image for the thumbnails 2020-05-16 22:45:15 +02:00
0xboobface 66b37b65c0 Set version to 3.7.0 2020-05-16 22:20:06 +02:00
0xboobface 9cd9bdf973 Remove handling for online states private and group
They don't seem to affect the recording of the stream
2020-05-16 22:19:55 +02:00
0xboobface 39c1fd94ba Fix isOnline for SHowupModel 2020-05-16 21:34:39 +02:00
0xboobface 1a5c32167e Preparation for Showup login 2020-05-16 21:30:25 +02:00
0xboobface 6c85a2a493 First working version of Showup.tv 2020-05-16 16:28:44 +02:00
0xboobface bd92c315fb Set version to 3.6.4 2020-05-13 18:46:24 +02:00
0xboobface ef3c036f49 Fix race condition causing orphaned FFmpeg processes
The problem was, that an error occured before FFmpeg was completely
launched. ctbrec called internalStop, but the FFmpeg fields still
pointed to null. ctbrec then finished the recording. In the meantime
FFmpeg fired up and was abandoned by the recording.
2020-05-10 14:58:42 +02:00
0xboobface b820021aee Spawn FFmpeg process only if playlist request was successful 2020-05-10 13:16:47 +02:00
0xboobface e6dae3b2af Set version to 3.6.3 2020-05-10 12:03:32 +02:00
0xboobface 2e4ec80bd8 Reduce visibility of public method 2020-05-10 10:43:53 +02:00
0xboobface 3c4ef05a48 Fix NPE in internalStop 2020-05-10 10:43:37 +02:00
0xboobface cd5172613e Fixed player start for recordings starting with a dash 2020-05-03 15:32:54 +02:00
0xboobface 8cdc2a4a56 Set version to 3.6.2 2020-05-02 14:43:20 +02:00
0xboobface df50646627 Change FFmpeg termination handling again
FFmpeg was killed to early, so that the file encoding was not finished
properly. For example the moov atom was not written for MP4 files. We
now wait at most 5 minutes for FFmpeg to finish and only kill it then
with force.
2020-05-02 12:45:15 +02:00
0xboobface b402bb0df7 Set version to 3.6.1 2020-04-28 22:07:38 +02:00
0xboobface a0d9835192 Fix streamate stream source parsing 2020-04-28 22:05:06 +02:00
0xboobface d78f96fef6 Improve handling of recording termination
This change hopefully helps to terminate FFmpeg reliably once a
recording terminates.
2020-04-25 15:42:41 +02:00
0xboobface 3c86310edf Add stream source "Origin" 2020-04-23 19:28:12 +02:00
0xboobface a30d4ed463 Change data type of all Integer fields to String 2020-04-18 19:51:40 +02:00
0xboobface 0c7650f94f Remove retry loop in getNextSegments
This might cause blocks by MFC because we are asking for a resource,
which is not available.
2020-04-18 19:50:42 +02:00
0xboobface a37a018159 Remove outdated settings for MFC 2020-04-13 19:43:33 +02:00
0xboobface aa42e82153 Set version to 3.6.0 2020-04-13 18:53:29 +02:00
0xboobface e5a9c468eb Remove "(broken)" from MFC's title 2020-04-13 18:52:29 +02:00
0xboobface ae6fa229e7 Add user-agent agent header to every http request in MFC classes 2020-04-13 18:42:57 +02:00
0xboobface 970b9ab574 Fix follow/unfollow for BongaCams 2020-03-28 13:07:54 +01:00
0xboobface 915be1d4fc Save column order in tables 2020-03-22 13:54:31 +01:00
0xboobface 243d2757b0 Set version to 3.5.0 2020-03-19 15:01:34 +01:00
0xboobface 13da583483 Revert refresh of segment playlist url 2020-03-19 15:00:23 +01:00
0xboobface d716354dc1 Add config setting for the number post-processing threads 2020-03-17 20:20:11 +01:00
0xboobface ff9ff8f40f Add dialog to specify media player params in the settings 2020-03-16 20:51:09 +01:00
0xboobface 6f57579041 Add pinning for recordings
Recordings can now be set to pinned. Pinned recordings cannot be
deleted.
2020-03-16 16:10:09 +01:00
ctbrec-contrib-01 e333722522 Improve directory size update performance
Use NIO Files.walkFileTree() instead of IO File.ListFiles() API.
Speed improvement was ~6.1s -> ~4.4s on my recordings list.

TODO: implement more intelligent refresh.
2020-03-03 19:53:29 +01:00
0xboobface 2eb1b17513 Change cookie name of the sorting settings 2020-03-02 20:45:24 +01:00
0xboobface 2f013bc870 Change BongaCams online check 2020-02-29 18:30:57 +01:00
0xboobface 3636d34d22 Set version to 3.4.0 2020-02-27 20:59:53 +01:00
0xboobface 46bd8667c8 Separate site name and displayed title 2020-02-26 21:40:58 +01:00
0xboobface 8cafc7124f Add search for Stripchat 2020-02-23 19:36:14 +01:00
0xboobface e4b9da7685 First working implementation for Stripchat 2020-02-23 18:47:37 +01:00
0xboobface 4dcf9944f8 Set version to 3.3.0 2020-02-22 17:57:03 +01:00
0xboobface 71be9b3665 Improve support for server-side single files 2020-02-22 17:40:22 +01:00
0xboobface 351066e869 Add comment 2020-02-22 14:35:04 +01:00
0xboobface bc929cc6e1 Switch to MergedFfmpegHlsDownload 2020-02-22 14:33:51 +01:00
0xboobface 4f9c1606fc Fix download of recordings 2020-02-22 14:26:50 +01:00
0xboobface 4ebc847720 Use MergedFfmpegHlsDownload for merged HLS downloads 2020-02-22 13:27:17 +01:00
0xboobface 1e95872cb7 Disguise FFmpeg as normal browser 2020-02-22 12:38:28 +01:00
0xboobface f98d442096 Implement custom command line parameters and clean shutdown 2020-02-22 12:19:32 +01:00
0xboobface d2f490f8f6 Add FFmpeg downloaders 2020-02-22 11:20:10 +01:00
0xboobface e98a3bc7c2 Set version to 3.2.1 2020-02-16 17:04:46 +01:00
0xboobface 110fc2a6bf Fix LiveJasmin HD recordings 2020-02-16 15:18:38 +01:00
0xboobface b18a32ede3 Fix LiveJasmin followed tab 2020-02-16 13:28:33 +01:00
0xboobface 9a4461a0d1 Set version to 3.2.0 2020-02-01 10:03:56 +01:00
0xboobface 316d2a7e22 Fix loading of the Streamate model ID 2020-01-31 19:50:17 +01:00
0xboobface 741072b1f0 Rename site to MyFreeCams (broken) 2020-01-26 19:18:30 +01:00
0xboobface 18669a9c43 Fix Streamate
Streamate introduced a CSRF token, which has to be sent in the HTTP
header.
2020-01-26 18:33:13 +01:00
0xboobface 3cf6038da0 Don't kill the ws in the keep-alive thread, if it is establishing a
connection
2020-01-11 13:20:49 +01:00
0xboobface b66989fe85 Set version to 3.1.0 2020-01-11 11:30:02 +01:00
0xboobface 3bb161c055 Add columns "last recorded" and "last seen" to models table 2020-01-05 16:02:22 +01:00
0xboobface 9037b525bd Code cleanup 2020-01-04 16:13:03 +01:00
0xboobface 242897719b Sort models by prio before online check 2020-01-04 15:59:11 +01:00
0xboobface d82c3b490b Implement recording priorities for RemoteRecorder 2020-01-04 15:30:54 +01:00
0xboobface 5448763b9d Fix possible NPE 2020-01-03 21:53:37 +01:00
0xboobface 4d6e74562c Add recording priority for models
Models with high priority will be favored over models with low priority.
Recordings for models with low priority might even get stopped to free
up a slot for a model with a higher priority
2020-01-03 19:06:05 +01:00
0xboobface 808810b6d6 Set version to 3.0.4 2020-01-03 12:43:07 +01:00
0xboobface b12f3e5789 Add setting to switch between DASH and HLS for MFC 2020-01-03 12:27:06 +01:00
0xboobface d8e78bb910 Add null check 2019-12-31 12:53:12 +01:00
0xboobface 643650d69e Change log level 2019-12-30 18:54:47 +01:00
0xboobface c767d14aa9 Use one global connection pool for all http clients 2019-12-30 18:49:50 +01:00
0xboobface 52bc8a6b64 Check the online state of models in parallel
For each site a SingleThreadExecutor is used to check the online state
of the site's models in series. These SingleThreadExecutors run in
parallel to speed the online check up.
2019-12-30 18:30:31 +01:00
0xboobface 24cb3ecf99 Use HLS streaming for MFC models again 2019-12-30 16:15:47 +01:00
0xboobface 499708ffcf Set version to 3.0.3 2019-12-30 14:52:04 +01:00
0xboobface 5ac4241886 Improve logging 2019-12-30 11:59:53 +01:00
0xboobface 5ecad75b0d Wait for stdout and stderr log threads to finish 2019-12-29 22:04:50 +01:00
0xboobface b37178170b Improve logging 2019-12-29 20:50:34 +01:00
0xboobface e0f494d6da Improve recording download from server 2019-12-29 15:39:44 +01:00
0xboobface 8596b1e6e1 Fix log statement, which prevent getMasterPlaylist form working 2019-12-29 15:07:09 +01:00
0xboobface 16dfc07a8e Use AtomicBoolen to indicate, if a download has finished 2019-12-29 14:29:36 +01:00
0xboobface 85bacb8c04 Remove recordings, which fail immediately after starting 2019-12-28 19:58:04 +01:00
0xboobface e333175ecb Fix stream URL for wowza HLS streaming 2019-12-28 19:54:55 +01:00
0xboobface a9d87bfd99 Code cleanup 2019-12-28 19:54:04 +01:00
0xboobface 672d7c23ec Stop immediately, if the manifest download fails and the model is
offline
2019-12-28 19:51:59 +01:00
0xboobface 678a6e5513 Remove redundant log message 2019-12-28 19:50:58 +01:00
0xboobface d820d611f1 Try to update the segment playlist URL, if loading the playlist fails 2019-12-28 16:59:20 +01:00
0xboobface 0fe466bc1a Don't catch exceptions in generatePlaylist 2019-12-28 16:58:43 +01:00
0xboobface a3dee454a5 Write the output of FFmpeg to a log file in the segment directory 2019-12-28 16:57:55 +01:00
0xboobface 2da3d64ac8 Make Model and Download serializable 2019-12-28 16:57:11 +01:00
0xboobface a165a83dca If a recording does not exist, show n/a for its size 2019-12-28 16:56:18 +01:00
0xboobface 6fcbdab174 Reset state to WAITING for FAILED, PP and GENERATING_PLAYLIST on start 2019-12-28 15:42:45 +01:00
0xboobface a59313df49 Code cleanup 2019-12-28 15:38:33 +01:00
0xboobface d742756413 Combine recordings and model locks to one lock
Using 2 locks caused deadlocks.
2019-12-27 23:35:49 +01:00
0xboobface 296396f2d3 Set version to 3.0.2 2019-12-27 15:17:53 +01:00
0xboobface 87b0ce0d21 Use constants from HttpConstants 2019-12-27 15:14:55 +01:00
0xboobface b91bfdc353 Introduce new HttpConstants class for header constants etc 2019-12-27 14:27:10 +01:00
0xboobface 4f852bd5f3 Create a temporary directory for HLS downloads
Create a temporary download directory similar to DASH downloads
2019-12-27 14:26:48 +01:00
0xboobface e8fccb327a Determine the movie's length from the MP4 file
Use the time spent recording the stream as a fallback
2019-12-27 14:21:09 +01:00
0xboobface da4c1bda2c Change log levels of some log messages 2019-12-27 14:02:33 +01:00
0xboobface b72777f6fb Code cleanup 2019-12-27 13:51:48 +01:00
0xboobface f3a13a6f06 Fix CamSoda downloads
Some models now have a different stream URL. ctbrec has to distiguish
between the old and the new URLs
2019-12-27 13:51:28 +01:00
0xboobface 33c7c6606d Improve playlist loading for Cam4Model
Also improve isOnline to take into account, if a playlist url is
available or not
2019-12-26 23:44:26 +01:00
0xboobface 55760a1b7d Fix log messages 2019-12-26 23:43:32 +01:00
0xboobface df3e87f1dd Add loop to get manifest for retries
Try to download the manifest 10 times with a little break in between
before giving up causing the download to terminate
2019-12-26 22:19:25 +01:00
0xboobface c2901284ef Improve error handling in downloads 2019-12-26 21:47:03 +01:00
0xboobface c774a29421 Improve error handling for loading the master playlist for Cam4Models 2019-12-26 21:46:57 +01:00
0xboobface 5b2ddfb825 Fix NPE in MergedHlsDownload 2019-12-26 21:46:50 +01:00
0xboobface d48498e715 Change PlaylistGenerator.genertate to not return null
Instead an exception is thrown, if something goes wrong
2019-12-26 21:46:46 +01:00
0xboobface a33d3045c1 Improve segment download retry code 2019-12-26 21:46:37 +01:00
0xboobface 6cc8fd9cc2 Fix post-processing timestamp problems 2019-12-26 21:46:33 +01:00
0xboobface b8cdb2200e Remove mpegts library 2019-12-26 21:46:27 +01:00
0xboobface 67c69e3c1b Fix call of user defined pp script 2019-12-26 21:46:18 +01:00
0xboobface 8dfc4c775f Add post-processing support to the DashDownload 2019-12-26 21:46:15 +01:00
0xboobface a018b15384 Improve DashDownload handling of init segments
After an init segment has been downloaded, check, if exists and is not empty before
setting the booleans to true, which determine, that the files have been loaded
2019-12-26 21:46:12 +01:00
0xboobface 33c298d558 Set version to 3.0.1 2019-12-26 21:46:06 +01:00
0xboobface 2973dd2e6d Code cleanup 2019-12-26 21:45:53 +01:00
0xboobface da28d02da8 Implement getLength in MergedHlsDownload with jcodec 2019-12-26 21:45:43 +01:00
0xboobface 66525de4ea Run FFmpeg in the segments directory of HLS downloads 2019-12-26 21:45:29 +01:00
0xboobface 5b9b91d6e8 Add try-with-resources blocks to free up the HLS playlist file handle 2019-12-26 21:45:22 +01:00
0xboobface 5d2d5145b9 Remove dependency to isoparser library 2019-12-22 11:14:33 +01:00
0xboobface f91a0d27eb Improve exception handling
Change exception handling so that failed post-processing causes the
recording to have the state "failed"
2019-12-21 22:04:59 +01:00
0xboobface 2fb2c932aa Fix "rerun pp" for MFC dash downloads 2019-12-21 18:59:31 +01:00
0xboobface bdf7d99ef3 Fix handling of recording structure 2019-12-21 17:04:27 +01:00
0xboobface a4b805c038 Set version to 3.0.0 2019-12-21 14:33:45 +01:00
0xboobface 4eeb101cbb Fix recording downloads from server to client 2019-12-21 14:30:57 +01:00
0xboobface e37c869695 Merge branch 'dev' into mp4-streaming 2019-12-17 21:27:16 +01:00
0xboobface e734d46e9c Add gitattributes and run initial normalization 2019-12-17 21:13:18 +01:00
0xboobface b9f463d0dd Bump version to 2.3.0 2019-12-08 19:04:22 +01:00
0xboobface 034fe81081 Use FFmpeg to merge HLS segments 2019-12-07 16:58:56 +01:00
0xboobface 32d7a788e0 Add faststart argument to FFmpeg cmdline 2019-12-07 16:58:11 +01:00
0xboobface 1c64b82deb Add providers for MFC streams sources
Since MFC uses different streaming technologies, the stream sources have
to be determined differently. This is now done in dedicated
StreamSourceProvider classes.
2019-12-07 12:00:05 +01:00
0xboobface 26bf26de0a Fix some code smells 2019-12-06 20:20:50 +01:00
0xboobface 00ea43c8b3 Move HLS related classes ot own package 2019-11-30 16:40:01 +01:00
0xboobface 40c910bd5c Add JAXB domain classes for MPEG-DASH manifests 2019-11-30 16:37:39 +01:00
0xboobface f23c33d30a Move HLS related classes to own package 2019-11-30 16:36:45 +01:00
0xboobface 43dfc4e59c Set versions in maven POMs 2019-11-23 17:14:44 +01:00
0xboobface 011e8c2f29 Improve thread interrupt and lock handling 2019-11-23 17:13:27 +01:00
0xboobface 8935dd8185 Be a bit more relaxed with deleting recordings 2019-08-16 19:34:07 +02:00
0xboobface 372fce2899 Update the RunningTheServer page 2019-08-10 20:24:27 +02:00
0xboobface 7c29bba16e Set version to 2.2.0 2019-08-10 18:25:40 +02:00
0xboobface f12a20a15e Add support for TLS and changing the context path 2019-08-10 17:45:13 +02:00
0xboobface bb02b5fd9f Add HMAC support to the webinterface
The webinterface didn't work, if HMAC authentication was enabled.
To make this work, the webinterface downloads the HMAC from the
server and stores it in the local storage of the browser. The
download URL is secured by Basic Auth. The credentials are configured
in the server.json
2019-08-04 12:51:13 +02:00
0xboobface 8450ddd98c Increase version to 2.1.0 2019-07-27 18:27:54 +02:00
0xboobface bc724b2f42 Add setting to switch on/off the server webinterface 2019-07-27 17:55:42 +02:00
0xboobface 1e5eff780c Add input field to add models by URL 2019-07-27 16:53:26 +02:00
0xboobface 2131b596cb Make loading of recording meta data more robust 2019-07-21 11:23:10 +02:00
0xboobface e39ff8d7d4 Make sure, the metadata file is set before other operations 2019-07-21 10:48:12 +02:00
0xboobface d798069a71 Handle models with unknown site
Make sure, the recorder does not crash, if a model with unknown site
exists in the condif
2019-07-21 10:46:19 +02:00
0xboobface 1db79541ff Add web interface for the server 2019-07-21 10:39:00 +02:00
0xboobface d56f2a1bc1 Handle BOM properly in config file 2019-07-19 19:15:38 +02:00
0xboobface ddbd8de900 Fix Flirt4Free thumb overviews and recording 2019-06-08 10:34:44 +02:00
0xboobface ca17d4758c Increase version to 2.0.1 2019-06-07 21:24:12 +02:00
0xboobface 60aaacc294 Make sure that the recordingsDir path doesn't end with a / 2019-06-07 21:23:37 +02:00
0xboobface 645f0b8231 Hopefully fixed some deadlocks 2019-06-03 21:16:35 +02:00
0xboobface b136fce0db Add menu entry to rerun the post-processing script
In client/server mode this will trigger the playlist generation and
post-processing. In standalone mode only the post-processing will be
executed.
2019-06-02 19:53:25 +02:00
0xboobface da486bbf4a Make recorder and RecordingManager thread-safe 2019-06-02 16:51:42 +02:00
0xboobface f2cae6a312 Fix model online check for BongaCams 2019-06-02 16:51:07 +02:00
0xboobface 43cfea36de Wait a few seconds after a problem (404,403) with the HLS playlist occured 2019-06-01 17:27:59 +02:00
0xboobface 25770111da Delete recordings, which have a size of 0 2019-06-01 17:27:16 +02:00
0xboobface c0167155f3 Automatically delete empty recordings 2019-06-01 16:35:57 +02:00
0xboobface 501f685626 Remove debug output 2019-06-01 16:12:36 +02:00
0xboobface ebe9d0cf5e Fix remaining problems with remote recording 2019-06-01 15:33:47 +02:00
0xboobface 9302dffd7f Set version to 2.0.0 2019-06-01 15:32:47 +02:00
0xboobface f11fcf7ca1 Rewrite recording code for remote recording 2019-06-01 12:12:46 +02:00
0xboobface 0f3d0b6337 Rewrite recording code for local recording
Remote recording is TBD
2019-05-31 20:00:07 +02:00
0xboobface f7ac97c683 Implement interface changes 2019-05-11 15:12:48 +02:00
0xboobface ca8e0a269e Remove caches from Chaturbate code
- Remove caches from the Chaturbate class
- Move all model related code from Chaturbate to ChaturbateModel
- Use a User-Agent string in all HTTP requests
2019-05-11 15:10:42 +02:00
0xboobface 35c8378d88 Add mechanism to restrict the number of requests
Flirt4Free is finnicky with the amount of requests you can do. So we use
a mechanism to only allow 2 requests at a time and a cooldown of 500 ms
between requests.
2019-05-11 15:03:15 +02:00
0xboobface 6c9bff56fc Revert "Remove online check for currently running recordings"
This reverts commit e4ab0873bc.
2019-05-11 13:31:09 +02:00
0xboobface 77fa7eba40 Don't start recordings, if the recorder has been shut down 2019-04-21 16:11:03 +02:00
0xboobface ee3ae3ef43 Add logging for unexpected errors 2019-04-21 15:05:13 +02:00
0xboobface 1b129ebd41 Add suffix parameter to getFileForRecording
This allows different download types to support different file types
2019-04-21 12:42:48 +02:00
0xboobface 0b7eeca5f7 Fix: Post-Processing for split recordings 2019-04-20 22:01:53 +02:00
0xboobface c1bbce7bcd Move UnknownModel to its own class 2019-04-20 21:49:23 +02:00
0xboobface 33c4468d1b Merge branch 'master' into dev 2019-04-20 16:06:17 +02:00
0xboobface f4b7141a63 Increase version to 1.21.1 2019-04-20 16:03:04 +02:00
0xboobface c17fe9c173 Fix: Check for empty playlists used the wrong tag
Use #EXTINF to check, if a playlist has entries instead of #EXT-X-STREAM-INF, which was accidentally used.
This tag only occurs in master playlists.
2019-04-20 15:54:54 +02:00
0xboobface 133afc2475 Merge branch pprefactor 2019-04-20 15:24:43 +02:00
0xboobface 85411fea2e Handle empty playlists more gracefully
Check, if a playlist is empty, before parsing it with open-m3u8. If it
is empty, return an empty SegmentPlaylist instead of throwing a
ParseException
2019-04-20 14:39:44 +02:00
0xboobface b854455f8a Increase version to 1.21.0 2019-04-20 14:27:01 +02:00
0xboobface f170ce2b07 Improve logging 2019-04-20 14:26:31 +02:00
0xboobface 3cd341d88e Set affiliate link 2019-04-20 12:50:27 +02:00
0xboobface 6e6597d372 Move post-processing from LocalRecorder to Download 2019-04-20 11:49:41 +02:00
0xboobface 4bc92a9dda Remove debug output 2019-04-18 20:21:09 +02:00
0xboobface 2d048369a1 Fix JSON exception in isOnline 2019-04-17 14:37:47 +02:00
0xboobface 204eb99b29 Implement follow/unfollow for Flirt4Free 2019-04-16 19:51:57 +02:00
0xboobface 8f5c7ac9c4 Implement login and token balance 2019-04-15 19:17:41 +02:00
0xboobface 50c38d16a7 Implement login for Flirt4Free 2019-04-15 19:16:04 +02:00
0xboobface 8910dd8c4a Sort fields in Settings by name 2019-04-15 18:19:34 +02:00
0xboobface 1700eeecf5 Implement search for Flirt4Free 2019-04-15 17:42:20 +02:00
0xboobface 94460d1e94 Implement "add by name" and "add by url" 2019-04-15 16:39:09 +02:00
0xboobface f1d11c07b5 Merge branch 'dev' into flirt4free 2019-04-15 16:02:35 +02:00
0xboobface 8eb5f3f33d Set version to 1.20.0 2019-04-14 20:38:32 +02:00
0xboobface 15bfe0f44f Add basic functionality for Flirt4Free 2019-04-12 21:57:53 +02:00
0xboobface e4ab0873bc Remove online check for currently running recordings
For models, which are currently recorded, a online check is not
necessary. INstead we can assume, that the model is online and continue
with the next one
2019-04-12 21:57:32 +02:00
0xboobface ca2ceb7f43 Add support for HLS AES encryption 2019-04-12 19:33:18 +02:00
0xboobface 6c6fadd742 Set isOnline to false, of the model is not online 2019-04-10 14:36:24 +02:00
0xboobface 601669fdd6 Added menu entry to ignore models
Ignored models are not displayed in the thumb overview tab. This is
useful, if you don't like a model and want to get rid of it for good
2019-04-07 18:43:06 +02:00
0xboobface 458e05d2b4 Add notes column to recorded models tab 2019-04-07 18:11:27 +02:00
0xboobface 2a74761c54 Make sure the playlist is not empty when checking the online state 2019-04-07 12:03:00 +02:00
0xboobface 38d65c4b7d Remove test class 2019-04-04 19:11:03 +02:00
0xboobface 73221ce881 Set version to 1.19.1 2019-04-04 19:00:49 +02:00
0xboobface 3e4ad5272b Replace deprecated calls 2019-04-04 18:58:45 +02:00
0xboobface 7ffa41944c Fix online check for BongaCams
The online check now consists of three steps: 1. check, if the model's
state is online on its profile page. 2. check, if the room status is
public with getRoomData 3. check, if the stream playlist is available
2019-04-04 18:07:19 +02:00
0xboobface 335233f473 Replace EvictingQueue with own implementation
For some unknown reason the EvictingQueue didn't evict or evicted only
partially. Nevertheless it caused an OutOfMemoryError.
2019-03-21 14:51:52 +01:00
0xboobface 1dd432dbd9 Add base URL setting for Bongacams 2019-03-05 17:01:42 +01:00
0xboobface a249be01c7 Fix: Adjust Streamate search code to new JSON format
Streamate has changed the JSON response for the search. This change
adjusts our code to handle that new format.
2019-02-22 13:42:44 +01:00
0xboobface 37fc341767 Remove debug log 2019-02-20 13:47:34 +01:00
0xboobface 6dbdac6df5 Fix json exception in online check for BongaCams 2019-02-20 13:44:56 +01:00
0xboobface 14b2911651 Increase version to 1.19.0 2019-02-19 18:57:40 +01:00
0xboobface 11f0dfde00 Added comment for PP improvements 2019-02-19 18:53:33 +01:00
0xboobface e1eeb830da Add getSanitizedName to Model
This method provides returns a name, which is safe to use with
filesystem I/O. Fc2Model returns the model ID for this.
2019-02-19 15:28:52 +01:00
0xboobface 75a625bbe0 Improve deleteIfTooShort method
If a directory does not exist, it returns true. If the directory is
empty, it deletes the directory and empty parent directories and returns
true.
2019-02-13 22:07:34 +01:00
0xboobface 27dac97384 Improve handling of postprocessing 2019-02-13 12:24:04 +01:00
0xboobface 351560079b Add concurrent recordings setting to settings tab 2019-02-05 15:25:56 +01:00
0xboobface 097fb251cb Add getCurrentlyRecording to recorder
This method returns the models, which are currently recorded. It is
implemented as default method, so that LocalRecorder and RemoteRecorder
don't have to implement the same logic.
2019-02-05 15:07:56 +01:00
0xboobface 76f4583ebc Rename Recorder.isRecording to Recorder.isTracked 2019-02-05 14:45:44 +01:00
0xboobface 198a9c6893 Rename Recorder.getModelsRecording to Recorder.getModels 2019-02-05 14:44:21 +01:00
0xboobface 2dd8100a97 Add setting to limit the number of concurrent active recordings 2019-02-05 14:41:31 +01:00
0xboobface 39679f3162 Improve exception handling and logging for the playlist generation 2019-02-05 13:38:09 +01:00
0xboobface 80e577db7c Add menu entry to regenerate the playlist 2019-01-31 15:07:42 +01:00
0xboobface 6e58dd6be5 Implement follow/unfollow for BongaCams 2019-01-29 16:28:07 +01:00
0xboobface 4f541c0570 Increased version to 1.18.0 2019-01-29 14:25:54 +01:00
0xboobface e7feaad11c Merge branch 'dev' into fc2 2019-01-29 13:05:43 +01:00
0xboobface 2fe6ec0e8f Fix #156
Make sure, that the tray icon is created only once. Also move the
notification methods from OS to DesktopIntegration.
2019-01-28 17:26:53 +01:00
0xboobface 9f13a54eb6 Remove misleading log message 2019-01-28 16:20:07 +01:00
0xboobface 8e2abd2f11 Implement createModelFromUrl for FC2Live 2019-01-28 14:44:45 +01:00
0xboobface 626d13f87a Implement createModelFromUrl 2019-01-28 13:32:42 +01:00
0xboobface df38ed3027 Sanitize name before creeating a model object
Names can contain '/' on FC2Live, which messes with the directory
structure of recordings
2019-01-27 15:18:19 +01:00
0xboobface ba0c456f19 Reduce log level for FC2Live websocket messages to TRACE 2019-01-27 15:17:30 +01:00
0xboobface 76c5c2e6c6 Remove log message 2019-01-27 14:10:45 +01:00
0xboobface 70a9d65e48 Fix login for FC2Live
FC2Live sends cookies with value "deleted" to invalidate previously set values. In the same request
they send new values, too. That confused OkHttp. We now use a custom cookie jar for FC2Live, which
ignores cookies with the value "deleted"
2019-01-27 14:05:45 +01:00
0xboobface 0f51be96c0 Implement FC2Live downloads for the server 2019-01-24 20:24:09 +01:00
0xboobface 16752b892c Merge branch 'dev' into fc2
# Conflicts:
#	common/src/main/java/ctbrec/sites/jasmin/LiveJasminHttpClient.java
2019-01-24 19:16:52 +01:00
0xboobface a91819c2ca Extend the recording name to include seconds and milliseconds
This is necessary, because there are models, who stream on different
sites with the same name as mentioned in #141. In that case it can
happen that a recording for each site would be started within the same
minute and one recording would overwrite the other.
2019-01-24 19:00:02 +01:00
0xboobface 2c67b0b75c Merge branch 'jasmin' into dev 2019-01-24 15:52:38 +01:00
0xboobface aa093c0ec1 Delete all LiveJasmin cookies, if we are guests 2019-01-24 15:47:26 +01:00
0xboobface 0417fd6bfb Remove guest session cookies on start for LiveJasmin 2019-01-24 15:41:47 +01:00
0xboobface beeaca4beb Implement login and follow/unfollow 2019-01-24 15:24:05 +01:00
0xboobface 6bb6637683 Remove guest session cookies on start for LiveJasmin 2019-01-23 18:27:34 +01:00
0xboobface 16fdee2a2c Merge branch 'dev' into fc2
# Conflicts:
#	client/src/main/java/ctbrec/ui/ExternalBrowser.java
2019-01-23 17:56:20 +01:00
0xboobface e8572434a9 Set version to 1.17.1 2019-01-23 17:41:03 +01:00
0xboobface 44bc5d02aa Add setting to change the base URL for LiveJasmin
This setting is for users, which are blocked for the main domain, like
users behind the great chinese wall.
2019-01-23 16:25:02 +01:00
0xboobface 9bfd15b35e Use a different way to retrieve the master playlist
@M1h43ly posted URLs in #153, which work without being logged in and
even seem to support HD streams much better.
2019-01-23 16:22:36 +01:00
0xboobface c8ffdbe616 Send heartbeat every now and again
The heartbeat has to sent every now and again to keep the stream going.
Otherwise you will get a 403 after a few minutes when trying to access
the playlist.
2019-01-23 14:14:14 +01:00
0xboobface 19afa9ce79 Remove Fc2WebSocketClient
This is now handled in Fc2Model
2019-01-23 14:12:01 +01:00
0xboobface 64c82748dc Count the websocket uses wth AtomicInteger 2019-01-22 22:42:46 +01:00
0xboobface fc6aeff94a Implemt special player handling for fc2live 2019-01-21 17:58:59 +01:00
0xboobface 55fc6729f8 Merge branch 'dev' into fc2
# Conflicts:
#	client/src/main/java/ctbrec/ui/CamrecApplication.java
#	client/src/main/java/ctbrec/ui/SiteUiFactory.java
2019-01-20 13:51:04 +01:00
0xboobface 43ef2bdf67 Add setting to disable playlist generation on the server
Implementing #142.
This has feature has the disadvantage, that the recording is always detected as still
recording, because the finished state is assumed by the existence of the playlist file.
2019-01-20 13:35:44 +01:00
0xboobface 11f2a3ef8d Increase version to 1.17.0 2019-01-19 16:06:50 +01:00
0xboobface ce839ee222 Implemented tipping for LiveJasmin
Add new class, which opens a chat websocket (relay server) and sends a tip message
2019-01-18 18:57:16 +01:00
0xboobface 86f086eb20 Create specialized HLS downloads for server and client 2019-01-18 16:32:47 +01:00
0xboobface df47f4ba91 Add specialized HLS server download for LiveJasmin
The server-side HLS download has to refresh the master playlist URL like
the merged HLS donwload
2019-01-18 16:31:32 +01:00
0xboobface 3e4483aabd Print out master playlist URL for LiveJasmin 2019-01-17 10:53:37 +01:00
0xboobface dd2b8041d7 Add some text to explain, that LiveJasmin is not fully functional 2019-01-15 17:10:56 +01:00
0xboobface ffcdb84714 Disable tipping for the time being 2019-01-15 17:10:30 +01:00
0xboobface 07e0eb005b Create recordings dir, if it does not exist in getRecordingsFileStore 2019-01-11 15:35:01 +01:00
0xboobface f24959b76e Switch token data type to double
LiveJasmin and maybe other sites use a more currency like token system
2019-01-10 14:22:26 +01:00
0xboobface bf6b715642 Login every 30 min to LiveJasmin so that the session does not expire 2019-01-09 20:35:31 +01:00
0xboobface 196b82dfa3 Consider empty recordings as too short 2019-01-09 20:34:52 +01:00
0xboobface 45df31eb15 Properly end websocket download
End the websocket download if a model changes state from online. Also
properly close both sockets and set isAlive to false, if the download is
closed or fails
2019-01-09 20:34:25 +01:00
0xboobface 4516b8d787 Fix parsing of model name for recordings 2019-01-09 15:11:18 +01:00
0xboobface dc946e407f Merge branch 'dev' into jasmin 2019-01-08 14:33:16 +01:00
0xboobface a6709bd6db Introduce external browser for logins
Since the JavaFX integrated browser does not work reliably for recaptcha and in general does not behave like standard browsers, I now use an external browser for the logins. The dependency to javafx-web has been removed.

The external browser is based on electron, which uses chromium as internal browser. The implementation can be found at https://github.com/0xboobface/ctbrec-minimal-browser

The browser is a minimal browser, which only shows the web page content without any other controls. It is launched by ctbrec in a new process and remote controlled over a socket connection. I first tried to control it via
stdin/stdout, but it turns out, that stdin is not supported by electron on windows.
2019-01-08 14:26:22 +01:00
0xboobface 3ab4ef785b Remove liveJasminSession 2018-12-25 18:05:00 +01:00
0xboobface 7483c8505a Merge branch 'dev' into fc2 2018-12-23 13:58:50 +01:00
0xboobface 154a78660f Add comment with URL for token balance 2018-12-23 13:57:44 +01:00
0xboobface e66b75848f Add download for the chunked http mp4 stream 2018-12-23 13:57:25 +01:00
0xboobface b8d9f4bc19 Implement search for livejasmin 2018-12-22 22:33:01 +01:00
0xboobface c364250440 Add follow / unfollow for livejasmin 2018-12-22 20:53:41 +01:00
0xboobface 2425a9dc60 Add websocket download
This is the first version with working downloads for SD and HD. These
dowloads only work, if you are logged in. So at the moment you have to set the
session ID in the settings to make this work. The session ID can be copied
from a valid session in a browser.
2018-12-22 19:44:45 +01:00
0xboobface db5b6bdf5b Add a setting for the thumbnail overview update interval
Implements #123
2018-12-19 13:37:31 +01:00
0xboobface 4f3fd8a677 Add classes for LiveJasmin 2018-12-19 12:57:44 +01:00
0xboobface 2f09b1d517 Add own download class to manage the websocket connection 2018-12-18 13:18:49 +01:00
0xboobface 44b8deb27d Map state connected to AWAY 2018-12-18 12:39:26 +01:00
0xboobface 0c35f4c219 Merge branch 'dev' into fc2 2018-12-17 23:01:21 +01:00
0xboobface 32807a2fde Let models create their download
Add createDownload to Model. This method is called by the recorder to create
and then start a download. It is a method of Model so that each site and
each download can create a specialized download.
2018-12-17 22:06:13 +01:00
0xboobface ad71f0cf11 Make sure to not download segments multiple times
For some reason streamate playlists can go back in time. This change
makes sure, that we don't download segments multiple times as a
consequence of the time travelling ;)
2018-12-17 19:04:57 +01:00
0xboobface 6dd7de9762 Fix: BongaCams search fails with JSON exceptions 2018-12-17 18:10:55 +01:00
0xboobface 2a1dc77a89 Increase version number to 1.16.0 2018-12-17 17:53:53 +01:00
0xboobface b473782b92 Don't list recordings, which currently get deleted 2018-12-17 17:38:55 +01:00
0xboobface eedb237923 Make sure, that the model ID is set 2018-12-17 17:22:21 +01:00
0xboobface 8a8327a2a5 If loading site specific fails, print out the model name 2018-12-17 17:13:54 +01:00
0xboobface 9958e04ef8 Make sure, that the model ID is set
When a Streamate model is added by URL, make sure, that the ID is
loaded, so that saving and loading works properly, since the ID is saved
as site specific data.
2018-12-17 17:13:15 +01:00
0xboobface e362980028 Make live previews experimental
Add a setting to toggle live previews. When switched off, the thumbnails
won't show the trigger and the recording table won't show the column.
I did this, because the MediaPlayer sometimes bugs out. It then opens a
lot of connections and further tries to open a stream end in an
exception in the playlist parser.
2018-12-17 17:11:45 +01:00
0xboobface a0a083aaf6 Merge branch 'dev' into fc2
# Conflicts:
#	common/src/main/java/ctbrec/io/HttpClient.java
2018-12-17 13:05:11 +01:00
0xboobface d1cf6a681b Remove outdated comment 2018-12-16 20:31:09 +01:00
0xboobface 1e47432714 Add origin stream source only, if mp4-ws sources are available 2018-12-16 17:21:11 +01:00
0xboobface f75687752c Add config setting for stream previews in thumbnails
This setting allows to switch stream previews of in the thumbnail
views. The little play circle will not show up.
2018-12-16 17:19:57 +01:00
0xboobface ebb5310d26 Wait for the download to terminate before starting PP
Sometimes the PP was started before the last segments were downloaded.
This could cause unexpected effects. E.g. the playlist generator would
fail, because the number of segments chained during playlist generation.
2018-12-16 16:14:53 +01:00
0xboobface e621e49e00 Wait for segment download thread pool to finish
... when the download terminates
2018-12-16 02:38:21 +01:00
0xboobface b2d1d41abc Remove ordering by sequence
This was used for Chaturbate, because the filename format was known.
With several camsites the filename format can differ and this is not a
good solution anymore. Instead we now just sort filename. To make sure,
the files have the right order, HlsDownload now creates a prefix for
each segment.
2018-12-14 23:53:10 +01:00
0xboobface 1ce9a111a9 Add tipping for Streamate
Tipping does not work, yet. The server returns success: false. I don't
know, what the parameters have to look like
2018-12-14 23:37:55 +01:00
0xboobface 4d7409f443 Implement follow/unfollow and login with cookies 2018-12-14 20:25:57 +01:00
0xboobface c7e07b4b26 Implement login and favorites tab 2018-12-14 17:36:24 +01:00
0xboobface 6b52906811 Add configuration ui for the credentials 2018-12-14 15:51:15 +01:00
0xboobface 461e65ed84 Switch to much simpler JSON api 2018-12-14 14:58:12 +01:00
0xboobface 70f4fa930f Implement search for Streamate 2018-12-14 13:42:20 +01:00
0xboobface 64c60eaeaa Add determination of stream url and stream sources 2018-12-14 02:39:07 +01:00
0xboobface 52cdf8d601 Add classes and first code for Streamate 2018-12-13 23:48:16 +01:00
0xboobface 150af23d14 Fix log messages 2018-12-13 20:54:26 +01:00
0xboobface ceb7c07aa8 Add setting for minimum recording length
If a recording is shorter than x seconds, it gets deleted
2018-12-13 20:54:10 +01:00
0xboobface 560e73c1dd Reduce log level for unused message types 2018-12-13 20:51:14 +01:00
0xboobface dc8a4d4190 Don't add model to models or update it, if uid is not set 2018-12-13 17:09:40 +01:00
0xboobface 9d86a0531c Bump version to 1.15.0 2018-12-13 16:24:45 +01:00
0xboobface 168ad694ae Remove debug log message 2018-12-13 01:11:22 +01:00
0xboobface 8039359455 Remove playlistUrl check from isOnline
isOnline contained a check for playlistUrl != null, because sometimes
the playlistUrl is null even though the model is online, but it prevents
the followed tab from working correctly
2018-12-12 22:05:46 +01:00
0xboobface a68341de82 Add actions to MFC's table view 2018-12-12 18:08:39 +01:00
0xboobface c478f6b0f1 Make login methods synchronized
Add synchronized modifier to the login methods, so that only one thread
at a time tries to login. All the following threads then should be able
to use the session cookies
2018-12-12 12:48:45 +01:00
0xboobface a5ec00c936 Add table for MFC which contains all models 2018-12-11 21:59:32 +01:00
0xboobface dd76774145 Decrease sync thread sleep time to 2 secs 2018-12-10 22:09:12 +01:00
0xboobface 0fe9d9677a Delete recordings from synced cached recordings 2018-12-10 21:08:55 +01:00
0xboobface bb3de83453 Logout and delete cookies when credentials are changed 2018-12-10 18:37:04 +01:00
0xboobface e7f1d26a84 Bumb version to 1.14.0 2018-12-10 17:15:33 +01:00
0xboobface 2fc00404b8 Implement recording state change events in RemoteRecorder 2018-12-10 16:21:34 +01:00
0xboobface 1d409fa1d4 Run post-processing steps in runnable in a thread pool
Server and client now create a runnable for post-processing steps,
which run in a thread pool. This ensures, that the steps run linearly so
that RecordingStateChange events make sense, too.
2018-12-10 15:27:56 +01:00
0xboobface ff539c1c2e Use state's name instead of description in toString 2018-12-10 14:35:21 +01:00
0xboobface f4e143eb7d Return a copy of models in getModelsRecording 2018-12-10 12:54:37 +01:00
0xboobface 768507d6e5 Increase thread pool size for event bus to 10 2018-12-09 21:36:30 +01:00
0xboobface 86ae660218 Use the event name instead of the description in getExecutionParams 2018-12-09 19:02:50 +01:00
0xboobface 7c16006870 Set the name in the default constructor 2018-12-09 19:02:19 +01:00
0xboobface 888046676f Add first configurable version of the notification system 2018-12-09 18:46:33 +01:00
0xboobface be680a07f9 Map state password protected to private 2018-12-09 18:45:16 +01:00
0xboobface 5bb51b6a85 Add descriptions for events and states 2018-12-08 16:08:14 +01:00
0xboobface 1fc16a0d41 Add a few predicates and actions for the event system 2018-12-08 13:08:20 +01:00
0xboobface f7dfabb898 Remove playback of sound with notification 2018-12-08 13:06:24 +01:00
0xboobface 2dc5fd4581 Add Event and EventReaction classes 2018-12-06 17:39:33 +01:00
0xboobface b50df194a0 Move settings to own package 2018-12-06 17:38:10 +01:00
0xboobface 90e033d2ac Don't log exception if interrupted, but not running anymore 2018-12-06 13:44:10 +01:00
0xboobface 69544a7a60 Pull OnlineMonitor out of LocalRecorder 2018-12-05 21:01:33 +01:00
0xboobface 093b36270a Return at least ONLINE / OFFLINE, if the state is UNKNOWN 2018-12-05 21:01:01 +01:00
0xboobface 022997f6b6 Add new event property OLD 2018-12-05 21:00:19 +01:00
0xboobface 1970f08700 Return UNKOWN, if state is null 2018-12-05 20:59:51 +01:00
0xboobface 00869315fb Don't throw exception, if no sync happened yet 2018-12-05 20:59:03 +01:00
0xboobface 9f19b2c1fa Merge branch 'dev' into notify 2018-12-05 16:08:55 +01:00
0xboobface e6476e95ec Add setting to ignore the upscaled video stream on MFC 2018-12-05 16:08:44 +01:00
0xboobface 42177b4399 Add enum to Model for the online states 2018-12-05 15:51:21 +01:00
0xboobface 65e6c5b76e Merge branch 'dev' into notify 2018-12-05 12:58:51 +01:00
0xboobface 9109fc8689 Display "unkown resolution" instead of Integer.MAX_VALUE 2018-12-05 12:38:06 +01:00
0xboobface a7b0b3f374 Remove resolution cache
Resolutions are cached by ThumbCell
2018-12-05 12:30:27 +01:00
0xboobface 8abb3db8a5 Remove single thread executor 2018-12-05 12:10:21 +01:00
0xboobface d4dadf9fea Remove resolution cache
Resolution caching is done globally in ThumbCell
2018-12-04 18:31:31 +01:00
0xboobface 45e493a35a Add javadoc 2018-12-04 18:28:30 +01:00
0xboobface cd903566de Use baseUrl in requestExtData 2018-12-03 16:26:37 +01:00
0xboobface b97449a980 Filter out websocket servers with the wrong protocol 2018-12-03 15:24:44 +01:00
0xboobface 0121e02edb Merge branch 'dev' into notify 2018-12-03 14:35:24 +01:00
0xboobface da87a1ae39 Add log message which websocket server is used 2018-12-03 14:35:14 +01:00
0xboobface 889dbecb14 Bump version to 1.13.0 2018-12-03 00:14:50 +01:00
0xboobface 6b4d320bc2 Add setting to set the base URL for MFC 2018-12-02 22:35:12 +01:00
0xboobface 353f3fb317 Use baseUrl in loadStreamInfo 2018-12-02 22:33:49 +01:00
0xboobface 96b5c26277 Implement notification messages with SystemTray and notify-send 2018-12-02 17:02:17 +01:00
0xboobface 80381c0d49 Fire events from LocalRecorder 2018-12-01 21:56:23 +01:00
0xboobface 5b8cfc02d6 Merge branch 'dev' into notify 2018-12-01 20:22:02 +01:00
0xboobface 6ab70dd5df In resumeRecording don't start a recording, if the model is offline 2018-12-01 16:56:43 +01:00
0xboobface f0edfb167c Added support for display names from Camsoda 2018-12-01 16:34:09 +01:00
0xboobface 56291cb97f Add support for display names for BongaCams 2018-12-01 15:29:56 +01:00
0xboobface 431d2f60c4 Add support for display names
Add display name to model and use it in GUI. The actual sites don't
set it yet. If the display name is not set, getDisplayName returns
getName instead
2018-12-01 15:24:46 +01:00
0xboobface 7192856c87 Add setting for chaturbate base URL 2018-12-01 14:17:03 +01:00
0xboobface 0edb17ae9f Add trace output for the time the online check took 2018-12-01 14:02:22 +01:00
0xboobface b44a1c2422 Fix stream source selection 2018-12-01 02:12:27 +01:00
0xboobface 52016c6a86 Make sure, the hlsUrl is available, when loading the master playlist 2018-12-01 00:16:44 +01:00
0xboobface ad1f841167 Don't do space check, if minimum is set to 0 2018-11-30 14:51:17 +01:00
0xboobface 918f63b1f5 Use defaults, if settings cannot be loaded
If the settings cannot be loaded, make a backup of the settings file
and use the defaults, so that the application at least starts.
2018-11-30 13:42:51 +01:00
0xboobface afd5d3caa3 Extend manual add function to allow to add models by their URL 2018-11-29 19:08:57 +01:00
0xboobface cbe466e7b9 Set default for showPlayerStarting to false 2018-11-29 17:50:09 +01:00
0xboobface c17dcc4216 Add setting to toggle Player Starting message 2018-11-29 17:33:10 +01:00
0xboobface 2c716d3c88 Set all occurrences of PlaylistParser to lenient mode 2018-11-29 13:42:23 +01:00
0xboobface cf9a6d3f85 Merge branch 'master' into notify 2018-11-28 23:43:43 +01:00
0xboobface 539db89bdb Bump version to 1.12.1 2018-11-28 23:28:32 +01:00
0xboobface 4150a2911b Playing around with notifications 2018-11-28 23:24:06 +01:00
0xboobface 1e51298f41 Fix recording download from server 2018-11-28 23:06:41 +01:00
0xboobface c0bd89b228 Fix log message 2018-11-28 20:35:23 +01:00
0xboobface ede6dd73d2 Don't print stacktrace on timeout in OnlineMonitor 2018-11-28 20:30:45 +01:00
0xboobface b771145612 Bump version to 1.12.0 2018-11-28 17:52:30 +01:00
0xboobface cbb6f3f45a Add failFast version of getStreamInfo for faster startup
With many chaturbate models, the loading of the recording tab took
a long time, because for each model the online state was loaded by the
loading cache. The failFast version just returns null and makes the
inital loading of recorder.getOnlineModels() much faster.
2018-11-28 16:45:42 +01:00
0xboobface ef9566999a Fixed possible NPE in update method 2018-11-28 16:43:30 +01:00
0xboobface 403c1ed2d0 Fix split recordings
Split recordings didn't work, because splitRecStartTime had been removed
by accident. Also the splitting now does not start a new recording, but
switches the output file in Streamer. This is a much cleaner and
smoother approach, because it is much faster and no segments are missed
2018-11-28 16:03:21 +01:00
0xboobface 3a7f2ceca6 Add convenience method Config.isDevMode()
Also made isServerMode() static
2018-11-28 15:37:35 +01:00
0xboobface c4c8fe83fa Improve MergedHlsDownload
* Add better exception handling
* Check, if the model is still online, when an error occurs
* Download segments in parallel, so that less segments are missed
2018-11-28 15:22:42 +01:00
0xboobface 7edc79b0e3 Take boolean privateRoom into account for online state 2018-11-28 11:47:40 +01:00
0xboobface 33642705a0 Check playlistUrl in isOnline
If the playlistUrl is empty, we cannot record, so the model is offline
2018-11-27 18:53:22 +01:00
0xboobface c543af6429 Set online state to offline if model details cannot be loaded 2018-11-27 17:53:37 +01:00
0xboobface 55b219d271 Move size formatting code to StringUtil 2018-11-27 14:11:52 +01:00
0xboobface cc2aa3c8d5 Add threshold setting for minimum space on disk
If there is less space left on the device than specified by the setting,
the recorder will stop all recordings and don't start new ones until
the free space rises above this threshold again.
2018-11-26 15:28:44 +01:00
0xboobface 8fdb24bad1 Add methods to get the free and total space 2018-11-26 14:01:08 +01:00
0xboobface 91ea7d65a3 Sort by height only if the height is set
If the height is not available, it is set to Integer.MAX_VALUE. IT makes
not sense to compare by that value. Instead compare the bitrates.
2018-11-26 00:13:53 +01:00
0xboobface 3b9927a591 Make search case insensitive 2018-11-25 23:01:14 +01:00
0xboobface b869c4a82c Save and restore table states
Save and the restore the table state (sorting and column widths) for
the recorded models and the recordings tables
2018-11-25 22:10:12 +01:00
0xboobface faf6240b45 Save changes to the list of recorded models immediately
... to make sure, that the settings are persisted in case
the process dies or gets killed.
2018-11-25 21:23:37 +01:00
0xboobface 9817fdfb42 Add setting for the online check interval 2018-11-25 21:17:17 +01:00
0xboobface a57a9877b8 Bumb version to 1.11.0 2018-11-25 20:10:27 +01:00
0xboobface 3bfb76e441 Re-add onlineCheckIntervalInSecs
Was removed by accident
2018-11-25 19:12:27 +01:00
0xboobface 84dfeb9484 Add setting to SettingsTab to define the color scheme of the app 2018-11-25 19:11:15 +01:00
0xboobface 240e5e0d92 Add setting for online check interval 2018-11-25 17:04:49 +01:00
0xboobface 9965f352e3 Improve MFC search by also searching in the models cache 2018-11-25 16:28:17 +01:00
0xboobface 6fa9de4a32 Ensure the correct model is updated by checking the uid
The uid should be a value > 0
2018-11-24 15:33:48 +01:00
0xboobface 72064eb55b Fix possible NPE in getStreamUrl 2018-11-24 15:20:45 +01:00
0xboobface edb11a0efc Fix possible NPE in update 2018-11-24 15:16:51 +01:00
0xboobface 85fee70e60 Use TimeUnit for wait-calls 2018-11-23 21:15:30 +01:00