Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package oop
- import (
- "bufio"
- "bytes"
- b64 "encoding/base64"
- "fmt"
- "io"
- "net/http"
- "os"
- "path/filepath"
- )
- func (cl *Account) DownloadObjectMsg(msgid, tipe string) (string, error) {
- hclient := &http.Client{}
- req, _ := http.NewRequest("GET", "https://obs-sg.line-apps.com/talk/m/download.nhn?oid="+msgid, nil)
- for k, v := range map[string]string{
- "User-Agent": cl.UserAgent,
- "X-Line-Application": cl.LineApp,
- "X-Line-Access": cl.Authtoken,
- "x-lal": "en_US",
- "x-lpv": "1",
- } {
- req.Header.Set(k, v)
- }
- res, _ := hclient.Do(req)
- defer res.Body.Close()
- file, err := os.Create("/tmp/DL-" + msgid + "." + tipe)
- if err != nil {
- return "", err
- }
- io.Copy(file, res.Body)
- file.Close()
- return file.Name(), nil
- }
- func (cl *Account) UpdateProfilePicture(path, tipe string) error {
- fl, err := os.Open(path)
- if err != nil {
- return err
- }
- defer fl.Close()
- of, err := fl.Stat()
- if err != nil {
- return err
- }
- var size int64 = of.Size()
- bytess := make([]byte, size)
- buffer := bufio.NewReader(fl)
- _, err = buffer.Read(bytess)
- if err != nil {
- return err
- }
- dataa := ""
- nama := filepath.Base(path)
- if tipe == "vp" {
- dataa = fmt.Sprintf(`{"name": "%s", "oid": "%s", "type": "image", "ver": "2.0", "cat": "vp.mp4"}`, nama, cl.Mid)
- } else {
- dataa = fmt.Sprintf(`{"name": "%s", "oid": "%s", "type": "image", "ver": "2.0"}`, nama, cl.Mid)
- }
- sDec := b64.StdEncoding.EncodeToString([]byte(dataa))
- hclient := &http.Client{}
- req, _ := http.NewRequest("POST", "https://obs-sg.line-apps.com/talk/p/upload.nhn", bytes.NewBuffer(bytess))
- for k, v := range map[string]string{
- "User-Agent": cl.UserAgent,
- "X-Line-Application": cl.LineApp,
- "X-Line-Access": cl.Authtoken,
- "x-lal": "en_US",
- "x-lpv": "1",
- } {
- req.Header.Set(k, v)
- }
- req.Header.Set("x-obs-params", string(sDec))
- req.ContentLength = int64(len(bytess))
- res, err := hclient.Do(req)
- if err != nil {
- return err
- }
- defer res.Body.Close()
- return nil
- }
- func (cl *Account) UpdateProfilePictureVideo(pict, vid string) error {
- fl, err := os.Open(vid)
- if err != nil {
- return err
- }
- defer fl.Close()
- of, err := fl.Stat()
- if err != nil {
- return err
- }
- var size int64 = of.Size()
- bytess := make([]byte, size)
- buffer := bufio.NewReader(fl)
- _, err = buffer.Read(bytess)
- if err != nil {
- return err
- }
- dataa := fmt.Sprintf(`{"name": "%s", "oid": "%s", "ver": "2.0", "type": "video", "cat": "vp.mp4"}`, filepath.Base(vid), cl.Mid)
- sDec := b64.StdEncoding.EncodeToString([]byte(dataa))
- hclient := &http.Client{}
- req, _ := http.NewRequest("POST", "https://obs-sg.line-apps.com/talk/vp/upload.nhn", bytes.NewBuffer(bytess))
- for k, v := range map[string]string{
- "User-Agent": cl.UserAgent,
- "X-Line-Application": cl.LineApp,
- "X-Line-Access": cl.Authtoken,
- "x-lal": "en_US",
- "x-lpv": "1",
- } {
- req.Header.Set(k, v)
- }
- req.Header.Set("x-obs-params", string(sDec))
- req.ContentLength = int64(len(bytess))
- res, err := hclient.Do(req)
- if err != nil {
- return err
- }
- defer res.Body.Close()
- return cl.UpdateProfilePicture(pict, "vp")
- }
- //=====================================================================================//
- func (cl *Account) DownloadFileURL(url string) (string, error) {
- req, _ := http.NewRequest("GET", url, nil)
- y := &http.Client{}
- res, err := y.Do(req)
- if err != nil {
- fmt.Println(err)
- return "", err
- }
- defer res.Body.Close()
- var tp string
- if strings.Contains(res.Header.Get("Content-Type"), "image") {
- tp = "jpg"
- } else if strings.Contains(res.Header.Get("Content-Type"), "video") {
- tp = "mp4"
- } else if strings.Contains(res.Header.Get("Content-Type"), "audio") {
- tp = "mp3"
- } else {
- tp = "bin"
- }
- tmpfile, err := ioutil.TempFile("/tmp", "DL-*."+tp)
- if err != nil {
- fmt.Println(err)
- return "", err
- }
- defer tmpfile.Close()
- if _, err := io.Copy(tmpfile, res.Body); err != nil {
- fmt.Println(err)
- return "", err
- }
- return tmpfile.Name(), nil
- }
- func (cl *Account) UploadObjHome(path, tipe, objId string) (string, error) {
- chtoken := GetChannelInfo()
- header := make(http.Header)
- for k, v := range map[string]string{
- "Content-Type": "application/json; charset=UTF-8",
- "User-Agent": cl.UserAgent,
- "X-Line-Mid": myself,
- "X-Line-Access": cl.Authtoken,
- "X-Line-Application": cl.LineApp,
- "X-Line-ChannelToken": chtoken.ChannelAccessToken,
- "x-lal": "en_US",
- "x-lpv": "1",
- "x-lsr": "JP",
- "x-line-bdbtemplateversion": "v1",
- "x-line-global-config": "discover.enable=true; follow.enable=true",
- } { header.Set(k, v) }
- var ctype string
- var endpoint string
- if tipe == "image" {
- ctype = "image/jpeg"
- endpoint = "/r/myhome/c/"
- } else {
- ctype = "video/mp4"
- endpoint = "/r/myhome/vc/"
- }
- if objId == "objid" {
- hstr := fmt.Sprintf("Line_%d", time.Now().Unix())
- objId = fmt.Sprintf("%x", md5.Sum([]byte(hstr)))
- }
- file, _ := os.Open(path)
- fi, err := file.Stat()
- if err != nil { return "", err }
- for k, v := range map[string]string{
- "x-obs-params": genObsParam(map[string]string{
- "name": fmt.Sprintf("%d", time.Now().Unix()),
- "userid": myself,
- "oid": objId,
- "type": tipe,
- "ver": "1.0",
- }),
- "Content-Type": ctype,
- "Content-Length": fmt.Sprintf("%d", fi.Size()),
- } { header.Set(k, v) }
- _, err = req.Post("https://obs-sg.line-apps.com"+endpoint+objId, file, header)
- if err != nil { return "", err }
- return objId, nil
- }
- func (cl *Account) UpdateProfilePicture(path, tipe string) error {
- fl, err := os.Open(path)
- if err != nil { return err }
- defer fl.Close()
- of, err := fl.Stat()
- if err != nil { return err }
- var size int64 = of.Size()
- bytess := make([]byte, size)
- buffer := bufio.NewReader(fl)
- _, err = buffer.Read(bytess)
- if err != nil { return err }
- dataa := ""
- nama := filepath.Base(path)
- if tipe == "vp" {
- dataa = fmt.Sprintf(`{"name": "%s", "oid": "%s", "type": "image", "ver": "2.0", "cat": "vp.mp4"}`, nama, myself)
- } else {
- dataa = fmt.Sprintf(`{"name": "%s", "oid": "%s", "type": "image", "ver": "2.0"}`, nama, myself)
- }
- sDec := b64.StdEncoding.EncodeToString([]byte(dataa))
- hclient := &http.Client{}
- req, _ := http.NewRequest("POST", "https://obs-sg.line-apps.com/talk/p/upload.nhn", bytes.NewBuffer(bytess))
- for k, v := range map[string]string{
- "User-Agent": cl.UserAgent,
- "X-Line-Application": cl.LineApp,
- "X-Line-Access": cl.Authtoken,
- "x-lal": "en_US",
- "x-lpv": "1",
- } { req.Header.Set(k, v) }
- req.Header.Set("x-obs-params", string(sDec))
- req.ContentLength = int64(len(bytess))
- res, err := hclient.Do(req)
- if err != nil { return err }
- defer res.Body.Close()
- return nil
- }
- func (cl *Account) UpdateProfilePictureVideo(pict, vid string) error {
- fl, err := os.Open(vid)
- if err != nil { return err }
- defer fl.Close()
- of, err := fl.Stat()
- if err != nil { return err }
- var size int64 = of.Size()
- bytess := make([]byte, size)
- buffer := bufio.NewReader(fl)
- _, err = buffer.Read(bytess)
- if err != nil { return err }
- dataa := fmt.Sprintf(`{"name": "%s", "oid": "%s", "ver": "2.0", "type": "video", "cat": "vp.mp4"}`, filepath.Base(vid), myself)
- sDec := b64.StdEncoding.EncodeToString([]byte(dataa))
- hclient := &http.Client{}
- req, _ := http.NewRequest("POST", "https://obs-sg.line-apps.com/talk/vp/upload.nhn", bytes.NewBuffer(bytess))
- for k, v := range map[string]string{
- "User-Agent": cl.UserAgent,
- "X-Line-Application": cl.LineApp,
- "X-Line-Access": cl.Authtoken,
- "x-lal": "en_US",
- "x-lpv": "1",
- } { req.Header.Set(k, v) }
- req.Header.Set("x-obs-params", string(sDec))
- req.ContentLength = int64(len(bytess))
- res, err := hclient.Do(req)
- if err != nil { return err }
- defer res.Body.Close()
- return UpdateProfilePicture(pict, "vp")
- }
- func (cl *Account) UpdateProfileCoverById(objId string, coverVideo bool) error {
- chtoken := GetChannelInfo()
- header := make(http.Header)
- for k, v := range map[string]string{
- "Content-Type": "application/json; charset=UTF-8",
- "User-Agent": cl.UserAgent,
- "X-Line-Mid": myself,
- "X-Line-Access": cl.Authtoken,
- "X-Line-Application": cl.LineApp,
- "X-Line-ChannelToken": chtoken.ChannelAccessToken,
- "x-lal": "en_US",
- "x-lpv": "1",
- "x-lsr": "JP",
- "x-line-bdbtemplateversion": "v1",
- "x-line-global-config": "discover.enable=true; follow.enable=true",
- } { header.Set(k, v) }
- data := map[string]string{
- "homeId": myself,
- "coverObjectId": objId,
- "storyShare": "false",
- }
- if coverVideo == true { data["videoCoverObjectId"] = objId }
- _, err := req.Post(connect.LINE_HOST_DOMAIN+"/hm/api/v1/home/cover.json", header, req.BodyJSON(data))
- return err
- }
- func (cl *Account) ChangeProfilePicture(to string, msgid string) {
- path, _ := DownloadObjectMsg(msgid, "bin")
- if _, err := os.Stat(path); os.IsNotExist(err) {
- SendMessage(to, "Update profile error.")
- return
- }
- UpdateProfilePicture(path, "p")
- SendMessage(to, "Success update profile picture.")
- }
- func (cl *Account) ChangeProfileVideo(to string, msgid string) {
- prof := GetProfile()
- path_p, _ := DownloadFileURL("https://obs.line-scdn.net/" + prof.PictureStatus)
- if _, err := os.Stat(path_p); os.IsNotExist(err) {
- SendMessage(to, "Update profile error.")
- return
- }
- path, _ := DownloadObjectMsg(msgid, "bin")
- if _, err := os.Stat(path); os.IsNotExist(err) {
- SendMessage(to, "Update profile error.")
- return
- }
- _ = UpdateProfilePictureVideo(path_p, path)
- SendMessage(to, "Success update profile video.")
- }
- func (cl *Account) ChangeCoverPicture(to string, msgid string) {
- path, _ := DownloadObjectMsg(msgid, "bin")
- if _, err := os.Stat(path); os.IsNotExist(err) {
- SendMessage(to, "Update cover error.")
- return
- }
- oid, err := UploadObjHome(path, "image", "objid")
- if err != nil {
- fmt.Println(err)
- return
- }
- _ = UpdateProfileCoverById(oid, false)
- SendMessage(to, "Success update cover.")
- }
- func (cl *Account) ChangeCoverVideo(to string, msgid string) {
- prof, _ := GetProfileDetail(myself)
- path_p, _ := DownloadFileURL("https://obs.line-scdn.net/myhome/c/download.nhn?userid=" + myself + "&oid=" + prof.Result.CoverObsInfo.ObjectId)
- if _, err := os.Stat(path_p); os.IsNotExist(err) {
- SendMessage(to, "Update cover error.")
- return
- }
- path, _ := DownloadObjectMsg(msgid, "bin")
- if _, err := os.Stat(path); os.IsNotExist(err) {
- SendMessage(to, "Update cover error.")
- return
- }
- oid, err := UploadObjHome(path_p, "image", "objid")
- if err != nil {
- fmt.Println(err)
- return
- }
- void, err := UploadObjHome(path, "video", oid)
- if err != nil {
- fmt.Println(err)
- return
- }
- _ = UpdateProfileCoverById(void, true)
- SendMessage(to, "Success update cover video.")
- }
Add Comment
Please, Sign In to add comment