forked from j62/ctbrec
1
0
Fork 0
Commit Graph

1109 Commits

Author SHA1 Message Date
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
0xboobface 3445fa5ca0 Revert change, which prevents ChaturbateModel to work correctly 2018-11-23 21:15:04 +01:00
0xboobface b9f24a209e Implement search feature
If a site supports searching, add a search field on the right side next
to the filter input field. This search uses the sites search function
to look for models and returns a list of matches in a popup window
2018-11-23 20:27:49 +01:00
0xboobface 2202dc969f Add setting to define the start tab
When ctbrec is started, this is the first tab shown to the user.
2018-11-22 16:30:07 +01:00
0xboobface 0dbf319575 Invalidate cache when a new websocket is opened
When a new connection is established (for example by the watchdog),
invalidate the caches. Also don't trigger a connect, if we are already
trying to connect.
2018-11-21 14:20:37 +01:00
0xboobface e11acea52e FIX: Avoid NPE in onFailure 2018-11-20 22:30:27 +01:00
0xboobface 97d3be0b98 Add setting to diable thumbnail updates
This is a feature for people who have bandwidth / contingent restrictions.
It can also help keeping the CPU usage down.
2018-11-20 14:35:06 +01:00
0xboobface 7133283032 Start implementation for FC2Live 2018-11-19 23:20:39 +01:00
0xboobface 8fb5eac435 Move getSite and setSite to AbstractModel 2018-11-19 20:51:40 +01:00
0xboobface 042fe43838 Bumb version to 1.10.0 2018-11-19 15:33:48 +01:00
0xboobface 05d583bab5 Change folder structure to maven conventions 2018-11-18 22:49:05 +01:00
0xboobface cda330ddbd Split up project into client, server, common and master 2018-11-18 22:42:13 +01:00