added real mfc preview
This commit is contained in:
parent
125a3018ae
commit
baa66cabcf
@ -1,2 +1,2 @@
|
||||
HTTPS_ENABLED=0
|
||||
HTTPS_ENABLED=1
|
||||
AUTH_RP_ORIGINS=https://l14pbbk95100006.tegdssd.de:9999,https://l14pbbk95100006.tegdssd.de:5173,https://localhost:9999,https://127.0.0.1:9999,https://10.0.1.25:9999,http://localhost:5173,http://127.0.0.1:5173,http://10.0.1.25:5173
|
||||
@ -51,15 +51,18 @@ func RecordStreamMFC(
|
||||
time.Sleep(5 * time.Second)
|
||||
}
|
||||
|
||||
if job != nil && strings.TrimSpace(mfc.AvatarURL) != "" {
|
||||
if job != nil {
|
||||
img := strings.TrimSpace(mfc.PreviewImageURL())
|
||||
if img != "" {
|
||||
jobsMu.Lock()
|
||||
job.ModelImageURL = strings.TrimSpace(mfc.AvatarURL)
|
||||
job.Avatar = strings.TrimSpace(mfc.AvatarURL)
|
||||
job.ModelImageURL = img
|
||||
job.Avatar = img
|
||||
job.PreviewState = "public"
|
||||
jobsMu.Unlock()
|
||||
|
||||
_ = publishJobSnapshot(job.ID)
|
||||
}
|
||||
}
|
||||
|
||||
// ✅ erst jetzt die Video URL holen (weil public)
|
||||
stream, err := mfc.GetSelectedStream(ctx, false, hc.userAgent)
|
||||
@ -82,9 +85,9 @@ func RecordStreamMFC(
|
||||
job.PreviewCookie = ""
|
||||
job.PreviewUA = hc.userAgent
|
||||
|
||||
if strings.TrimSpace(mfc.AvatarURL) != "" {
|
||||
job.ModelImageURL = strings.TrimSpace(mfc.AvatarURL)
|
||||
job.Avatar = strings.TrimSpace(mfc.AvatarURL)
|
||||
if img := strings.TrimSpace(mfc.PreviewImageURL()); img != "" {
|
||||
job.ModelImageURL = img
|
||||
job.Avatar = img
|
||||
job.PreviewState = "public"
|
||||
}
|
||||
|
||||
@ -109,6 +112,9 @@ type MyFreeCams struct {
|
||||
ServerID string
|
||||
Phase string
|
||||
AvatarURL string
|
||||
|
||||
RawUserID int
|
||||
SnapURL string
|
||||
}
|
||||
|
||||
type mfcUsernameLookupResp struct {
|
||||
@ -121,11 +127,58 @@ type mfcUsernameLookupResp struct {
|
||||
Sessions []struct {
|
||||
ServerName string `json:"server_name"`
|
||||
Phase string `json:"phase"`
|
||||
SnapURL string `json:"snap_url"`
|
||||
} `json:"sessions"`
|
||||
} `json:"user"`
|
||||
} `json:"result"`
|
||||
}
|
||||
|
||||
func normalizeMFCSnapURL(raw string) string {
|
||||
raw = strings.TrimSpace(raw)
|
||||
if raw == "" {
|
||||
return ""
|
||||
}
|
||||
|
||||
if strings.HasPrefix(raw, "//") {
|
||||
raw = "https:" + raw
|
||||
} else if strings.HasPrefix(raw, "/") {
|
||||
raw = "https://snap.mfcimg.com" + raw
|
||||
} else if !strings.HasPrefix(raw, "http://") && !strings.HasPrefix(raw, "https://") {
|
||||
raw = "https://snap.mfcimg.com/" + strings.TrimLeft(raw, "/")
|
||||
}
|
||||
|
||||
u, err := url.Parse(raw)
|
||||
if err != nil || u.Scheme == "" || u.Host == "" {
|
||||
return raw
|
||||
}
|
||||
|
||||
q := u.Query()
|
||||
q.Set("no-cache", strconv.FormatInt(time.Now().UnixNano(), 10))
|
||||
u.RawQuery = q.Encode()
|
||||
|
||||
return u.String()
|
||||
}
|
||||
|
||||
func buildMFCSnapimgURL(serverID string, rawUserID int) string {
|
||||
serverID = strings.TrimSpace(serverID)
|
||||
if serverID == "" || rawUserID <= 0 {
|
||||
return ""
|
||||
}
|
||||
|
||||
return normalizeMFCSnapURL(fmt.Sprintf(
|
||||
"https://snap.mfcimg.com/snapimg/%s/853x480/mfc_%d",
|
||||
serverID,
|
||||
rawUserID,
|
||||
))
|
||||
}
|
||||
|
||||
func (m *MyFreeCams) PreviewImageURL() string {
|
||||
if s := strings.TrimSpace(m.SnapURL); s != "" {
|
||||
return s
|
||||
}
|
||||
return strings.TrimSpace(m.AvatarURL)
|
||||
}
|
||||
|
||||
func mfcDigitsOnly(s string) string {
|
||||
var b strings.Builder
|
||||
for _, r := range strings.TrimSpace(s) {
|
||||
@ -320,6 +373,7 @@ func (m *MyFreeCams) GetStatus(ctx context.Context, userAgent string) (Status, e
|
||||
return StatusNotExist, nil
|
||||
}
|
||||
|
||||
m.RawUserID = data.Result.User.ID
|
||||
m.AvatarURL = strings.TrimSpace(data.Result.User.Avatar)
|
||||
|
||||
if len(data.Result.User.Sessions) == 0 {
|
||||
@ -333,6 +387,12 @@ func (m *MyFreeCams) GetStatus(ctx context.Context, userAgent string) (Status, e
|
||||
return StatusUnknown, appErrorf("mfc: server_name ohne server-id: %q", sess.ServerName)
|
||||
}
|
||||
|
||||
m.SnapURL = buildMFCSnapimgURL(serverID, data.Result.User.ID)
|
||||
|
||||
if strings.TrimSpace(m.SnapURL) == "" && strings.TrimSpace(sess.SnapURL) != "" {
|
||||
m.SnapURL = normalizeMFCSnapURL(sess.SnapURL)
|
||||
}
|
||||
|
||||
modelID := data.Result.User.ID
|
||||
if modelID < 100000000 {
|
||||
modelID += 100000000
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user