refactor: remove AppPackageName form VideoCrawlerConfigs

This commit is contained in:
lilong.129
2023-08-21 22:00:31 +08:00
parent b9ceb2e4fa
commit 277d3914db
3 changed files with 45 additions and 72 deletions
-13
View File
@@ -343,19 +343,6 @@ type IImageService interface {
// GetScreenResult takes a screenshot, returns the image recognization result // GetScreenResult takes a screenshot, returns the image recognization result
func (dExt *DriverExt) GetScreenResult() (screenResult *ScreenResult, err error) { func (dExt *DriverExt) GetScreenResult() (screenResult *ScreenResult, err error) {
if dExt.plugin != nil {
// get screen info from app event trackings
if feedVideo, err := getCurrentFeedVideo(dExt.plugin); err == nil && feedVideo != nil {
screenResult = &ScreenResult{
Feed: feedVideo,
Texts: nil,
Tags: nil,
}
dExt.cacheStepData.screenResults[time.Now().String()] = screenResult
return screenResult, nil
}
}
startTime := time.Now() startTime := time.Now()
var bufSource *bytes.Buffer var bufSource *bytes.Buffer
var imagePath string var imagePath string
+43 -56
View File
@@ -160,7 +160,7 @@ func (s *VideoStat) incrLive(screenResult *ScreenResult, driverExt *DriverExt) e
// TODO: add popularity data for live // TODO: add popularity data for live
screenResult.Live.WatchDuration = getSimulationDuration(s.configs.Live.SleepRandom) screenResult.Live.SimulationWatchDuration = getSimulationDuration(s.configs.Live.SleepRandom)
log.Info().Strs("tags", screenResult.Tags). log.Info().Strs("tags", screenResult.Tags).
Interface("live", screenResult.Live). Interface("live", screenResult.Live).
@@ -189,8 +189,7 @@ type LiveConfig struct {
} }
type VideoCrawlerConfigs struct { type VideoCrawlerConfigs struct {
AppPackageName string `json:"app_package_name"` Timeout int `json:"timeout"` // seconds
Timeout int `json:"timeout"` // seconds
Feed FeedConfig `json:"feed"` Feed FeedConfig `json:"feed"`
Live LiveConfig `json:"live"` Live LiveConfig `json:"live"`
@@ -275,12 +274,7 @@ func (l *LiveCrawler) Run(driver *DriverExt, enterPoint PointF) error {
} }
// simulation watch live video // simulation watch live video
sleepStrict(swipeFinishTime, screenResult.Live.WatchDuration) sleepStrict(swipeFinishTime, screenResult.Live.SimulationWatchDuration)
// check if live room
if err := l.driver.Driver.AssertForegroundApp(l.configs.AppPackageName, "live"); err != nil {
return err
}
// log swipe timelines // log swipe timelines
screenResult.SwipeStartTime = swipeStartTime.UnixMilli() screenResult.SwipeStartTime = swipeStartTime.UnixMilli()
@@ -298,11 +292,6 @@ func (l *LiveCrawler) exitLiveRoom() error {
for i := 0; i < 3; i++ { for i := 0; i < 3; i++ {
l.driver.SwipeRelative(0.1, 0.5, 0.9, 0.5) l.driver.SwipeRelative(0.1, 0.5, 0.9, 0.5)
time.Sleep(2 * time.Second) time.Sleep(2 * time.Second)
// check if back to feed page
if err := l.driver.Driver.AssertForegroundApp(l.configs.AppPackageName, "feed"); err == nil {
return nil
}
} }
// exit live room failed, while video count achieved // exit live room failed, while video count achieved
@@ -314,11 +303,6 @@ func (l *LiveCrawler) exitLiveRoom() error {
if err := l.driver.TapXY(0.95, 0.05); err == nil { if err := l.driver.TapXY(0.95, 0.05); err == nil {
log.Info().Msg("tap X button on upper-right corner to exit live room") log.Info().Msg("tap X button on upper-right corner to exit live room")
time.Sleep(2 * time.Second) time.Sleep(2 * time.Second)
// check if back to feed page
if err := l.driver.Driver.AssertForegroundApp(l.configs.AppPackageName, "feed"); err == nil {
return nil
}
} }
return errors.New("exit live room failed") return errors.New("exit live room failed")
@@ -345,25 +329,6 @@ func (dExt *DriverExt) VideoCrawler(configs *VideoCrawlerConfigs) (err error) {
dExt.cacheStepData.videoStat = currVideoStat dExt.cacheStepData.videoStat = currVideoStat
}() }()
// launch app
if configs.AppPackageName != "" {
if err = dExt.Driver.AppLaunch(configs.AppPackageName); err != nil {
return err
}
time.Sleep(5 * time.Second)
} else {
app, err := dExt.Driver.GetForegroundApp()
if err != nil && !errors.Is(err, errDriverNotImplemented) {
log.Warn().Err(err).Msg("get foreground app failed, ignore")
return errors.Wrap(code.MobileUIAssertForegroundAppError, err.Error())
}
log.Info().
Str("packageName", app.PackageName).
Str("activity", app.Activity).
Msg("start to video crawler for current foreground app")
configs.AppPackageName = app.PackageName
}
liveCrawler := LiveCrawler{ liveCrawler := LiveCrawler{
driver: dExt, driver: dExt,
configs: configs, configs: configs,
@@ -391,15 +356,30 @@ func (dExt *DriverExt) VideoCrawler(configs *VideoCrawlerConfigs) (err error) {
} }
swipeFinishTime := time.Now() swipeFinishTime := time.Now()
// take screenshot and get screen texts by OCR var screenResult *ScreenResult
screenResult, err := dExt.GetScreenResult() if dExt.plugin != nil {
if err != nil { // get screen info from app event trackings
if strings.Contains(err.Error(), "connect: connection refused") { if feedVideo, err := getCurrentFeedVideo(dExt.plugin); err == nil && feedVideo != nil {
return err screenResult = &ScreenResult{
Feed: feedVideo,
Texts: nil,
Tags: nil,
}
dExt.cacheStepData.screenResults[time.Now().String()] = screenResult
}
}
if screenResult == nil {
// take screenshot and get screen texts by OCR
screenResult, err = dExt.GetScreenResult()
if err != nil {
if strings.Contains(err.Error(), "connect: connection refused") {
return err
}
log.Error().Err(err).Msg("OCR GetTexts failed")
time.Sleep(3 * time.Second)
continue
} }
log.Error().Err(err).Msg("OCR GetTexts failed")
time.Sleep(3 * time.Second)
continue
} }
// automatic handling of pop-up windows // automatic handling of pop-up windows
@@ -440,11 +420,6 @@ func (dExt *DriverExt) VideoCrawler(configs *VideoCrawlerConfigs) (err error) {
return nil return nil
} }
// check if feed page
if err := dExt.Driver.AssertForegroundApp(configs.AppPackageName, "feed"); err != nil {
return err
}
// log swipe timelines // log swipe timelines
screenResult.SwipeStartTime = swipeStartTime.UnixMilli() screenResult.SwipeStartTime = swipeStartTime.UnixMilli()
screenResult.SwipeFinishTime = swipeFinishTime.UnixMilli() screenResult.SwipeFinishTime = swipeFinishTime.UnixMilli()
@@ -519,12 +494,20 @@ type FeedVideo struct {
type LiveRoom struct { type LiveRoom struct {
// 视频基础数据 // 视频基础数据
UserName string `json:"user_name"` // 主播名 LiveStreamID string `json:"live_stream_id"` // 直播流 ID
LiveType string `json:"live_type"` // 直播间类型 UserName string `json:"user_name"` // 视频作者
// 直播热度数据 Caption string `json:"caption"` // 视频文案
LiveUsers string `json:"live_users"` // 直播间人数 LiveType string `json:"live_type"` // 直播间类型
// 视频热度数据
AudienceCount string `json:"audience_count"` // 直播间人数
LikeCount int64 `json:"like_count"` // 点赞数
// 记录仿真决策信息 // 记录仿真决策信息
WatchDuration int64 `json:"watch_duration"` // 观看时长(ms) SimulationWatchDuration int64 `json:"simulation_watch_duration"` // 仿真观播时长(ms)
// timelines
PreloadTimestamp int64 `json:"preload_timestamp"` // feed 预加载时间戳
} }
func getCurrentFeedVideo(plugin funplugin.IPlugin) (feedVideo *FeedVideo, err error) { func getCurrentFeedVideo(plugin funplugin.IPlugin) (feedVideo *FeedVideo, err error) {
@@ -560,3 +543,7 @@ func getCurrentFeedVideo(plugin funplugin.IPlugin) (feedVideo *FeedVideo, err er
Msg("get current feed video success") Msg("get current feed video success")
return feedVideo, nil return feedVideo, nil
} }
func getCurrentLiveRoom(plugin funplugin.IPlugin) (liveVideo *LiveRoom, err error) {
return
}
+2 -3
View File
@@ -11,10 +11,9 @@ import (
func TestVideoCrawler(t *testing.T) { func TestVideoCrawler(t *testing.T) {
setupAndroid(t) setupAndroid(t)
driverExt.Driver.AppLaunch("com.ss.android.ugc.aweme")
configs := &VideoCrawlerConfigs{ configs := &VideoCrawlerConfigs{
AppPackageName: "com.ss.android.ugc.aweme", Timeout: 600,
Timeout: 600,
Feed: FeedConfig{ Feed: FeedConfig{
TargetCount: 5, TargetCount: 5,
TargetLabels: []TargetLabel{ TargetLabels: []TargetLabel{