DrReddit Studio Documentation v0.7.0 (published on November 2-11-2020)
In this documentation, basic and pro features are marked with (b) and pro exclusive features are marked (p). All unmarked items are included in free version.
If you have any questions, please contact me on Telegram: @cherrydog
Navigation: Threads page is to manage, curate, render and upload threads. Settings page is for default thread settings and app settings.
Available threads Page: List of downloaded threads. Click a thread to start curating and rendering
Download a thread from a Reddit URL. This thread can be then curated into a script (with selected good posts), and the final script can be renderd into a video
Limit: 2 per day / no limit (b)
Automatically render ready scripts and upload the videos to YouTube (using Youtube API integration). The Auto Renderer-Publisher has to be fully open to work. (p)
Render all threads that have the status "Script Ready" (b)
Delete threads that have the status ”uploaded” (b)
Curating view: Here you can select proper posts that will be shown in the final video.
Curating action buttons:
Undo a curating action.
Don’t include the current comment or child comment. Go to the next top-level comment.
Include the current comment. Go to its chid comment.
Include the current child comment and go to the next top-level comment.
Don’t include the current child comment. Go to its sibling.
Automatically add posts to the thread, until the charsGoal is reached. (b)
Automatically lower the charsGoal to match the current characters count, and go to rendering
Edit the text of the current comment (b)
Make a ”teaser” of the current comment. It will be displayed in the final video
before intro (p)
Thread specific settings: Will only apply to the particular thread.
Settings page: Here you can edit default thread/script settings and modify global app settings. Also displays Youtube API integration status.
Connect to Youtube api to use Auto Renderer-Publisher and auto (p)
Meaning of setting keys:
Format: category.subcategory.name OR category.name
curatedScript: default settings for a thread. These settings are modifiable for individual threads under when curating them
app: settings related to the app, fetching, etc.
googleApi: settings related to google API integration, required if you want to connect your Youtube account and use the auto-uploading feature. (p)
amazonApi: settings related to Amazon AWS API integration, required if you want to use Polly natural sounding voices or use auto translating (p)
publishing: everything related to auto-uploading to youtube (p)
assetPaths: paths to video/image/sound assets used in the video rendering
speech: everything related to text-to-speech functionality (b)
style: style of the post in the final rendering and preview window. Everything here should be instantly updated in the preview window. (b)
AmazonTranslator: use Amazon API to translate posts automatically while curating (p)
Each setting explained:
curatedScript.publishing.title - title for uploaded youtube video. (p)
curatedScript.publishing.thumbnailPath = thumbnail path for uploaded youtube video (p)
curatedScript.publishing.tags = video tags for uploaded youtube video (p)
curatedScript.publishing.description = description for uploaded youtube video (p)
curatedScript.publishing.categoryId = categoryId for uploaded video. See https://gist.github.com/dgp/1b24bf2961521bd75d6c for reference. (p)
curatedScript.publishing.makePublic = 1 or 0 (true or false), whether to make the uploaded video public or private (p)
curatedScript.ignoreOPBodyText = whether to ignore the body-text, aka self-text of the op post, aka the title post (b)
Value: 1 Value: 0
curatedScript.showImagePostNextToComments = if the title post has image, show the image while reading comments (b)
Value: 0 Value: 1
curatedScript.charsGoal = Characters goal for the video. When the character goal is hit, you can render the video. All characters in the title, comments and selftext will be included in this figure.
curatedScript.userFlags = This is for your personal book keeping if you wish. No functionality.
curatedScript.enableAutoScrollingText = for long posts that don't fit the screen, enable auto-scrolling, aka segmenting the video into parts and displaying them in series (p)
Value: 1 Value: 0
curatedScript.assetPaths.backgroundMusic = path for background music for the final video. If the music is too short, it will be automatically repeated.
curatedScript.assetPaths.introVideo = intro video for the final video
curatedScript.assetPaths.outroVideo = outro video for the final video
curatedScript.assetPaths.breakVideo = break video aka interval video for the final video
curatedScript.backgroundMusic.volume = volume for background music, a decimal number between 0 and 1.
curatedScript.overlayVideo.path = overlay video that will be repated for the whole rendered video. Some have used this for a "subscribe now!"-style popup every couple of mins. (p)
curatedScript.overlayVideo.colorkey = colorkey settings for the overlayvideo. This allows you to use green screen effect on the overlay video (because videos can't be transparent by default, unlike images). Reference: https://ffmpeg.org/ffmpeg-filters.html#colorkey (p)
curatedScript.speech.readAsterisksAs = when the tts engine encounters asterisks (for example, an autocensored word f***), it will replace the asterisks with this value before reading. For example if value = beep, f*** will be read as "fbeep". (b)
curatedScript.speech.name = speech name used by tts engine. Click the edit button in the setting to get available speech names. All tts voices that are supported by Balabolka tts software will be available. (b)
curatedScript.speech.rate = speech rate, between -10 and 10. (b)
curatedScript.speech.volume = speech volume, between 0 and 100. (b)
curatedScript.speech.charsPerMinEstimation = this doesn't have other functional properties other than that the estimated video length will be calculated using this. (b)
curatedScript.speech.breakOffset.half = the amount of milliseconds added to the end of a segment ending in half stop e.g. ',' (b)
curatedScript.speech.breakOffset.full = the amount of milliseconds added to the end of a segment ending in full stop e.g. '.' (b)
curatedScript.speech.breakOffset.end = the amount of milliseconds added to the end of a segment ending the comment (b)
curatedScript.speech.amazonPolly.enabled = enabled Amazon polly TTS (more natural sounding than Balabolka) (p)
curatedScript.speech.amazonPolly.VoiceId = The voice name for the TTS voice used. For example, Joey or Matthew. More Info: https://docs.aws.amazon.com/polly/latest/dg/ntts-voices-main.html (p)
curatedScript.speech.amazonPolly.Engine = The engine used by AWS when generating the voice. The new AI one is called ’neural’ and it sounds natural like a human. However, the cost might be a little bit more than the standard one. Amazon offers a free trial of 12 months, please check their pricing plan for more info. Options: standard or neural (p)
curatedScript.video.width = output video width in pixels
curatedScript.video.height = output video height in pixels
curatedScript.style.maxScale = maximum scale for a comment/post. The software automatically tries to make the post as large as the frame can fit. Use this value to set a limit. (b)
Value: 3 Value: 2.1
curatedScript.style.minScale = same as maxScale but for minimum limit. (b)
curatedScript.style.framePaddingLeft = left frame padding (b)
Value: 150px Value: 0px
curatedScript.style.framePaddingRight = right frame padding (b)
Value: 100px Value: 550px
curatedScript.style.frameBackgroundColor = background color of the frame (b)
curatedScript.style.frameBackgroundImage = background image for the frame (b)
Value: *some image*
curatedScript.style.commentBackgroundColor = background color for the comment/post (b)
curatedScript.style.commentChainPadding = padding of a whole comment tree (b)
curatedScript.style.totalVerticalPaddingForImagePost = this can be used to limit the size of an image (b) post
Note: there's a bug in v0.6.242 where edited value doesn't automatically update in the preview (need to go "back" to thread catalog and then to the thread again)
Value: 100 Value: 300
curatedScript.style.hideRedditReferences = whether to hide everything but the text from a post. 0 = false, 1 = true (b)
curatedScript.commentTeaser.text = comment post text to read and display before final video's intro. You can also use the "Make teaser" button when curating a comment. Only one teaser supported. The teaser will be always displayed without reddit references (That's because the upvote panel and bottom panel indicate that it's a whole post, when in fact the teaser could be only one sentence from the middle of the post) (p)
curatedScript.amazonTranslator.enabled = whether or not to enable auto translation during curating (p)
curatedScript.amazonTranslator.SourceLanguageCode = source language code, for example ’en’ for English. Check below for more codes (p)
curatedScript.amazonTranslator.TargetLanguageCode = target language code, for example ’es’ for Spanish. Check below for more codes (p)
List of AWS language codes: https://docs.aws.amazon.com/translate/latest/dg/what-is.html#what-is-languages
app.autoCensoredWordsList = Every post/comment will be checked against this list when FETCHING (= changing this afterwards doesn't work because the censoring happens during fetching). Censored words will be replaced with asterisks (****) (b)
app.postPreview.zoom = relative size of the post preview window in curating mode. For example 0.5 equals to 50% of the output video size.
Note: doesn't affect the actual output rendering, only the preview
Value: 0.5 Value: 0.2
app.defaultImageDisplayDuration = default value for post image dispaly duration (Edit duration button in image posts)
googleApi.clientId = google api client id for auto upload via youtube integraiton. Click "conntect to youtube" button in the settings page button for info on how to retrieve this (p)
googleApi.clientSecret = google api client secret for auto upload via youtube integraiton. Click "conntect to youtube" button in the settings page for info on how to retrieve this (p)
amazonApi.accessKeyId = for AWS integration. More info below (p)
amazonApi.secretAccessKey = for AWS integration. More info below (p)
QUICK GUIDE TO SETTING UP AMAZON API:
1. Create amazon AWS account at https://portal.aws.amazon.com/billing/signup#/start
5. Retrieve the accessKeyId and secretAccessKey, set them in the DrReddit Studio settings and restart the application. You should be good to go! Also enable