From 038f2d5dfafb787f7de2a53dd78dbfd6c6d2dcad Mon Sep 17 00:00:00 2001 From: ReturnToFirst Date: Thu, 6 Jun 2024 18:26:36 +0900 Subject: [PATCH 1/2] import_kakao.go: Update fetchKakaoDetailsFromShareLink --- pkg/msbimport/import_kakao.go | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/pkg/msbimport/import_kakao.go b/pkg/msbimport/import_kakao.go index d525d216f..9658dfab3 100644 --- a/pkg/msbimport/import_kakao.go +++ b/pkg/msbimport/import_kakao.go @@ -10,7 +10,8 @@ import ( "os/exec" "path" "path/filepath" - "strings" + "regexp" + "strconv" log "github.com/sirupsen/logrus" ) @@ -192,11 +193,26 @@ func fetchKakaoDetailsFromShareLink(link string) (string, string, error) { log.Errorln("fetchKakaoDetailsFromShareLink: failed httpGetAndroidUA!", err) return "", "", err } - split1 := strings.Split(res, "kakaotalk://store/emoticon/") - if len(split1) < 2 { - return "", "", errors.New("error fetchKakaoDetailsFromShareLink") + + eidRegex := regexp.MustCompile(`data-i="(\d+)"`) + rawEid := eidRegex.FindStringSubmatch(res)[1] + rawEidInt, err := strconv.Atoi(string(rawEid)) + if err != nil { + return "", "", err + } + xorKeysRegex := regexp.MustCompile(`(\d+)\^(\d+)`) + xorKeys := xorKeysRegex.FindStringSubmatch(res) + xorKey1, err := strconv.Atoi(string(xorKeys[1])) + if err != nil { + return "", "", err } - eid := strings.Split(split1[1], "?")[0] + + xorKey2, err := strconv.Atoi(string(xorKeys[2])) + if err != nil { + return "", "", err + } + + eid := fmt.Sprintf("%d", rawEidInt-xorKey1^xorKey2) log.Debugln("kakao eid is: ", eid) redirLink, _, err := httpGetWithRedirLink(link) if err != nil { From 1929b727df8f282e0865f97948b7255a8ed006a4 Mon Sep 17 00:00:00 2001 From: ReturnToFirst Date: Thu, 6 Jun 2024 18:42:57 +0900 Subject: [PATCH 2/2] import_kakao.go: Update error handling to fetchKakaoDetailsFromShareLink --- pkg/msbimport/import_kakao.go | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/pkg/msbimport/import_kakao.go b/pkg/msbimport/import_kakao.go index 9658dfab3..de3cdf24a 100644 --- a/pkg/msbimport/import_kakao.go +++ b/pkg/msbimport/import_kakao.go @@ -198,18 +198,16 @@ func fetchKakaoDetailsFromShareLink(link string) (string, string, error) { rawEid := eidRegex.FindStringSubmatch(res)[1] rawEidInt, err := strconv.Atoi(string(rawEid)) if err != nil { - return "", "", err + log.Errorln("fetchKakaoDetailsFromShareLink: failed to parse rawEid!", err) + return "", "", errors.New("error fetchKakaoDetailsFromShareLink") } xorKeysRegex := regexp.MustCompile(`(\d+)\^(\d+)`) xorKeys := xorKeysRegex.FindStringSubmatch(res) - xorKey1, err := strconv.Atoi(string(xorKeys[1])) - if err != nil { - return "", "", err - } - + xorKey1, _ := strconv.Atoi(string(xorKeys[1])) xorKey2, err := strconv.Atoi(string(xorKeys[2])) if err != nil { - return "", "", err + log.Errorln("fetchKakaoDetailsFromShareLink: failed to parse XOR Keys!", err) + return "", "", errors.New("error fetchKakaoDetailsFromShareLink") } eid := fmt.Sprintf("%d", rawEidInt-xorKey1^xorKey2)