Compare commits

...

16 Commits

Author SHA1 Message Date
37fae9185a Fix links 2025-06-18 01:50:41 -05:00
1572c1eee8 Add docs for DisableBrowserAuth config option 2025-06-18 01:50:32 -05:00
eaefd033aa Remove unused metadata from docusaurus 2025-06-18 01:40:04 -05:00
473b8d0ef3 Add config sections docs page 2025-06-18 01:37:59 -05:00
Melithine
d83ad2ec54 Update errors to point at new docs site.
All checks were successful
Publish Docker image / Build and push Docker image to Gitea Registry (push) Successful in 3m48s
Publish release zip / build (push) Successful in 1m1s
2025-05-18 09:16:05 -07:00
3a944c112d Merge branch 'master' of https://git.ofdl.tools/sim0n00ps/OF-DL 2025-05-11 22:35:36 +01:00
5e433f6568 Tweaks to docs site 2025-05-11 22:35:33 +01:00
cd60d3092d Update README.md 2025-05-11 20:20:49 +00:00
b36ecd4f5b user mkdocs-material 2025-05-11 20:55:13 +01:00
f5ca6d8eb2 Change publish-docs.yml 2025-05-11 20:53:30 +01:00
69be3607a0 Add MkDocs 2025-05-11 20:25:00 +01:00
0a34f81510 Add CNAME for ofdl.tools 2025-05-11 00:16:29 +01:00
Gitea Actions
8106f690e0 Auto-deploy Docusaurus site to .gitea/pages [skip ci] 2025-05-10 22:22:13 +00:00
Gitea Actions
442cc646d6 Auto-deploy Docusaurus site to .gitea/pages [skip ci] 2025-05-10 22:20:05 +00:00
Gitea Actions
e77f8abff6 Auto-deploy Docusaurus site to .gitea/pages [skip ci] 2025-05-10 22:12:24 +00:00
ec751480e1 Add publish-docs.yml 2025-05-10 23:10:12 +01:00
35 changed files with 564 additions and 16294 deletions

View File

@ -0,0 +1,36 @@
name: Publish docs
on:
push:
tags:
- 'OFDLV*'
paths:
- 'docs/**'
- '.gitea/workflows/publish-docs.yml'
workflow_dispatch:
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install MkDocs
run: |
pip install mkdocs-material
- name: Build site
run: |
mkdocs build --clean
- name: Deploy site
run: |
sudo rm -rf /var/www/mkdocs/*
sudo cp -r site/* /var/www/mkdocs/
sudo chown -R www-data:www-data /var/www/mkdocs/

5
.gitignore vendored
View File

@ -367,4 +367,7 @@ FodyWeavers.xsd
/OF DL/device_private_key
# Allow node_modules inside custom actions
!.gitea-actions/**/node_modules/
!.gitea-actions/**/node_modules/
# venv
venv/

View File

@ -68,7 +68,7 @@ public class Program
AnsiConsole.MarkupLine($"[yellow]In the new window that has opened, please log in to your OF account. Do not close the window or tab. Do not navigate away from the page.[/]\n");
AnsiConsole.MarkupLine($"[yellow]Note: Some users have reported that \"Sign in with Google\" has not been working with the new authentication method.[/]");
AnsiConsole.MarkupLine($"[yellow]If you use this method or encounter other issues while logging in, use one of the legacy authentication methods documented here:[/]");
AnsiConsole.MarkupLine($"[link]https://sim0n00ps.github.io/OF-DL/docs/config/auth#legacy-methods[/]");
AnsiConsole.MarkupLine($"[link]https://docs.ofdl.tools/config/auth/#legacy-methods[/]");
}
}
auth = await getAuthTask;
@ -78,7 +78,7 @@ public class Program
AnsiConsole.MarkupLine($"\n[red]Authentication failed. Be sure to log into to OF using the new window that opened automatically.[/]");
AnsiConsole.MarkupLine($"[red]The window will close automatically when the authentication process is finished.[/]");
AnsiConsole.MarkupLine($"[red]If the problem persists, you may want to try using a legacy authentication method documented here:[/]\n");
AnsiConsole.MarkupLine($"[link]https://sim0n00ps.github.io/OF-DL/docs/config/auth#legacy-methods[/]\n");
AnsiConsole.MarkupLine($"[link]https://docs.ofdl.tools/config/auth/#legacy-methods[/]");
AnsiConsole.MarkupLine($"[red]Press any key to exit.[/]");
Log.Error(e, "auth invalid after attempt to get auth from browser");
@ -90,7 +90,7 @@ public class Program
AnsiConsole.MarkupLine($"\n[red]Authentication failed. Be sure to log into to OF using the new window that opened automatically.[/]");
AnsiConsole.MarkupLine($"[red]The window will close automatically when the authentication process is finished.[/]");
AnsiConsole.MarkupLine($"[red]If the problem persists, you may want to try using a legacy authentication method documented here:[/]\n");
AnsiConsole.MarkupLine($"[link]https://sim0n00ps.github.io/OF-DL/docs/config/auth#legacy-methods[/]\n");
AnsiConsole.MarkupLine($"[link]https://docs.ofdl.tools/config/auth/#legacy-methods[/]");
AnsiConsole.MarkupLine($"[red]Press any key to exit.[/]");
Log.Error("auth invalid after attempt to get auth from browser");
@ -585,7 +585,7 @@ public class Program
{
AnsiConsole.MarkupLine($"\n[red]auth.json has invalid JSON syntax. The file can be generated automatically when OF-DL is run in the standard, interactive mode.[/]\n");
AnsiConsole.MarkupLine($"[red]You may also want to try using the browser extension which is documented here:[/]\n");
AnsiConsole.MarkupLine($"[link]https://sim0n00ps.github.io/OF-DL/docs/config/auth#browser-extension[/]\n");
AnsiConsole.MarkupLine($"[link]https://docs.ofdl.tools/config/auth/#legacy-methods[/]");
AnsiConsole.MarkupLine($"[red]Press any key to exit.[/]");
Console.ReadKey();
@ -601,7 +601,7 @@ public class Program
{
AnsiConsole.MarkupLine($"\n[red]auth.json is missing. The file can be generated automatically when OF-DL is run in the standard, interactive mode.[/]\n");
AnsiConsole.MarkupLine($"[red]You may also want to try using the browser extension which is documented here:[/]\n");
AnsiConsole.MarkupLine($"[link]https://sim0n00ps.github.io/OF-DL/docs/config/auth#browser-extension[/]\n");
AnsiConsole.MarkupLine($"[link]https://docs.ofdl.tools/config/auth/#legacy-methods[/]");
AnsiConsole.MarkupLine($"[red]Press any key to exit.[/]");
Console.ReadKey();
@ -615,7 +615,7 @@ public class Program
{
AnsiConsole.MarkupLine($"\n[red]auth.json is missing. The file can be generated automatically when OF-DL is run in the standard, interactive mode.[/]\n");
AnsiConsole.MarkupLine($"[red]You may also want to try using the browser extension which is documented here:[/]\n");
AnsiConsole.MarkupLine($"[link]https://sim0n00ps.github.io/OF-DL/docs/config/auth#browser-extension[/]\n");
AnsiConsole.MarkupLine($"[link]https://docs.ofdl.tools/config/auth/#legacy-methods[/]");
AnsiConsole.MarkupLine($"[red]Press any key to exit.[/]");
Console.ReadKey();
@ -630,7 +630,7 @@ public class Program
{
AnsiConsole.MarkupLine($"\n[red]auth.json is missing. The file can be generated automatically when OF-DL is run in the standard, interactive mode.[/]\n");
AnsiConsole.MarkupLine($"[red]You may also want to try using the browser extension which is documented here:[/]\n");
AnsiConsole.MarkupLine($"[link]https://sim0n00ps.github.io/OF-DL/docs/config/auth#browser-extension[/]\n");
AnsiConsole.MarkupLine($"[link]https://docs.ofdl.tools/config/auth/#legacy-methods[/]");
AnsiConsole.MarkupLine($"[red]Press any key to exit.[/]");
Console.ReadKey();
@ -805,7 +805,7 @@ public class Program
if (auth == null)
{
AnsiConsole.MarkupLine($"\n[red]Auth failed. Please try again or use other authentication methods detailed here:[/]\n");
AnsiConsole.MarkupLine($"[link]https://sim0n00ps.github.io/OF-DL/docs/config/auth[/]\n");
AnsiConsole.MarkupLine($"[link]https://docs.ofdl.tools/config/auth[/]\n");
Console.ReadKey();
Environment.Exit(2);
}

View File

@ -7,7 +7,7 @@ Scrape all the media from an OnlyFans account
Join the discord [here](https://discord.com/invite/6bUW8EJ53j)
# Documentation
Please refer to https://sim0n00ps.github.io/OF-DL/ for instructions on:
Please refer to https://docs.ofdl.tools/ for instructions on:
- Requirements
- Installing the Program
- Running the Program

2
docs/.gitignore vendored
View File

@ -18,3 +18,5 @@
npm-debug.log*
yarn-debug.log*
yarn-error.log*
venv/

View File

@ -1 +0,0 @@
20.16.0

View File

@ -1,41 +0,0 @@
# Website
This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
### Installation
```
$ yarn
```
### Local Development
```
$ yarn start
```
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
### Build
```
$ yarn build
```
This command generates static content into the `build` directory and can be served using any static contents hosting service.
### Deployment
Using SSH:
```
$ USE_SSH=true yarn deploy
```
Not using SSH:
```
$ GIT_USER=<Your GitHub username> yarn deploy
```
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.

View File

@ -1,3 +0,0 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};

View File

@ -1,174 +1,6 @@
---
sidebar_position: 2
---
# All Configuration Options
# Configuration
The `config.conf` file contains all the options you can change, these options are listed below:
# Configuration - External Tools
## FFmpegPath
Type: `string`
Default: `""`
Allowed values: Any valid path or `""`
Description: This is the path to the FFmpeg executable (`ffmpeg.exe` on Windows and `ffmpeg` on Linux/macOS).
If the path is not set then the program will try to find it in both the same directory as the OF-DL executable as well
as the PATH environment variable.
:::note
If you are using a Windows path, you will need to escape the backslashes, e.g. `"C:\\ffmpeg\\bin\\ffmpeg.exe"`
For example, this is not valid: `"C:\some\path\ffmpeg.exe"`, but `"C:/some/path/ffmpeg.exe"` and `"C:\\some\\path\\ffmpeg.exe"` are both valid.
:::
# Configuration - Download Settings
## DownloadAvatarHeaderPhoto
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Avatar and header images will be downloaded if set to `true`
## DownloadPaidPosts
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Paid posts will be downloaded if set to `true`
## DownloadPosts
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Free posts will be downloaded if set to `true`
## DownloadArchived
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Posts in the "Archived" tab will be downloaded if set to `true`
## DownloadStreams
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Posts in the "Streams" tab will be downloaded if set to `true`
## DownloadStories
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Stories on a user's profile will be downloaded if set to `true`
## DownloadHighlights
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Highlights on a user's will be downloaded if set to `true`
## DownloadMessages
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Free media within messages (including paid message previews) will be downloaded if set to `true`
## DownloadPaidMessages
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Paid media within messages (excluding paid message previews) will be downloaded if set to `true`
## DownloadImages
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Images will be downloaded if set to `true`
## DownloadVideos
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Videos will be downloaded if set to `true`
## DownloadAudios
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Audios will be downloaded if set to `true`
## IgnoreOwnMessages
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: By default (or when set to `false`), messages that were sent by yourself will be added to the metadata DB and any media which has been sent by yourself will be downloaded. If set to `true`, the program will not add messages sent by yourself to the metadata DB and will not download any media which has been sent by yourself.
## DownloadPostsIncrementally
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: If set to `true`, only new posts will be downloaded from the date of the last post that was downloaded based off what's in the `user_data.db` file.
If set to `false`, the default behaviour will apply, and all posts will be gathered and compared against the database to see if they need to be downloaded or not.
This page contains detailed information for each configuration option supported by OF-DL. For information about the structure of the `config.conf` file or a simple list of these configuration options, go to the [configuration page](/config/configuration).
## BypassContentForCreatorsWhoNoLongerExist
@ -182,134 +14,6 @@ Description: When a creator no longer exists (their account has been deleted), m
Purchased content, however, will still be accessible by downloading media usisng the "Download Purchased Tab" menu option
or with the [NonInteractiveModePurchasedTab](#noninteractivemodepurchasedtab) config option when downloading media in non-interactive mode.
## DownloadDuplicatedMedia
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: By default (or when set to `false`), the program will not download duplicated media. If set to `true`, duplicated media will be downloaded.
## SkipAds
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: Posts and messages that contain #ad or free trial links will be ignored if set to `true`
## DownloadPath
Type: `string`
Default: `""`
Allowed values: Any valid path
Description: If left blank then content will be downloaded to `__user_data__/sites/OnlyFans/{username}`.
If you set the download path to `"S:/"`, then content will be downloaded to `S:/{username}`
:::note
If you are using a Windows path, you will need to escape the backslashes, e.g. `"C:\\Users\\user\\Downloads\\OnlyFans\\"`
Please make sure your path ends with a `/`
:::
## DownloadOnlySpecificDates
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: If set to `true`, posts will be downloaded based on the [DownloadDateSelection](#downloaddateselection) and [CustomDate](#customdate) config options.
If set to `false`, all posts will be downloaded.
## DownloadDateSelection
Type: `string`
Default: `"before"`
Allowed values: `"before"`, `"after"`
Description: [DownloadOnlySpecificDates](#downloadonlyspecificdates) needs to be set to `true` for this to work. This will get all posts from before
the date if set to `"before"`, and all posts from the date you specify up until the current date if set to `"after"`.
The date you specify will be in the [CustomDate](#customdate) config option.
## CustomDate
Type: `string`
Default: `null`
Allowed values: Any date in `yyyy-mm-dd` format or `null`
Description: [DownloadOnlySpecificDates](#downloadonlyspecificdates) needs to be set to `true` for this to work.
This date will be used when you are trying to download between/after a certain date. See [DownloadOnlySpecificDates](#downloadonlyspecificdates) and
[DownloadDateSelection](#downloaddateselection) for more information.
# Configuration - File Settings
## PaidPostFileNameFormat
Type: `string`
Default: `""`
Allowed values: Any valid string
Description: Please refer to [custom filename formats](/docs/config/custom-filename-formats#paidpostfilenameformat) page to see what fields you can use.
## PostFileNameFormat
Type: `string`
Default: `""`
Allowed values: Any valid string
Description: Please refer to the [custom filename formats](/docs/config/custom-filename-formats#postfilenameformat) page to see what fields you can use.
## PaidMessageFileNameFormat
Type: `string`
Default: `""`
Allowed values: Any valid string
Description: Please refer to [custom filename formats](/docs/config/custom-filename-formats#paidmessagefilenameformat) page to see what fields you can use.
## MessageFileNameFormat
Type: `string`
Default: `""`
Allowed values: Any valid string
Description: Please refer to [custom filename formats](/docs/config/custom-filename-formats#messagefilenameformat) page to see what fields you can use.
## RenameExistingFilesWhenCustomFormatIsSelected
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: When `true`, any current files downloaded will have the current format applied to them.
When `false`, only new files will have the current format applied to them.
# Configuration - Creator-Specific Configurations
## CreatorConfigs
Type: `object`
@ -322,7 +26,7 @@ Description: This configuration options allows you to set file name formats for
This is useful if you want to have different file name formats for different creators. The values set here will override the global values set in the config file
(see [PaidPostFileNameFormat](#paidpostfilenameformat), [PostFileNameFormat](#postfilenameformat),
[PaidMessageFileNAmeFormat](#paidmessagefilenameformat), and [MessageFileNameFormat](#messagefilenameformat)).
For more information on the file name formats, see the [custom filename formats](/docs/config/custom-filename-formats) page.
For more information on the file name formats, see the [custom filename formats](/config/custom-filename-formats) page.
Example:
```
@ -342,7 +46,259 @@ Example:
}
```
# Configuration - Folder Settings
## CustomDate
Type: `string`
Default: `null`
Allowed values: Any date in `yyyy-mm-dd` format or `null`
Description: [DownloadOnlySpecificDates](#downloadonlyspecificdates) needs to be set to `true` for this to work.
This date will be used when you are trying to download between/after a certain date. See [DownloadOnlySpecificDates](#downloadonlyspecificdates) and
[DownloadDateSelection](#downloaddateselection) for more information.
## DisableBrowserAuth
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: The built-in/bundled web browser will not be used to authenticate OF-DL if set to `true`. If set to `true`,
an `auth.json` file will need to be provided using a [legacy authentication method](/config/auth#legacy-methods).
If set to `true`, the `auth.json` file will not be deleted if authentication fails. If set to `false` (the default
behavior), OF-DL will delete the `auth.json` file if authentication fails.
## DownloadArchived
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Posts in the "Archived" tab will be downloaded if set to `true`
## DownloadAudios
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Audios will be downloaded if set to `true`
## DownloadAvatarHeaderPhoto
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Avatar and header images will be downloaded if set to `true`
## DownloadDateSelection
Type: `string`
Default: `"before"`
Allowed values: `"before"`, `"after"`
Description: [DownloadOnlySpecificDates](#downloadonlyspecificdates) needs to be set to `true` for this to work. This will get all posts from before
the date if set to `"before"`, and all posts from the date you specify up until the current date if set to `"after"`.
The date you specify will be in the [CustomDate](#customdate) config option.
## DownloadDuplicatedMedia
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: By default (or when set to `false`), the program will not download duplicated media. If set to `true`, duplicated media will be downloaded.
## DownloadHighlights
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Highlights on a user's will be downloaded if set to `true`
## DownloadImages
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Images will be downloaded if set to `true`
## DownloadLimitInMbPerSec
Type: `integer`
Default: `4`
Allowed values: Any positive integer
Description: The download rate in MB per second. This will only be used if [LimitDownloadRate](#limitdownloadrate) is set to `true`.
## DownloadMessages
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Free media within messages (including paid message previews) will be downloaded if set to `true`
## DownloadOnlySpecificDates
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: If set to `true`, posts will be downloaded based on the [DownloadDateSelection](#downloaddateselection) and [CustomDate](#customdate) config options.
If set to `false`, all posts will be downloaded.
## DownloadPaidMessages
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Paid media within messages (excluding paid message previews) will be downloaded if set to `true`
## DownloadPaidPosts
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Paid posts will be downloaded if set to `true`
## DownloadPath
Type: `string`
Default: `""`
Allowed values: Any valid path
Description: If left blank then content will be downloaded to `__user_data__/sites/OnlyFans/{username}`.
If you set the download path to `"S:/"`, then content will be downloaded to `S:/{username}`
!!! note
If you are using a Windows path, you will need to escape the backslashes, e.g. `"C:\\Users\\user\\Downloads\\OnlyFans\\"`
Please make sure your path ends with a `/`
## DownloadPosts
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Free posts will be downloaded if set to `true`
## DownloadPostsIncrementally
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: If set to `true`, only new posts will be downloaded from the date of the last post that was downloaded based off what's in the `user_data.db` file.
If set to `false`, the default behaviour will apply, and all posts will be gathered and compared against the database to see if they need to be downloaded or not.
## DownloadStories
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Stories on a user's profile will be downloaded if set to `true`
## DownloadStreams
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Posts in the "Streams" tab will be downloaded if set to `true`
## DownloadVideos
Type: `boolean`
Default: `true`
Allowed values: `true`, `false`
Description: Videos will be downloaded if set to `true`
## FFmpegPath
Type: `string`
Default: `""`
Allowed values: Any valid path or `""`
Description: This is the path to the FFmpeg executable (`ffmpeg.exe` on Windows and `ffmpeg` on Linux/macOS).
If the path is not set then the program will try to find it in both the same directory as the OF-DL executable as well
as the PATH environment variable.
!!! note
If you are using a Windows path, you will need to escape the backslashes, e.g. `"C:\\ffmpeg\\bin\\ffmpeg.exe"`
For example, this is not valid: `"C:\some\path\ffmpeg.exe"`, but `"C:/some/path/ffmpeg.exe"` and `"C:\\some\\path\\ffmpeg.exe"` are both valid.
## FolderPerMessage
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: A folder will be created for each message (containing all the media for that message) if set to `true`.
When set to `false`, message media will be downloaded into the `Messages/Free` folder.
## FolderPerPaidMessage
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: A folder will be created for each paid message (containing all the media for that message) if set to `true`.
When set to `false`, paid message media will be downloaded into the `Messages/Paid` folder.
## FolderPerPaidPost
@ -366,7 +322,7 @@ Allowed values: `true`, `false`
Description: A folder will be created for each post (containing all the media for that post) if set to `true`.
When set to `false`, post media will be downloaded into the `Posts/Free` folder.
## FolderPerPaidMessage
## IgnoreOwnMessages
Type: `boolean`
@ -374,21 +330,18 @@ Default: `false`
Allowed values: `true`, `false`
Description: A folder will be created for each paid message (containing all the media for that message) if set to `true`.
When set to `false`, paid message media will be downloaded into the `Messages/Paid` folder.
Description: By default (or when set to `false`), messages that were sent by yourself will be added to the metadata DB and any media which has been sent by yourself will be downloaded. If set to `true`, the program will not add messages sent by yourself to the metadata DB and will not download any media which has been sent by yourself.
## FolderPerMessage
## IgnoredUsersListName
Type: `boolean`
Type: `string`
Default: `false`
Default: `""`
Allowed values: `true`, `false`
Allowed values: The name of a list of users you have created on OnlyFans or `""`
Description: A folder will be created for each message (containing all the media for that message) if set to `true`.
When set to `false`, message media will be downloaded into the `Messages/Free` folder.
# Configuration - Subscription Settings
Description: When set to the name of a list, users in the list will be ignored when scraping content.
If set to `""` (or an invalid list name), no users will be ignored when scraping content.
## IncludeExpiredSubscriptions
@ -410,18 +363,36 @@ Allowed values: `true`, `false`
Description: If set to `true`, media from restricted creators will be downloaded. If set to `false`, restricted creators will be ignored.
## IgnoredUsersListName
## LimitDownloadRate
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: If set to `true`, the download rate will be limited to the value set in [DownloadLimitInMbPerSec](#downloadlimitinmbpersec).
## LoggingLevel
Type: `string`
Default: `"Error"`
Allowed values: `"Verbose"`, `"Debug"`, `"Information"`, `"Warning"`, `"Error"`, `"Fatal"`
Description: The level of logging that will be saved to the log files in the `logs` folder.
When requesting help with an issue, it is recommended to set this to `"Verbose"` and provide the log file.
## MessageFileNameFormat
Type: `string`
Default: `""`
Allowed values: The name of a list of users you have created on OnlyFans or `""`
Allowed values: Any valid string
Description: When set to the name of a list, users in the list will be ignored when scraping content.
If set to `""` (or an invalid list name), no users will be ignored when scraping content.
# Configuration - Interaction Settings
Description: Please refer to [custom filename formats](/config/custom-filename-formats#messagefilenameformat) page to see what fields you can use.
## NonInteractiveMode
@ -435,15 +406,14 @@ Description: If set to `true`, the program will run without any input from the u
(unless [NonInteractiveModeListName](#noninteractivemodelistname) or [NonInteractiveModePurchasedTab](#noninteractivemodepurchasedtab) are configured).
If set to `false`, the default behaviour will apply, and you will be able to choose an option from the menu.
:::warning
!!! warning
If NonInteractiveMode is enabled, you will be unable to authenticate OF-DL using the standard authentication method.
Before you can run OF-DL in NonInteractiveMode, you must either
If NonInteractiveMode is enabled, you will be unable to authenticate OF-DL using the standard authentication method.
Before you can run OF-DL in NonInteractiveMode, you must either
1. Generate an auth.json file by running OF-DL with NonInteractiveMode disabled and authenticating OF-DL using the standard method **OR**
2. Generate an auth.json file by using a [legacy authentication method](/docs/config/auth#legacy-methods)
1. Generate an auth.json file by running OF-DL with NonInteractiveMode disabled and authenticating OF-DL using the standard method **OR**
2. Generate an auth.json file by using a [legacy authentication method](/config/auth#legacy-methods)
:::
## NonInteractiveModeListName
@ -469,7 +439,72 @@ Description: When set to `true`, non-interactive mode will only download content
(when [NonInteractiveMode](#noninteractivemode) is set to `true`). If set to `false`, all users will be scraped
(unless [NonInteractiveModeListName](#noninteractivemodelistname) is configured).
# Configuration - Performance Settings
## PaidMessageFileNameFormat
Type: `string`
Default: `""`
Allowed values: Any valid string
Description: Please refer to [custom filename formats](/config/custom-filename-formats#paidmessagefilenameformat) page to see what fields you can use.
## PaidPostFileNameFormat
Type: `string`
Default: `""`
Allowed values: Any valid string
Description: Please refer to [custom filename formats](/config/custom-filename-formats#paidpostfilenameformat) page to see what fields you can use.
## PostFileNameFormat
Type: `string`
Default: `""`
Allowed values: Any valid string
Description: Please refer to the [custom filename formats](/config/custom-filename-formats#postfilenameformat) page to see what fields you can use.
## RenameExistingFilesWhenCustomFormatIsSelected
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: When `true`, any current files downloaded will have the current format applied to them.
When `false`, only new files will have the current format applied to them.
## ShowScrapeSize
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: If set to `true`, the total scrape size will be shown in bytes when downloading posts, messages, etc.
When set to `false`, the total number of posts, messages, etc. will be shown.
!!! warning
Setting this to `true` will have an impact on performance as it has to go through each piece of media and get the size
from the server, which is a big task and can sometimes get you rate limited.
## SkipAds
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: Posts and messages that contain #ad or free trial links will be ignored if set to `true`
## Timeout
@ -481,36 +516,3 @@ Allowed values: Any positive integer or `-1`
Description: You won't need to set this, but if you see errors about the configured timeout of 100 seconds elapsing then
you could set this to be more than 100. It is recommended that you leave this as the default value.
## LimitDownloadRate
Type: `boolean`
Default: `false`
Allowed values: `true`, `false`
Description: If set to `true`, the download rate will be limited to the value set in [DownloadLimitInMbPerSec](#downloadlimitinmbpersec).
## DownloadLimitInMbPerSec
Type: `integer`
Default: `4`
Allowed values: Any positive integer
Description: The download rate in MB per second. This will only be used if [LimitDownloadRate](#limitdownloadrate) is set to `true`.
# Configuration - Logging/Debug Settings
## LoggingLevel
Type: `string`
Default: `"Error"`
Allowed values: `"Verbose"`, `"Debug"`, `"Information"`, `"Warning"`, `"Error"`, `"Fatal"`
Description: The level of logging that will be saved to the log files in the `logs` folder.
When requesting help with an issue, it is recommended to set this to `"Verbose"` and provide the log file.

View File

@ -1,7 +1,3 @@
---
sidebar_position: 1
---
# Authentication
## Current Method (versions >= 1.9.0)
@ -10,18 +6,14 @@ OF DL allows you to log in to your OnlyFans account directly. This simplifies th
When prompted by the application, log into your OnlyFans account. Do not close the opened window, tab, or navigate away to another webpage.
The new window will close automatically when the authentication process has finished.
:::warning
!!! warning
Some users have reported that "Sign in with Google" has not been working with this authentication method.
If you use the Google sign-in option to log into your OnlyFans account, use one of the [legacy authentication methods](#legacy-methods) described below.
Some users have reported that "Sign in with Google" has not been working with this authentication method.
If you use the Google sign-in option to log into your OnlyFans account, use one of the [legacy authentication methods](#legacy-methods) described below.
:::
!!! info
:::info
If you are using docker, follow the special [authentication instructions documented](/docs/installation/docker) to authenticate OF-DL
:::
If you are using docker, follow the special [authentication instructions documented](/installation/docker) to authenticate OF-DL
## Legacy Methods

View File

@ -1,8 +1,4 @@
---
sidebar_position: 4
---
# CDM (optional, but recommended)
# CDM (optional, but recommended)
Without Widevine/CDM keys, OF DL uses the 3rd party website cdrm-project.org for decrypting DRM videos. With keys, OF DL directly communicates with OnlyFans. It is highly recommended to use keys, both in case the cdrm-project site is having issues (which occur frequently, in our experience) and it will result in faster download speeds, too. However, this is optional, as things will work as long as cdrm-project is functional.
@ -12,13 +8,13 @@ Two files need to be generated, called `device_client_id_blob` and `device_priva
You can find a tutorial on how to do this [here](https://forum.videohelp.com/threads/408031-Dumping-Your-own-L3-CDM-with-Android-Studio).
I have also made some [batch scripts](https://github.com/sim0n00ps/L3-Dumping) to run the commands included in the guide linked above that can save you some time and makes the process a little simpler.
I have also made some [batch scripts](https://github.com/sim0n00ps/L3-Dumping) to run the commands included in the guide linked above that can save you some time and makes the process a little simpler.
## Discord Method
Generating these keys can be complicated, so the team (shout out to Masaki here) have set up a bot on the Discord server to help securely deliver these keys to users who need them. You can join the discord sever [here](https://discord.com/invite/6bUW8EJ53j)
After joining, visit the bot [here](https://discord.com/channels/1198332760947966094/1333835216313122887) (the pinned post in the `#ofdl` support forum)
After joining, visit the bot [here](https://discord.com/channels/1198332760947966094/1333835216313122887) (the pinned post in the `#ofdl` support forum)
## After install

View File

@ -0,0 +1,68 @@
# Configuration
The `config.conf` file contains all the options you can change. Click on a configuration option below for more
information about what it does, its default value, and the allowed values.
- Auth
- [DisableBrowserAuth](/config/all-configuration-options#disablebrowserauth)
- External
- [FFmpegPath](/config/all-configuration-options#ffmpegpath)
- Download
- [IgnoreOwnMessages](/config/all-configuration-options#ignoreownmessages)
- [DownloadPostsIncrementally](/config/all-configuration-options#downloadpostsincrementally)
- [BypassContentForCreatorsWhoNoLongerExist](/config/all-configuration-options#bypasscontentforcreatorswhonolongerexist)
- [DownloadDuplicatedMedia](/config/all-configuration-options#downloadduplicatedmedia)
- [SkipAds](/config/all-configuration-options#skipads)
- [DownloadPath](/config/all-configuration-options#downloadpath)
- [DownloadOnlySpecificDates](/config/all-configuration-options#downloadonlyspecificdates)
- [DownloadDateSelection](/config/all-configuration-options#downloaddateselection)
- [CustomDate](/config/all-configuration-options#customdate)
- [ShowScrapeSize](/config/all-configuration-options#showscrapesize)
- Media
- [DownloadAvatarHeaderPhoto](/config/all-configuration-options#downloadavatarheaderphoto)
- [DownloadPaidPosts](/config/all-configuration-options#downloadpaidposts)
- [DownloadPosts](/config/all-configuration-options#downloadposts)
- [DownloadArchived](/config/all-configuration-options#downloadarchived)
- [DownloadStreams](/config/all-configuration-options#downloadstreams)
- [DownloadStories](/config/all-configuration-options#downloadstories)
- [DownloadHighlights](/config/all-configuration-options#downloadhighlights)
- [DownloadMessages](/config/all-configuration-options#downloadmessages)
- [DownloadPaidMessages](/config/all-configuration-options#downloadpaidmessages)
- [DownloadImages](/config/all-configuration-options#downloadimages)
- [DownloadVideos](/config/all-configuration-options#downloadvideos)
- [DownloadAudios](/config/all-configuration-options#downloadaudios)
- File
- [PaidPostFileNameFormat](/config/all-configuration-options#paidpostfilenameformat)
- [PostFileNameFormat](/config/all-configuration-options#postfilenameformat)
- [PaidMessageFileNameFormat](/config/all-configuration-options#paidmessagefilenameformat)
- [MessageFileNameFormat](/config/all-configuration-options#messagefilenameformat)
- [RenameExistingFilesWhenCustomFormatIsSelected](/config/all-configuration-options#renameexistingfileswhencustomformatisselected)
- [CreatorConfigs](/config/all-configuration-options#creatorconfigs)
- Folder
- [FolderPerPaidPost](/config/all-configuration-options#folderperpaidpost)
- [FolderPerPost](/config/all-configuration-options#folderperpost)
- [FolderPerPaidMessage](/config/all-configuration-options#folderperpaidmessage)
- [FolderPerMessage](/config/all-configuration-options#folderpermessage)
- Subscriptions
- [IncludeExpiredSubscriptions](/config/all-configuration-options#includeexpiredsubscriptions)
- [IncludeRestrictedSubscriptions](/config/all-configuration-options#includerestrictedsubscriptions)
- [IgnoredUsersListName](/config/all-configuration-options#ignoreduserslistname)
- Interaction
- [NonInteractiveMode](/config/all-configuration-options#noninteractivemode)
- [NonInteractiveModeListName](/config/all-configuration-options#noninteractivemodelistname)
- [NonInteractiveModePurchasedTab](/config/all-configuration-options#noninteractivemodepurchasedtab)
- Performance
- [Timeout](/config/all-configuration-options#timeout)
- [LimitDownloadRate](/config/all-configuration-options#limitdownloadrate)
- [DownloadLimitInMbPerSec](/config/all-configuration-options#downloadlimitinmbpersec)
- Logging
- [LoggingLevel](/config/all-configuration-options#logginglevel)

View File

@ -1,7 +1,3 @@
---
sidebar_position: 3
---
# Custom Filename Formats
In the config.conf file you can now specify some custom filename formats that will be used when downloading files. I have had to add 4 new fields to the auth.json file, these are:

View File

@ -1,8 +0,0 @@
{
"label": "Configuration",
"position": 2,
"link": {
"type": "generated-index",
"description": "Configuration options and information for OF-DL"
}
}

View File

@ -1,8 +0,0 @@
{
"label": "Installation",
"position": 1,
"link": {
"type": "generated-index",
"description": "Installation instructions for OF-DL"
}
}

View File

@ -1,123 +0,0 @@
// @ts-check
// `@type` JSDoc annotations allow editor autocompletion and type checking
// (when paired with `@ts-check`).
// There are various equivalent ways to declare your Docusaurus config.
// See: https://docusaurus.io/docs/api/docusaurus-config
import {themes as prismThemes} from 'prism-react-renderer';
/** @type {import('@docusaurus/types').Config} */
const config = {
title: 'OF-DL',
tagline: 'A media scraper for OnlyFans with DRM video support',
favicon: 'img/logo.png',
// Set the production url of your site here
url: 'https://sim0n00ps.github.io',
// Set the /<baseUrl>/ pathname under which your site is served
// For GitHub pages deployment, it is often '/<projectName>/'
baseUrl: '/OF-DL/',
// GitHub pages deployment config.
// If you aren't using GitHub pages, you don't need these.
organizationName: 'sim0n00ps', // Usually your GitHub org/user name.
projectName: 'OF-DL', // Usually your repo name.
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
// Even if you don't use internationalization, you can use this field to set
// useful metadata like html lang. For example, if your site is Chinese, you
// may want to replace "en" with "zh-Hans".
i18n: {
defaultLocale: 'en',
locales: ['en'],
},
presets: [
[
'@docusaurus/preset-classic',
/** @type {import('@docusaurus/preset-classic').Options} */
({
docs: {
sidebarPath: './sidebars.js',
},
blog: false,
}),
],
],
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
colorMode: {
respectPrefersColorScheme: true,
},
navbar: {
title: 'OF-DL',
logo: {
alt: 'OF-DL Logo',
src: 'img/logo.png',
},
items: [
{
type: 'docSidebar',
sidebarId: 'generatedSidebar',
position: 'left',
label: 'Docs',
},
{
href: 'https://github.com/sim0n00ps/OF-DL',
label: 'GitHub',
position: 'right',
},
],
},
footer: {
style: 'dark',
links: [
{
title: 'Docs',
items: [
{
label: 'Installation',
to: '/docs/installation/windows',
},
{
label: 'Configuration',
to: '/docs/config/auth',
},
{
label: 'Running the Program',
to: '/docs/running-the-program',
},
],
},
{
title: 'Community',
items: [
{
label: 'Discord',
href: 'https://discord.com/invite/6bUW8EJ53j',
},
],
},
{
title: 'More',
items: [
{
label: 'GitHub',
href: 'https://github.com/sim0n00ps/OF-DL',
},
],
},
],
},
prism: {
theme: prismThemes.github,
darkTheme: prismThemes.dracula,
},
}),
};
export default config;

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

BIN
docs/img/logo.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 59 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

8
docs/index.md Normal file
View File

@ -0,0 +1,8 @@
# Welcome to OF-DL
C# console app to download all of the media from Onlyfans accounts with DRM video downloading support.
!!! info "PLEASE READ BEFORE DOWNLOADING"
THIS TOOL CANNOT BYPASS PAYWALLS, IT CAN ONLY DOWNLOAD CONTENT YOU HAVE ACCESS TO, PLEASE DO NOT DOWNLOAD THIS TOOL THINKING YOU CAN BYPASS PAYING FOR THINGS!!!!!
Join the discord [here](https://discord.com/invite/6bUW8EJ53j)

View File

@ -1,8 +1,4 @@
---
sidebar_position: 2
---
# Docker
# Docker
## Running OF-DL

View File

@ -1,11 +1,7 @@
---
sidebar_position: 3
---
# Linux
# Linux
A Linux release of OF-DL is not available at this time, however you can run OF-DL on Linux using Docker.
Please refer to the [Docker](/docs/installation/docker) page for instructions on how to run OF-DL in a Docker container.
Please refer to the [Docker](/installation/docker) page for instructions on how to run OF-DL in a Docker container.
If you do not have Docker installed, you can download it from [here](https://docs.docker.com/desktop/install/linux-install/).
If you would like to run OF-DL natively on Linux, you can build it from source by following the instructions below.
@ -38,7 +34,7 @@ dotnet publish -p:Version=%VERSION% -c Release
cd 'OF DL/bin/Release/net8.0'
```
- Download the windows release as described on [here](/docs/installation/windows#installation).
- Download the windows release as described on [here](/installation/windows#installation).
- Add the `config.json` and `rules.json` files as well as the `cdm` folder to the `OF DL/bin/Release/net8.0` folder.
- Run the application

View File

@ -1,9 +1,5 @@
---
sidebar_position: 4
---
# macOS
# macOS
macOS releases of OF-DL are not available at this time, however you can run OF-DL on macOS using Docker.
Please refer to the [Docker](/docs/installation/docker) page for instructions on how to run OF-DL in a Docker container.
Please refer to the [Docker](/installation/docker) page for instructions on how to run OF-DL in a Docker container.
If you do not have Docker installed, you can download it from [here](https://docs.docker.com/desktop/install/mac-install/).

View File

@ -1,8 +1,4 @@
---
sidebar_position: 1
---
# Windows
# Windows
## Requirements
@ -11,7 +7,7 @@ sidebar_position: 1
You will need to download FFmpeg. You can download it from [here](https://www.gyan.dev/ffmpeg/builds/).
Make sure you download `ffmpeg-release-essentials.zip`. Unzip it anywhere on your computer. You only need `ffmpeg.exe`, and you can ignore the rest.
Move `ffmpeg.exe` to the same folder as `OF DL.exe` (downloaded in the installation steps below). If you choose to move `ffmpeg.exe` to a different folder,
you will need to specify the path to `ffmpeg.exe` in the config file (see the `FFmpegPath` [config option](/docs/config/configuration#ffmpegpath)).
you will need to specify the path to `ffmpeg.exe` in the config file (see the `FFmpegPath` [config option](/config/configuration#ffmpegpath)).
## Installation

15550
docs/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,44 +0,0 @@
{
"name": "of-dl",
"version": "0.0.0",
"private": true,
"scripts": {
"docusaurus": "docusaurus",
"start": "docusaurus start",
"build": "docusaurus build",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"clear": "docusaurus clear",
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids"
},
"dependencies": {
"@docusaurus/core": "3.4.0",
"@docusaurus/preset-classic": "3.4.0",
"@mdx-js/react": "^3.0.0",
"clsx": "^2.0.0",
"prism-react-renderer": "^2.3.0",
"react": "^18.0.0",
"react-dom": "^18.0.0"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "3.4.0",
"@docusaurus/types": "3.4.0"
},
"browserslist": {
"production": [
">0.5%",
"not dead",
"not op_mini all"
],
"development": [
"last 3 chrome version",
"last 3 firefox version",
"last 5 safari version"
]
},
"engines": {
"node": ">=18.0"
}
}

View File

@ -1,10 +1,6 @@
---
sidebar_position: 3
---
# Running the Program
# Running the Program
Once you are happy you have filled everything in [auth.json](/docs/config/auth) correctly, you can double click OF-DL.exe and you should see a command prompt window appear, it should look something like this:
Once you are happy you have filled everything in [auth.json](/config/auth) correctly, you can double click OF-DL.exe and you should see a command prompt window appear, it should look something like this:
![CLI welcome banner](/img/welcome_banner.png)

View File

@ -1,33 +0,0 @@
/**
* Creating a sidebar enables you to:
- create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation
The sidebars can be generated from the filesystem, or explicitly defined here.
Create as many sidebars as you want.
*/
// @ts-check
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
const sidebars = {
// By default, Docusaurus generates a sidebar from the docs folder structure
generatedSidebar: [{type: 'autogenerated', dirName: '.'}],
// But you can create a sidebar manually
/*
tutorialSidebar: [
'intro',
'hello',
{
type: 'category',
label: 'Tutorial',
items: ['tutorial-basics/create-a-document'],
},
],
*/
};
export default sidebars;

View File

@ -1,39 +0,0 @@
import clsx from 'clsx';
import Link from '@docusaurus/Link';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import Layout from '@theme/Layout';
import Heading from '@theme/Heading';
import styles from './index.module.css';
function HomepageHeader() {
const {siteConfig} = useDocusaurusContext();
return (
<header className={clsx('hero hero--primary', styles.heroBanner)}>
<div className="container">
<Heading as="h1" className="hero__title">
{siteConfig.title}
</Heading>
<p className="hero__subtitle">{siteConfig.tagline}</p>
<div className={styles.buttons}>
<Link
className="button button--secondary button--lg"
to="docs/installation/windows">
Installation
</Link>
</div>
</div>
</header>
);
}
export default function Home() {
const {siteConfig} = useDocusaurusContext();
return (
<Layout
title={siteConfig.title}
description={siteConfig.tagline}>
<HomepageHeader />
</Layout>
);
}

View File

@ -1,23 +0,0 @@
/**
* CSS files with the .module.css suffix will be treated as CSS modules
* and scoped locally.
*/
.heroBanner {
padding: 4rem 0;
text-align: center;
position: relative;
overflow: hidden;
}
@media screen and (max-width: 996px) {
.heroBanner {
padding: 2rem;
}
}
.buttons {
display: flex;
align-items: center;
justify-content: center;
}

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 769 B

60
mkdocs.yml Normal file
View File

@ -0,0 +1,60 @@
site_name: OF-DL Docs
site_url: https://docs.ofdl.tools
nav:
- Home: index.md
- Running the Program: running-the-program.md
- Config:
- Authentication: config/auth.md
- CDM (optional, but recommended): config/cdm.md
- Configuration: config/configuration.md
- All Configuration Options: config/all-configuration-options.md
- Custom Filename Formats: config/custom-filename-formats.md
- Installation:
- Windows: installation/windows.md
- macOS: installation/macos.md
- Linux: installation/linux.md
- Docker: installation/docker.md
theme:
name: material
features:
- navigation.tabs
- navigation.top
- navigation.instant
- navigation.expand
- navigation.sections
- navigation.tracking
- navigation.search.highlight
- navigation.search.suggest
- navigation.search.share
- navigation.search.suggest
- navigation.search.share
- navigation.search.suggest
- navigation.search.share
language: en
palette:
- scheme: default
toggle:
icon: material/toggle-switch-off-outline
name: Switch to dark mode
primary: dark-blue
accent: white
- scheme: slate
toggle:
icon: material/toggle-switch
name: Switch to light mode
primary: dark-blue
accent: white
font:
text: Roboto
code: Roboto Mono
logo: img/logo.ico
favicon: img/logo.ico
markdown_extensions:
- admonition
- pymdownx.details
- pymdownx.superfences
extra:
social:
- icon: fontawesome/brands/discord
link: https://discord.com/invite/6bUW8EJ53j
copyright: "© 2025 OF-DL. All rights reserved."