Commit Graph

321 Commits

Author SHA1 Message Date
0xboobface efbae57113 Set webengine user dir to child of config dir 2018-10-30 21:10:42 +01:00
0xboobface f2832940f1 Move CokkieJarImpl to io package 2018-10-30 21:09:46 +01:00
0xboobface 30add6aa3f Fix bug in cookie update code of CookieJar 2018-10-30 21:08:37 +01:00
0xboobface 3d245d6515 Add buttons to follow and open in browser to show tab 2018-10-30 19:07:10 +01:00
0xboobface b476c452ad Merge branch 'dev' into camsoda
Conflicts:
	src/main/java/ctbrec/Settings.java
	src/main/java/ctbrec/recorder/server/HttpServer.java
	src/main/java/ctbrec/ui/CamrecApplication.java
	src/main/java/ctbrec/ui/ThumbCell.java
2018-10-30 19:06:20 +01:00
0xboobface b19ea01ce7 Only do initial login if credentials are available 2018-10-30 18:24:40 +01:00
0xboobface 0c9fc5cba6 Fix JSON parse exception 2018-10-30 15:57:44 +01:00
0xboobface 007ed19d97 Add more tabs
Add tabs for male and couples
2018-10-30 15:57:24 +01:00
0xboobface c445e48d6d Don't try to log in twice 2018-10-30 15:24:02 +01:00
0xboobface 7f3bedd3a1 Clean up code 2018-10-29 23:25:50 +01:00
0xboobface c8e3db4021 Merge branch 'dev' into cam4 2018-10-29 22:38:27 +01:00
0xboobface 97e7466352 Fix UI freeze caused by OnlineMonitor
The lock to prevent concurrent access to the list models caused
the app to freeze, if the models list contained many models, because
the OnlineMonitor would block access until it checked the online
state of every model.
2018-10-29 22:30:15 +01:00
0xboobface 2ffdbfa71a Add followed tab for Cam4 2018-10-29 21:53:41 +01:00
0xboobface dab3466cf6 Simplify login method 2018-10-29 21:53:15 +01:00
0xboobface 4d1e841448 Improve login success check 2018-10-29 18:12:52 +01:00
0xboobface 936984c71d Add window icon to Cam4 login dialog 2018-10-29 17:57:14 +01:00
0xboobface 43cb005fcd Add login dialog for Cam4
The login dialog uses a WebView to load the login form from cam4.com
Username and password get filled in by ctbrec, the user has to solve
the captcha. Afterwards all cookies (especially the session cookie)
are extracted from the webview and transfered to the OkHttp client,
so that it can be used for further requests.
2018-10-29 17:36:58 +01:00
0xboobface 64beb44316 Fix typo in log statement 2018-10-29 13:51:08 +01:00
0xboobface dc6b514d8f Disable follow/unfollow for the time being 2018-10-29 13:49:04 +01:00
0xboobface 8fd09fd521 Implemented followed tab for CamSoda 2018-10-28 21:23:58 +01:00
0xboobface a841457a90 Add HD tab 2018-10-27 23:28:08 +02:00
0xboobface 88d8430f98 Added sleep to resolution update task
...to throttle the number of request fired in a small amount of time
2018-10-27 23:27:44 +02:00
0xboobface e97b417480 Set backbround of ThumbCell to lightgray 2018-10-27 22:32:15 +02:00
0xboobface 34f443c6a9 First addition for Cam4 2018-10-27 22:32:07 +02:00
0xboobface 8287d04396 Set playlist parsing mode to lenient 2018-10-27 22:30:17 +02:00
0xboobface 7442ddd3e4 Show thumb, if offline_picture is not available
Tweak the insets
2018-10-27 18:50:29 +02:00
0xboobface 07864dc10a Add Camsoda tab with upcoming shows 2018-10-27 18:40:24 +02:00
0xboobface d4bff345a1 Add Camsoda to sites in HttpServer 2018-10-26 23:01:17 +02:00
0xboobface a31bad7466 Set backbround of ThumbCell to lightgray 2018-10-26 16:13:44 +02:00
0xboobface 209ec64e3d Merge branch 'dev' into camsoda 2018-10-26 14:33:33 +02:00
0xboobface 4e0fb6aaf0 Ignore models for disabled sites in LocalRecorder 2018-10-26 14:16:17 +02:00
0xboobface ebbfacd802 Complete json parsing 2018-10-26 01:55:08 +02:00
0xboobface 60494a09fd Sort by camsoda sort value 2018-10-26 01:23:07 +02:00
0xboobface e940a81d41 Fix height of background etc 2018-10-26 01:22:49 +02:00
0xboobface 6ca7d43069 Implemented camsoda 2018-10-26 01:03:13 +02:00
0xboobface 6be09079a3 Improve logging 2018-10-26 00:59:14 +02:00
0xboobface 02b50f61c5 Merge branch 'dev' into camsoda 2018-10-25 20:11:53 +02:00
0xboobface 5cd8ae3cff Add possibility to disable sites
Sites can be disabled in the settings, so that they don't get
initialized on start. The UI is not created for them aswell.
2018-10-25 20:11:25 +02:00
0xboobface 9f9d726e5c Add site Camsoda
Add new package and classes for camsoda.com
2018-10-25 16:19:47 +02:00
0xboobface b4b3e7e910 Improve log statement 2018-10-25 12:56:32 +02:00
0xboobface 4e1c7f7189 Add ColumnConstraints to split up space 50/50 2018-10-25 12:42:02 +02:00
0xboobface f0154857d9 Add mechanisms to have credentials/settings for each site
Each site can now provide its own configuration panel. For
Chaturbate and MyFreeCams these panels contain input fields
for the user credentials.
2018-10-25 12:27:46 +02:00
0xboobface 7e6f5bbc2c Add log statement 2018-10-25 10:55:24 +02:00
0xboobface 91a41d446b Add trace log statement for arriving NULLs
This helps to see, if the websocket is still healty
2018-10-25 10:50:57 +02:00
0xboobface 330bd29bbf Improve logging for easier debugging 2018-10-25 10:49:56 +02:00
0xboobface 0a1cd11a64 Set follow menu entry to disabled instead of hiding it 2018-10-25 00:45:41 +02:00
0xboobface 54381c1676 Change filter in HD cams update service
Chnage the filter to include streams from wowza servers
2018-10-25 00:01:59 +02:00
0xboobface 0bcea4e753 Fix message parser
The parser didn't take into accoun, that the arriving string can
contain several messages
2018-10-24 23:40:53 +02:00
0xboobface ff0d1b5eae Fix live preview for wowza servers 2018-10-24 23:39:46 +02:00
0xboobface 0935343dc1 Replace System.out.prints with log messages 2018-10-24 20:04:33 +02:00
0xboobface 0085ce7ab8 Add marker interface to mark tabs, which contain followed models 2018-10-24 20:02:00 +02:00
0xboobface b80fbd4c30 Add proper login and follow/unfollow to MyFreeCamsClient 2018-10-24 19:55:31 +02:00
0xboobface 9ef9841a19 Show dialog, if follow/unfollow didn't work 2018-10-24 19:51:29 +02:00
0xboobface f0d2a720ab Don't try to load followed models, if username is not set 2018-10-24 19:07:45 +02:00
0xboobface 306f07cf63 Display only online models in popular models tab 2018-10-24 18:00:10 +02:00
0xboobface a4fd3034a8 Make sure the httpTimeout is at least 10 secs 2018-10-24 17:46:06 +02:00
0xboobface 3a181d61a8 Remove debug print statement 2018-10-24 16:52:30 +02:00
0xboobface b6a31a258e On error write a log of the recent received strings
When the websocket message parser throws an exception,
write a logfile with the 100 last recent strings, so
that we can debug, what happened.
2018-10-24 16:46:30 +02:00
0xboobface ea038ae06b Don't cover the description text with the recording indicator dot 2018-10-24 16:44:03 +02:00
0xboobface 45c17cfaa4 Implement live preview for MFC 2018-10-24 15:47:56 +02:00
0xboobface 5cb900fe55 Add a few comments to MFC data structures 2018-10-24 15:46:06 +02:00
0xboobface f553ca3db5 Add online / offline selector on MFC Friends tab 2018-10-24 15:00:09 +02:00
0xboobface 617954928e Rename FollowedTab to ChaturbateFollowedTab 2018-10-24 14:59:48 +02:00
0xboobface a8ca3068ed Add tab "Most Popular" to MyFreeCams 2018-10-24 14:02:41 +02:00
0xboobface b87f828313 Fix possible ConcurrentModificationException
Access to the models list is now secured by a Lock
2018-10-24 13:06:58 +02:00
0xboobface 1032c9f94a Fix update service in RemoteRecorder
Models now get their site assigned
2018-10-24 13:06:03 +02:00
0xboobface e45b413a32 Fix proxy authentication 2018-10-23 23:08:01 +02:00
0xboobface 5b50372772 Disable username and password for SOCKS4
Authentication is only supported by SOCKS5 (I think :) ?!?)
2018-10-23 22:32:43 +02:00
0xboobface ba4f7b6e1a Fix SOCKS5 proxy authentication
SOCKS5 proxy authentication didn't work with the system properties
java.net.socks.username and java.net.socks.password. Instead we now
use the Authenticator class to provide a proxy authenticator.
2018-10-23 21:15:37 +02:00
0xboobface c0e1490530 Make startup up of app make robust
Surround init of sites with try catch block, so that a failure
of a site does not tear down the whole app.
2018-10-23 21:13:32 +02:00
0xboobface 00782d4c17 Fix parsing of sequence numbers
Loosened playlist validator rules.
2018-10-23 17:19:23 +02:00
0xboobface 51f0883b64 Fix race condition
The streaming thread might end before the merge thread. In that
case the download would terminate before all data has been written.
2018-10-23 17:17:23 +02:00
0xboobface 5b39bf2a3e Added hint text to input field on RecordedModelsTab 2018-10-23 17:15:52 +02:00
0xboobface 13d731c82a Show MFC debug menu item only in DEV mode 2018-10-23 17:15:07 +02:00
0xboobface 1b1472540f Change affiliate links to match the correct program 2018-10-23 17:14:31 +02:00
0xboobface f4842fcf51 Improve MyFreeCamsClient
- Add watch dog to reestablish a broken connection
- Implemented creation of stream urls properly
- Add HD tab to display MFC HD streams
2018-10-23 14:02:20 +02:00
0xboobface 8e3d2fd565 Use the selected thumb size on all tabs 2018-10-22 18:22:26 +02:00
0xboobface 0f39aa6fc0 Add SiteTab class, which contains the tabs and a header
The header can contains things like, the token label
2018-10-22 18:21:47 +02:00
0xboobface 1ba003fe56 Add default constructor, so that deserialization works 2018-10-22 17:25:57 +02:00
0xboobface 15c1c6f62c Add TabPane for each site
Each site is now accessible via a tab in the main tabpane.
The tab itself contains the different pages, which are specific
for the site (e.g. online, followed, featured etc.)
2018-10-22 17:25:34 +02:00
0xboobface 8c45c45055 Fix model loading 2018-10-22 16:07:52 +02:00
0xboobface 34d43fc637 Remove unused OnlineModelsTab 2018-10-22 14:04:39 +02:00
0xboobface 330e8701e0 Add tipping for MyFreeCams 2018-10-22 14:01:22 +02:00
0xboobface 7a5abfcbcc Add description and tags to MyFreeCamsModel 2018-10-21 19:39:34 +02:00
0xboobface 8a3abd99af Ignore case in filter bar 2018-10-21 19:19:12 +02:00
0xboobface 387661cfdf Abstract more stuff in the site packages 2018-10-21 19:06:01 +02:00
0xboobface 362d90b29b First implementation for MFC
Implemented Tabs are Online and Friends
2018-10-19 23:09:11 +02:00
0xboobface 54de1339fb Add interfaces to abstract from camsite
This step should enable the application to handle different camsites.
At the moment only chaturbate is available, but others like MFC can
now be added. There might be still some things to do, like the settings
and HttpClient etc. But this is the first step to support more sites
than only Chatubate.
2018-10-17 14:11:04 +02:00
0xboobface c7d55c6fe0 Remove unused import 2018-10-16 18:58:07 +02:00
0xboobface 95c0b24d3c Include streamUrlIndex in ModelJsonAdapter
This is needed to save / transmit the user selected quality.
2018-10-16 18:44:44 +02:00
0xboobface 05ce02a7e8 Move chaturbate related classes to package ctbrec.sites.chaturbate 2018-10-16 18:41:18 +02:00
0xboobface d68b530e60 Move OS class to package ctbrec 2018-10-16 18:39:25 +02:00
0xboobface 0aa6cad1c3 Move io related classes to ctbrec.io 2018-10-16 18:38:46 +02:00
0xboobface 26a73c3228 Rename ModelAdapter to ModelJsonAdapter 2018-10-16 18:34:41 +02:00
0xboobface 43c29758c4 Add interface Model to abstract from different implementations
Model is the common interface for the implementations of all sites.
At the moment only ChaturbateModel exists.
2018-10-16 18:32:54 +02:00
0xboobface ddaaaa8a11 Clear the resolution queue when switching between online/offline 2018-10-09 15:22:32 +02:00
0xboobface 4ee7b6ee4d Remove dead / commented code 2018-10-08 18:13:38 +02:00
0xboobface 37f720abc7 Fix ThumbCell colors 2018-10-08 17:52:37 +02:00
0xboobface 5adb980da6 Add CTBREC_DEV mode for all token related requests
If the env virable CTBREC_DEV is set to 1 all token related requests
are simulated and not actually send to chaturbate.
2018-10-08 15:23:20 +02:00
0xboobface 7e5360033b Don't disable Chaturbate group in SettingsTab in server mode
It does not make sense to disable the Chaturbate group, since the
credentials are still needed to load the followed models and handle
tokens etc.
2018-10-08 14:58:31 +02:00
0xboobface b65db45a05 Improve layout of UpdateTab
Tweak the margins between controls, so that it looks more balanced.
Make the changelog grow vertically to fill the tab, when the window
size changes.
2018-10-08 14:52:07 +02:00
0xboobface e4eda35d02 Hide resolution tag, when mouse is hovering over ThumbCell
This is done, because the resolution tag might obscure the channel
description
2018-10-08 13:50:22 +02:00
0xboobface be16c333e2 Fix: gui update from non-event thread 2018-10-07 18:27:46 +02:00
0xboobface 139bd7b1c9 Remove unused StackPanel
Embed the token panel into the header of the TabPane and remove the
previously used StackPane
2018-10-07 18:12:11 +02:00
0xboobface c61a20de57 Make font size of control in token panel dependent on tab header height 2018-10-07 18:05:07 +02:00
0xboobface 18d5d3cf21 Update token label when tip has been sent 2018-10-07 15:27:46 +02:00
0xboobface 1338cfe09c Show token balance and buy tokens button in top right corner
If the username is set in the settings, show the current token
balance and a buy token button in the top right corner of the main
tab.
2018-10-06 17:27:30 +02:00
0xboobface 175e547123 Add token buy button to donate tab 2018-10-06 13:38:32 +02:00
0xboobface 46301fc379 Add buttons to open Chaturbate to register a new account or buy tokens 2018-10-05 19:01:52 +02:00
0xboobface c8eda9303b Fix possible NPE in PlaylistGenerator 2018-10-05 18:31:17 +02:00
0xboobface c614aebba7 Add possibility to send tips
The context menu now contains an entry to send tips. The menu opens
a dialog, which displays the current token balance and allows the input
of the number of tokens to tip.
2018-10-05 18:03:35 +02:00
0xboobface ebf36cb594 Invalidate cache entries, so that we have the correct playlist URL 2018-10-03 16:42:42 +02:00
0xboobface c91c9641f0 Clear threadpool queue when tab is changed
Clear the threadpool queue when the user switches between tabs, so that
the resolution tags, which are visible get updated earlier. Before, the
tags on tab the user is coming from were updated first and after that
the tags of the currently visible tab.
2018-10-03 15:47:04 +02:00
0xboobface e61cff48f2 Invalidate cache entries, if model is public and resolution is 0 2018-10-03 15:05:39 +02:00
0xboobface e6ce54e1d8 Make stream resolution selection dialog resizable
This seems to help a glich, where the dialog opens with a size only a
few pixels.
2018-10-03 15:05:07 +02:00
0xboobface 866e73ccff Make loading of resolution more robust
The loading of the reosultion might fail, if the URL in StreamInfo is
outdated. Remove StreamInfo from cache in that case and retry.
2018-10-03 15:03:54 +02:00
0xboobface 0e41599ecb Change log level 2018-10-03 14:29:10 +02:00
0xboobface e22658b285 Add cache for StreamInfo and stream resolution requests 2018-10-03 13:39:03 +02:00
0xboobface 530ce820d5 Add radiobuttons to switch between online/offline models
CTB seems to split up the followed tab between online and offline
models. This change adds radiobuttons at the bottom of the followed tab
to switch between online and offline models.
2018-10-03 13:37:08 +02:00
0xboobface 4cbb855bc6 Update the online property of JavaFxModel
With the refactoring of the model / chaturbate class, the online
property of JavaFxModel was not updated anymore, so that the checkbox
in the table would never update.
2018-10-01 18:44:02 +02:00
0xboobface 1dadd6b94b Use getName() instead of this.name
Use getName() whenever this.name is used, so that the wrapper
JavaFxModel works as intended.
2018-10-01 18:39:18 +02:00
0xboobface 88ee4bd157 Convert recording time relative to local timezone.
Convert recording time relative to local timezone and format it with
a easily readable format.
2018-10-01 18:07:51 +02:00
0xboobface 63a91b830d Fix request throttling
Requests to Chaturbate were not throttled properly
2018-10-01 17:25:35 +02:00
0xboobface 3df1dbf911 Move Chaturbate class to Model
Chaturbate only contains Model related methods. So it makes sense to
encapsulate that functionality in Model.

Use guava LoadingCache in Chaturbate class to cache resolution and
StreamInfo requests. The entries expire after 5 minutes.

Add possibility to filter for public rooms only.
2018-10-01 17:09:27 +02:00
0xboobface 58dcc2e32d Show state in the resolution tag, if the model is not online
If the model is not online and the resolution tag is shown, instead of
a zero, display the state (away, offline, private) and change the tag
color to red.
2018-09-29 16:55:24 +02:00
0xboobface ab9f3c7df1 Merge branch 'master' into dev 2018-09-25 15:02:00 +02:00
0xboobface b206a6caf7 Add key listener to unfollow by pressing the delete key 2018-09-25 15:00:45 +02:00
0xboobface e6c38081d9 Add delete key listener to stop recording 2018-09-25 13:55:32 +02:00
0xboobface fa745e9acc Add item to context menu to stop recording in RecordingsTab 2018-09-25 13:35:12 +02:00
0xboobface 45e569e08a Add multi-selection to ThumbOverviewTab
Clicking while holding shift now selects a ThumbCell and allows the
multiple ThumbCells at one. The actions in the context menu are applied
to all selected models. "copy url" is disabled, if multiple models are
selected, because that doesn't make sense.
2018-09-24 20:00:16 +02:00
0xboobface cccb23906d Remove debug logging 2018-09-19 13:43:56 +02:00
0xboobface 9c7f3c3fb4 Add parser input to log message, if the HLS playlist cannot be parsed 2018-09-19 13:29:04 +02:00
0xboobface 69c518d6d6 Change log level for deleted files to trace 2018-09-19 13:28:14 +02:00
0xboobface dd316070a5 Set httpTimeout to 10000ms instead of 10ms 2018-09-10 17:44:42 +02:00
0xboobface 527f5f61ff Add setting to split up the recording after x minutes 2018-09-10 13:45:05 +02:00
0xboobface d0a28aee2f Remove exludes from delete method
The excludes is not used anymore, since the whole merging mechanism
has been removed.

Add more debug statements for the different delete statements.
2018-09-09 14:40:08 +02:00
0xboobface 1c5bcaef35 Make sure the streamer is stopped
The streamer has to be stopped, when the download is stopped or
terminates to release the file handle of the recording and to stop
the merge thread
2018-09-09 14:30:21 +02:00
0xboobface 17901901f9 Ignore empty recording directories in LocalRecorder.getRecordings() 2018-09-08 21:56:18 +02:00
0xboobface 528d7336e1 Simplify integration of mpegts-streamer
Get rid of unneded thread complexity.
Use Queue.take() instead of poll() to avoid unnecessary looping and
the CPU load it causes.
2018-09-08 21:53:39 +02:00
0xboobface 7efbeac565 Adjust detection of recording state to new download mechanism 2018-09-08 00:37:15 +02:00
0xboobface 89a69fa797 Change the name of a merged recording to model-date.ts 2018-09-08 00:17:40 +02:00
0xboobface 8fcc8e0f91 Reimplement the download so that it uses the BlockingMultiMTSSource
This should create a transport stream file with proper continuity counters
and timestamps
2018-09-07 23:59:37 +02:00
0xboobface cda1f25dc0 Remove segment mergers
Segment mergers are not needed anymore. Segments get merged during the
recording or during the download from the server.
2018-09-07 17:23:42 +02:00
0xboobface 7cc5764461 Add System property ctbrec.server.mode on server startup
This property gets set by the server, so that we know,
if we are running in server mode or not
2018-09-07 17:20:07 +02:00
0xboobface 3cf3f2751e Improved logging message 2018-09-07 16:51:12 +02:00
0xboobface 51d48bbe87 Remove unnecessary throw clause
Rmove unnecessary throw IOException clause from the constructor of
InputStreamMTSSource
2018-09-07 16:50:24 +02:00
0xboobface b91888f2ae Improve logging messages 2018-09-07 16:46:49 +02:00
0xboobface 1d7dd0d0e8 Merge branch 'master' into mpegts-streamer 2018-09-07 15:20:06 +02:00
0xboobface 698ba72120 Integrate mpegts-streamer to save a recording to a single file
Integrate a modified version of mpegts-streamer (https://github.com/igilham/mpegts-streamer)
Add BlockingMultiMTSSource to mpegts-streamer, which is used to add new InputStreamMTSSources
online for each segment.

Remove all settings and methods, which are needed for segment merging.
2018-09-07 15:16:08 +02:00
0xboobface a147c1b26c Add check for JavaFX on start
On startup check if the application is running on the OpenJDK JVM. If that is the case,
check that JavaFX is available (because OpenJDK comes without JavaFX, it has to be installed
separately). If it is not available, log an error what to do and exit.
2018-09-07 14:31:18 +02:00