onlycloud/ofdl dl.go

78 lines
2.4 KiB
Go

package main
import (
"fmt"
"os"
"strings"
)
func fileExists(path string) bool {
_, err := os.Stat(path)
return err == nil
}
func main() {
//needs changing to actual
paidMessageValue := "https://cdn3.onlyfans.com/dash/files,..."
paidMessageKey := "mediaId123"
path := "/path/to/download"
task := "download-task"
deviceFolder := "/path/to/device"
deviceName := "default"
hasSelectedUsers := true
clientIdBlobMissing := !fileExists(fmt.Sprintf("%s/%s/device_client_id_blob", deviceFolder, deviceName))
devicePrivateKeyMissing := !fileExists(fmt.Sprintf("%s/%s/device_private_key", deviceFolder, deviceName))
if strings.Contains(paidMessageValue, "cdn3.onlyfans.com/dash/files") {
parts := strings.Split(paidMessageValue, ",")
if len(parts) < 6 {
fmt.Println("Invalid media info string.")
return
}
mpdURL := parts[0]
policy := parts[1]
signature := parts[2]
kvp := parts[3]
mediaId := parts[4]
messageId := parts[5]
pssh, err := GetDRMMPDPSSH(mpdURL, policy, signature, kvp)
if err != nil || pssh == "" {
fmt.Println("Failed to get PSSH")
return
}
lastModified, _ := GetDRMMPDLastModified(mpdURL, policy, signature, kvp)
drmHeaders := GetDynamicHeaders(fmt.Sprintf("/api2/v2/users/media/%s/drm/message/%s", mediaId, messageId), "?type=widevine")
var decryptionKey string
if clientIdBlobMissing || devicePrivateKeyMissing {
decryptionKey, err = GetDecryptionKeyOFDL(drmHeaders, fmt.Sprintf("https://onlyfans.com/api2/v2/users/media/%s/drm/message/%s?type=widevine", mediaId, messageId), pssh)
} else {
decryptionKey, err = GetDecryptionKeyCDM(drmHeaders, fmt.Sprintf("https://onlyfans.com/api2/v2/users/media/%s/drm/message/%s?type=widevine", mediaId, messageId), pssh)
}
if err != nil {
fmt.Println("Failed to get decryption key:", err)
return
}
err = DownloadPurchasedMessageDRMVideo(mpdURL, decryptionKey, path)
if err != nil {
fmt.Println("Failed to download DRM video:", err)
}
} else {
// Simulated. needs changing for our needs
mediaInfo := "media-metadata"
messageInfo := "message-metadata"
err := DownloadPurchasedMedia(paidMessageValue, path, paidMessageKey, "Messages", task, "filenameFormat", messageInfo, mediaInfo, hasSelectedUsers)
if err != nil {
fmt.Println("Failed to download regular media:", err)
}
}
}