{"version":3,"sources":["webpack://xgVodLogger/webpack/bootstrap","webpack://xgVodLogger/./src/utils/util.js","webpack://xgVodLogger/./src/index.js","webpack://xgVodLogger/./src/logger.js","webpack://xgVodLogger/./src/utils/connect.js","webpack://xgVodLogger/./node_modules/byted-tea-sdk/es/CollectorBaseClient.min.js","webpack://xgVodLogger/./src/utils/locallog.js","webpack://xgVodLogger/./src/utils/browser.js","webpack://xgVodLogger/./src/utils/speedtask.js","webpack://xgVodLogger/./src/version.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","getDefault","getModuleExports","object","property","prototype","hasOwnProperty","p","s","computeWatchDur","played","watchDur","length","isNaN","Number","end","begin","parseFloat","toFixed","getHostFromUrl","url","results","split","domain","generateSessionId","did","Date","getTime","parseInt","e","window","performance","now","replace","Math","random","floor","toString","isType","type","getValue","context","val","log","message","optionalParams","DEBUG","console","navigationStart","timing","error","curTimestamp","formatData","data","model","ret","ext","keys","map","getXhr","options","Promise","resolve","reject","Error","dTime","tTime","result","xhr","XMLHttpRequest","open","onreadystatechange","readyState","headers","getResponseHeaders","connectTime","nowTime","status","statusText","onload","onprogress","speed","costTime","loaded","onerror","ontimeout","onabort","responseType","timeout","setRequestHeader","range","send","checkVideoSrcIsEmpty","src","location","href","indexOf","checkIsEmptySrc","player","appid","video","getAttribute","config","dashOpts","mp4Opts","checkIsBlob","test","transformHeader","newHeaders","KEYMAP","finalKey","Array","filter","item","undefined","parseTempData","curData","action","appendData","headerMap","getAllResponseHeaders","trim","forEach","line","parts","header","shift","join","round","x_response_sinfo","x_response_cache","x_response_cinfo","org","VodLogger","TEA_ID","xgVodLogger","args","vodLogOpts","vodLogger","plugins","this","pluginName","playerConfig","version","isObject","REPORT_EVENTS","ONE_PLAY","ONE_OPERA","ONE_ERROR","ONE_EVENT","ONE_TEMP","ERROR_TYPES","runtime","parse","network","no_error_handler","custom_error","other","notSupport","ERROR_CODES","1","2","3","4","5","PLAYBACK_STATE","LOAD_STATES","UNKNOWN","PLAYABLE","STALLED","ERROR","ENDED_TYPE","NEXT","ENDED","UNLOAD","DESTROY","PLAY_CATCH","LOGTYPES","RETRY","ONEERROR","ONEEVENT","ONETEMP","CACHE_FILE_TYPE","NO_CACHE","CACHED","LS_KEY","MAX_TIME","COMMON_KEYS","MIN_WAITIONG","MAX_STALL_TIME","XGPlayerAppLogger","initialUrl","urlLog","initial_url","initial_host","initial_ip","error_info","onOneEvent","end_type","error_type","drm_type","addIfExist","_options","resetLoggerParams","resLogs","ldst","_endType","from","to","changeResolution","updateVideoSize","triggerTask","prev","cur","abrInfo","abrInstance","eventInfo","last_definition","now_definition","abr_event_info","video_switch","push","stop","abr_user_info","cancel_abr","playlogs","errorLog","try_err_c","vt","startStep","currentTime","pt","nt","rt","initial_resolution","currentDefitionFromPlayer","definition","defaultDefinition","videoHeight","final_resolution","len","dLen","lastVideoTime","updateCurBuffer","setVt","isSrcEmpty","currentSrc","line_app_id","document","visibilityState","setPt","state","dash_pst","dash_wst","dash_wrt","dash_ift","dash_cst","dash_spt","buffered","duration","bft","_playerCreatedTime","isAutoplay","err","last_errors","errorCode","accu_errc","onOneError","errorType","errorTypeCode","code","replayRunning","Browser","isSupportMP4","isPC","load_state","suspendWaitingStatus","isSpider","errc","errt","_isOnePlayReport","fir_errc","onOnePlay","onOneTemp","sendDegradeLog","degrade","sendEventsQueue","info","apiLog","vsc","vsc_message","at","timestamep","fir_errt","netLog","downloadSpeed","totalSpeed","rqCount","requestCount","connectCost","percent","connectData","findPerformanceInfo","cdnUrl","download_speed","connect_cost","c_dur","connectDuration","d_dur","domainDuration","r_dur","rqtt","x_cache","server_ip","merror","cdn","cur_play_pos","pos","cdn_url","cdn_host","vid","_reportInvalidVV","vtype","lc","idf","seekLog","isSeeking","suspendSeekStatus","lastSeekStartTime","seekBefore","intervalId","setTimeout","pauseLog","isPausing","pause_acu_t","pause_start","playCatch","setBr","httpCode","preload_hit","preloadHit","preload_cached","preloadCached","endState","expied","_templog","_cacheFile","isEnded","stall","inWaitingStart","clearTimeout","task","stall_start","sc","first_buf_startt","startWaitingStatus","df","playState","disableLocalCache","sniffer","device","removeEventListener","onUnload","onVisibilitychange","listeners","off","evt","handler","clearTimers","onDestroy","clear","isLeave","et","videoBufferTime","audioBufferTime","cachedBufferTime","start","abrVVStats","params","local_time","log_type","plugin_exception","player_create_exception","v","curHeaders","initial_type","prepare_start_time","prepare_end_time","lt","lpt","fvt","sat","bc","dbc","nbc","video_net_s","videoNetworkState","curStatus","first_buf_endt","bu_acu_t","de_bu_acu_t","n_bu_acu_t","playback_state","end_state","watch_dur","switch_resolution_c","switchResolutionCount","is_start_play_automatically","start_time","finish","api_str","auth","logid","width","videoWidth","height","vd","video_length","audio_length","lf","play_c","player_created_t","lv_method","ldet","is_disable_short_seek","mute","volume","avg_speed","mdl_req_num","watingcost","watingCost","br","fbrt","dash_break","dashBufferBreak","JSON","stringify","ex","exInfo","bufs","buffers","allBuffer","vs","vds","vps","curBuffer","cache_file","dashState","dash_state","abrInst","abr_general_info","generalInfo","video_exit","local_time_ms","buffer_length","bufferLength","internet_speed","now_bitrate","nowBitrate","play_speed","playbackRate","getAbrPlayInfo","abr_play_info","getAbrVVStats","abr_init_opts","autoBitrateOpts","abr_info","reportLog","cost_time","resolution","first_frame_interval","last_switch_interval","getLastInterval","last_seek_interval","updateSeekPt","last_event_interval","video_pos","video_ready_s","videoReadyState","video_seeking","videoSeeking","video_paused","videoPaused","retry_count","stay_seconds","preload_state","preloadState","getPageFPS","fpsInfo","cur_fps","curFPS","avg_fps","avgFPS","constructor","Sniffer","util","Util","isTask","SpeedCheckTask","eventQueue","_instanceCreateTime","codec_type","maxQueueCount","line_user_id","sdk_version","playerCoreVersion","playerVersion","closeSeekLog","isFullAB","_initial_resolution","__vtype","__dt","isLowMp4","initializeTracker","sendLocalLog","bindEvt","warn","interruptCount","degradeLog","hasSendEnd","buf_s_pos","buf_e_pos","buf_include","buffer","initializeLogDatas","initializeUrlLog","_retryCount","lastOperaTime","lastEventTime","lastSwitchStartTime","switch_count","abr_switch_count","buf","lbuf","lplayed","vis","bitrate","api","stall_count","stall_end","stall_last_interval","stall_acc_time","autoplay","video_stall","start_play_time_ms","is_hint","playback_info","internet_speed_record","play_bitrate_record","buffer_length_record","play_speed_record","webId","localStorage","getItem","web_id","_sessionId","__xgplayer_vod_log__","tracker","Collector","app_id","channel","disable_sdk_monitor","channelDomain","channel_domain","enable_ab_test","enableAbTest","init","initSessionId","commonParams","play_type","source_type","pc","pv","absdkVersion","app_version","appVersion","platform","isPad","isMobile","trackConfig","evtParams","disable_auto_pv","isChrome","isSafari","browser","browser_version","user_unique_id","abVersion","ab_sdk_version","referrer","referrer_host","LocalLog","remove","sendLocalCallback","emit","onPlay","onPlaying","onPause","onWaiting","onPlayInterfaceInfo","onDashError","onEnded","onLoadeddata","onLoadStart","onCanplay","onDashStateChange","onNotAutoPlay","onSeeking","onSeeked","onPlayerInited","onTimeUpdate","onBufferedChange","onBeforeDefinitionChange","onDefinitionChange","onDefiChangeSuccess","onDrmTypeChange","onReplayBtnClick","onAbrChange","onPlayCatch","onMediaExpied","onLog","onAbrPrestallEnd","onProgressEvent","onNext","onNextEnded","onMediaFormatError","errorKey","errorEvt","onPlayerError","on","bindUnload","paramsKey","startTime","operaType","updateVds","resetDefiInfo","closeResolutionLog","onOneOperator","stateBefore","stateAfter","refresh","lastInterval","_isInvaidVV","addEventListener","once","endType","last_interval","opera_type","state_before","state_after","es","evtName","ABTestTag","player_sessionid","sessionId","web_url","user_agent","navigator","userAgent","dynamic_type","dynamicType","abtest_tag","pkey","obj","set","addEventsQueue","eventName","event","pop","appendStallInfo","trigger","time","splice","cost","buf_s","buf_e","buf_i","checkInBuffer","stall_duration","is_abr","isCurrentInAbr","needSendLog","diff","index","videoItem","__dash__","dash","mpd","mediaList","videoList","selectedIdx","bandwidth","size","videoSize","pdur","bdur","getBufferedRange","muted","preload","curReqVideoSegInfo","seeking","paused","hasClass","root","isPlaying","tmp","isError","isStop","isPause","isLoading","dynamic_video","networkState","eagleid","currentDashType","dashType","ENTRIES","domainLookupEnd","domainLookupStart","connectEnd","connectStart","addPerformaceObserver","PerformanceObserver","list","entries","getEntriesByType","observe","entryTypes","configurable","writable","assign","arguments","apply","iterator","next","done","return","concat","g","y","match","_","encodeURIComponent","slice","a","Image","w","h","u","appName","f","sendBeacon","app_key","withCredentials","responseText","abort","decodeURIComponent","path","defaults","expires","toUTCString","write","String","escape","cookie","charAt","read","getJSON","withConverter","cache","setItem","removeItem","getCookie","setCookie","isSupportLS","sessionStorage","isSupportSession","_storage","cn","sg","va","b","k","I","fromCharCode","S","createElement","x","search","z","L","C","cfg","storage","appInfo","isNoWebid","disable_webid","enable_ttwebid","tokenReady","checkExp","enableCookie","cross_subdomain","expiresTime","cookie_expire","fetchUrl","hook","session","cookieDomain","cookie_domain","_getToken","tokensKey","cookieKey","timestamp","_setTtWid","_setToken","_requestWebId","_checkLocal","_checkEnv","Web_ID","_setTokenId","_updateWebId","envInfo","user","_fetchWebId","referer","_setUuid","_resetSessionId","_clearUuid","_setWebid","isTokenReady","_getTobId","tobid","E","collect","_token","debugMode","evtDataKey","reportUrl","report_url","EventStorage","maxStorage","max_storage_num","maxReport","max_report","reportTime","closeStorage","plugin","addListener","report","setReady","isReady","reportTimer","beconEvent","_mergeEvents","_dealData","destroyInstance","custom","events","__disable_storage__","session_id","_getSessionId","verbose","_send","isSending","tracer","staging","addErrorCount","checkStorageEvent","T","A","getTimezoneOffset","N","P","q","screen","language","hostname","substring","O","exec","RegExp","creative_id","ad_id","campaign_id","utm_source","utm_medium","utm_campaign","utm_term","utm_content","tr_shareuser","tr_admaster","tr_param1","tr_param2","tr_param3","tr_param4","tracer_data","$utm_from_url","os_name","os_version","screen_width","screen_height","device_model","initConfig","configKey","user_type","user_id","user_is_auth","user_is_login","device_id","ip_addr_id","ssid","app_name","app_install_id","install_id","app_package","app_channel","ab_client","ab_version","traffic_type","client_ip","device_brand","os_api","access","region","app_language","app_region","rnd","sdk_lib","province","city","timezone","tz_offset","tz_name","sim_region","carrier","reportErrorCallback","delete","_staging_flag","Boolean","setStore","getStore","B","isLog","throw","D","_hooks","U","sessionKey","expireTime","disableSession","disable_session","_setSessionId","_updateSessionId","_resetExpTime","sessionExp","setInterval","_checkEXp","clearInterval","M","sdk","autotrack","R","count","limit","f_net","f_data","errorInfo","disable_tracer","ready","process","listener","addCount","processTracer","sendTracer","clearCount","params_for_special","aid","is_bav","leavePage","K","logger","bridgeInject","AppLogBridge","hasStarted","stack","setUserUniqueId","addHeaderInfo","setHeaderInfo","removeHeaderInfo","onEventV3","profileSet","profileSetOnce","profileIncrement","profileUnset","profileAppend","W","substr","V","J","spa","fncArray","Map","setLocation","hack","history","pushState","onpushstate","getPopStateChangeEventData","lastLocation","sendPv","replaceState","onreplacestate","add","pageConfig","is_back","is_html","page_key","refer_page_key","page_manual_key","refer_page_manual_key","j","H","Q","is_first_time","Native","sdkload","initPv","predefinePageView","title","pathname","url_path","$is_first_time","getToken","_isSend","autoInitializationRangers","autoBase","onTokenReady","_inited","_initConfig","appBridge","_init","autoPV","_config","configPersist","callbackSend","_event","_session","_processEvent","spaView","_setConfig","_start","opener","parent","postMessage","_dealEvent","_addTracerCount","_commonEvent","profile","event_index","local_ms","resetStayDuration","setExternalAbVersion","getVar","getABconfig","getAbSdkVersion","onAbSdkVersionChange","offAbSdkVersionChange","openOverlayer","closeOverlayer","getAllVars","destroy","_isProcess","_executeCmd","cmdQueue","_processCmd","colloctor","_alias","_exportCollect","Strorage","_isLocalStorageUsable","probeSupport","checkIfLocalStorageThrows","localStorageTestKey","LOGKEY","LOCAL_LOG","localist","RegMap","reg","IERegMap","SPIDER_UA","detect","ua","toLocaleLowerCase","isIOS","isAndroid","isWP","isSupport","mime","canPlayType","appNameKey","_regMap","checkIs360","mimeTypes","description","checkIsSpider","flag","defaultConfig","timer","_headers","ishangUp","_data","contentLength","contentType","arr","then","setData","__VOD_LOGGER_VERSION__"],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","/** 观看时长统计 */\nconst DEBUG = typeof window !== 'undefined' && window.location.href.indexOf('loggerdebug') > -1\nexport function computeWatchDur (played = []) {\n let watchDur = 0\n for (let i = 0; i < played.length; i++) {\n if (isNaN(Number(played[i].end)) || isNaN(Number(played[i].begin)) || played[i].begin < 0 || played[i].end < 0 || played[i].end < played[i].begin) {\n continue\n }\n watchDur += (played[i].end - played[i].begin)\n }\n watchDur = parseFloat((watchDur * 1000).toFixed(3))\n return watchDur\n}\n\nexport function getHostFromUrl (url) {\n if (url === null || url === undefined || url === '') {\n return ''\n }\n const results = url.split('/') // 以“/”进行分割\n let domain = ''\n if (results.length > 3 && results[2]) {\n domain = results[2]\n }\n return domain\n}\n\n/***\n *\n */\nexport function generateSessionId (did) {\n let d = new Date().getTime()\n try {\n did = parseInt(did)\n } catch (e) {\n did = 0\n }\n d += did\n if (window.performance && typeof window.performance.now === 'function') {\n d += window.performance.now() // use high-precision timer if available\n }\n const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (d + Math.random() * 16) % 16 | 0\n d = Math.floor(d / 16)\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16)\n })\n return uuid\n}\n\nexport function isType (type) {\n return function (value) {\n return Object.prototype.toString.call(value) === `[object ${type}]`\n }\n}\n\nexport function getValue (key, context) {\n const val = context[key]\n if (val === undefined || val === null) {\n // console.warn(`${key}数值未设置`)\n }\n return val\n}\n\nexport function getResponseHeaders (xhr) {\n const headerMap = {}\n if (xhr instanceof window.XMLHttpRequest) {\n try {\n const headers = xhr.getAllResponseHeaders()\n // Convert the header string into an array\n // of individual headers\n const arr = headers.trim().split(/[\\r\\n]+/)\n arr.forEach(function (line) {\n const parts = line.split(': ')\n const header = parts.shift()\n const value = parts.join(': ')\n headerMap[header] = value\n })\n } catch (error) {\n }\n }\n return headerMap\n}\n\nexport function log (message, ...optionalParams) {\n DEBUG && console.log('[logger]', message, ...optionalParams)\n}\n\n/**\n * 获取从浏览器加载当当前的时间差\n */\nexport function nowTime () {\n try {\n return Math.round(window.performance.now())\n } catch (error) {\n return new Date().getTime()\n }\n}\n\n/**\n * 获取浏览器加载位移参考时间戳\n */\nexport function navigationStart () {\n try {\n return window.performance.timing.navigationStart\n } catch (error) {\n return new Date().getTime()\n }\n}\n\n/**\n * 获取当前时间戳\n */\nexport function curTimestamp () {\n return new Date().getTime()\n}\n\nexport function formatData (data, model) {\n const ret = {\n ext: data.ext || {},\n data: {}\n }\n Object.keys(data).map(key => {\n if (model[key]) {\n ret.data[model[key]] = data[key]\n } else {\n key !== 'ext' && (ret.ext[key] = data[key])\n }\n })\n return ret\n}\n\nexport function getXhr (url, options = {}) {\n return new Promise((resolve, reject) => {\n try {\n if (!url) {\n reject(new Error('url is undefined'))\n }\n let dTime = 0\n let tTime = 0\n const result = {}\n const xhr = new window.XMLHttpRequest()\n xhr.open('get', url)\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 2) {\n result.headers = getResponseHeaders(xhr)\n result.connectTime = nowTime() - tTime\n result.status = xhr.status\n result.statusText = xhr.statusText\n dTime = nowTime()\n }\n if (xhr.readyState === 1) {\n tTime = nowTime()\n }\n }\n xhr.onload = () => {\n resolve(result)\n }\n xhr.onprogress = (data) => {\n let costTime = nowTime() - dTime\n let speed = 0\n if (costTime < 5) {\n costTime = nowTime() - tTime\n }\n speed = parseInt(data.loaded / 1000 / (costTime / 1000), 10)\n result.speed = speed\n result.costTime = costTime\n }\n xhr.onerror = (e) => {\n reject(e)\n }\n\n xhr.ontimeout = () => {\n if (!result.status) {\n result.status = -2\n }\n resolve(result)\n }\n\n xhr.onabort = () => {\n resolve(result)\n }\n xhr.responseType = 'arraybuffer'\n xhr.timeout = options.timeout || 10000\n xhr.setRequestHeader('Range', `bytes=${options.range || '0-1048576'}`)\n xhr.send()\n } catch (e) {\n reject(e)\n }\n })\n}\n\n/**\n * 校验当前video的src值是否是空 IE下src为空会获取到当前页面地址去除query的值\n * @param {string}} src\n */\nexport function checkVideoSrcIsEmpty (src) {\n if (!src || window.location.href.indexOf(src) > -1) {\n return true\n }\n return false\n}\n\nexport function checkIsEmptySrc (player, appid) {\n if (player.video && Number(player.video.getAttribute('data-empty')) === 1) {\n return true\n }\n if (appid === 1768 && !player.config.dashOpts && !player.config.mp4Opts) {\n return true\n }\n return false\n}\n\nexport function checkIsBlob (url) {\n return url ? /^blob:/.test(url) : false\n}\n\nconst KEYMAP = {\n x_response_sinfo: 'x-response-sinfo',\n x_response_cache: 'x-response-cache',\n x_response_cinfo: 'x-response-cinfo'\n}\n\nexport function transformHeader (headers) {\n if (!headers) {\n return {}\n }\n const newHeaders = {}\n Object.keys(KEYMAP).map(key => {\n if (!headers[key] && typeof KEYMAP[key] === 'string') {\n newHeaders[key] = headers[KEYMAP[key]] || ''\n } else if (!headers[key] && KEYMAP[key] instanceof Array) {\n const finalKey = KEYMAP[key].filter(item => headers[item] !== undefined)\n if (finalKey.length > 0) {\n newHeaders[key] = headers[finalKey[0]]\n } else {\n newHeaders[key] = ''\n }\n }\n })\n return newHeaders\n}\n\nexport function appendData (org, src) {\n if (!org) {\n return src\n } else if (typeof src === 'string' || typeof src === 'number') {\n return org + '' + src\n } else {\n return src\n }\n}\n\nexport function parseTempData (curData = {}, data = {}, action = '') {\n Object.keys(data).map(key => {\n if (action === 'append') {\n curData[key] = appendData(curData[key], data[key])\n } else {\n curData[key] = data[key]\n }\n })\n return curData\n}\n","import VodLogger from './logger'\n\nVodLogger.TEA_ID = 1300\nconst xgVodLogger = function (args) {\n if (args && args.player) {\n const config = args.player.config.vodLogOpts || {}\n args.player.vodLogger = new VodLogger(args.player, config)\n args.player.plugins.xgVodLogger = args.player.vodLogger\n } else {\n this.vodLogger = new VodLogger(this, this.config.vodLogOpts || {})\n }\n}\nxgVodLogger.pluginName = '__xgVodLogger'\nxgVodLogger.playerConfig = {}\n\nexport default xgVodLogger\n","/* eslint-disable no-case-declarations */\n/* eslint-disable one-var */\n/* eslint-disable camelcase */\n\nimport { computeWatchDur, getHostFromUrl, generateSessionId, isType, log, getResponseHeaders, nowTime, curTimestamp, formatData, checkVideoSrcIsEmpty, checkIsEmptySrc, transformHeader, parseTempData } from './utils/util'\nimport { findPerformanceInfo } from './utils/connect'\nimport Collector from 'byted-tea-sdk/es/CollectorBaseClient.min.js'\nimport LocalLog from './utils/locallog'\nimport Browser from './utils/browser'\nimport SpeedCheckTask from './utils/speedtask'\nimport version from './version'\n\nlog(`logger version is ${version}`)\n\nconst isObject = isType('Object')\nconst REPORT_EVENTS = {\n ONE_PLAY: 'videoplayer_oneplay',\n ONE_OPERA: 'videoplayer_oneopera',\n ONE_ERROR: 'videoplayer_oneerror',\n ONE_EVENT: 'videoplayer_oneevent',\n ONE_TEMP: 'videoplayer_onetemp'\n}\n\nconst ERROR_TYPES = {\n data: 1000, // 数据错误导致的异常\n runtime: 1002,\n parse: 1004,\n network: 1003,\n no_error_handler: 9997,\n custom_error: 9998,\n other: 9999,\n notSupport: 1005 // 浏览器不支持导致\n}\n\nconst ERROR_CODES = {\n 1: -499991,\n 2: -499992,\n 3: -499993,\n 4: -499994,\n 5: -499995\n}\n\nconst PLAYBACK_STATE = {\n STOP: 0,\n PLAYING: 1,\n PAUSE: 2,\n ERROR: 3,\n LOADING: 4\n}\n\nconst LOAD_STATES = {\n UNKNOWN: 0,\n PLAYABLE: 1,\n STALLED: 2,\n ERROR: 3\n}\n\n// 结束类型\nconst ENDED_TYPE = {\n ERROR: 1,\n NEXT: 2,\n ENDED: 3,\n UNLOAD: 4,\n DESTROY: 5,\n PLAY_CATCH: 6\n}\n\nconst LOGTYPES = {\n RETRY: 'error_retry',\n ONEERROR: 'oneerror',\n ONEEVENT: 'oneevent',\n ONETEMP: 'onetemp'\n}\n\nconst CACHE_FILE_TYPE = {\n NO_CACHE: 0,\n CACHED: 1\n}\n\nlet TEA_ID = 1300\nlet LS_KEY = `__tea_cache_tokens_${TEA_ID}`\nconst DEFAULT_INTERVAL = -1\n\nconst MAX_TIME = 12 * 60 * 60 * 1000 // 时差计算类的脏数据阈值,超过该值置空,避免时间戳类的脏数据导致数据结果异常\nconst MAX_COST = 60 * 1000 * 60;\n// 外部传入的公共参数\nconst COMMON_KEYS = ['vtype', 'tag', 'subtag', 'codec_type', 'device_type']\n\n// 卡顿最短触发时间间隔 ms\nconst MIN_WAITIONG = 200\n\n// seek和卡顿超时时间间隔 ms\nconst MAX_STALL_TIME = 60 * 1000\n\nclass XGPlayerAppLogger {\n static set TEA_ID (value) {\n TEA_ID = value\n LS_KEY = `__tea_cache_tokens_${TEA_ID}`\n }\n\n static get TEA_ID () {\n return TEA_ID\n }\n\n constructor (player, options) {\n this.player = player\n if (this.player === undefined || this.player === null) {\n throw new Error(`player is ${this.player}`)\n }\n if (!options || !options.line_app_id) {\n console.warn('player.config.vodLogOpts.line_app_id is necessary for plugin xgVodLogger')\n return;\n }\n this.sniffer = this.player.constructor.sniffer || this.player.constructor.Sniffer\n this.util = this.player.constructor.util || this.player.constructor.Util\n if (this.sniffer === undefined || this.util === undefined) {\n throw new Error('player should be an instane from xgplayer, need sniffer and util interface')\n }\n // 网络检测任务开启\n (options.isTask || options.isTask === undefined) && (this.task = new SpeedCheckTask())\n this.eventQueue = []\n this._instanceCreateTime = new Date().getTime()\n options.codec_type = options.codec_type || 'h264'\n this._options = options\n !this._options.maxQueueCount && (this._options.maxQueueCount = 5)\n this.line_app_id = parseInt(options.line_app_id, 10) || 0\n this.line_user_id = (options.line_user_id || '').toString()\n this.version = version\n this.sdk_version = version\n this.playerCoreVersion = options.playerCoreVersion || ''\n this.playerVersion = options.playerVersion || options.sdk_version\n this.closeSeekLog = options.closeSeekLog || false\n this.start_time = (options.start_time || 0) * 1000\n this.isFullAB = options.isFullAB || false\n this._initial_resolution = ''\n this.__vtype = null\n this.__dt = '' // dash类型\n this.isLowMp4 = false // 是否是经过dash降级的mp4\n this.resetLoggerParams()\n try {\n this.initializeTracker()\n this.sendLocalLog()\n this.bindEvt()\n log('logger constructor:' + this.player.video)\n } catch (e) {\n console.log(e)\n }\n }\n\n resetLoggerParams () {\n log('resetLoggerParams')\n const lc = this.playlogs ? this.playlogs.lc : 0\n this.playlogs = {\n nt: curTimestamp(), // sdk初始化的时间点\n vt: 0, // 起播时间\n rt: this.isEnded ? curTimestamp() : 0, // 播放器准备完成时间\n at: 0, // api_time, play接口获取视频列表结束的时间戳,单位是毫秒;\n pt: 0, // 触发播放流程时间 (this.isEnded || this.player.config.autoplay) ? new Date().getTime() : 0,\n bu_acu_t: 0, // 累计网络卡顿时长\n bc: 0, // 网络卡顿次数\n br: 0, // 中断次数\n fbrt: '', // 首次中断类型\n dbc: 0, // 解码卡顿次数\n de_bu_acu_t: 0, // 累计解码卡顿时长\n nbc: 0, // 网络卡顿次数\n n_bu_acu_t: 0, // 累计网络请求卡顿时长\n played: [{ begin: 0, end: -1 }], // 累计播放记录\n dash_pst: 0, // dash_state: player_start\n dash_wst: 0, // dash_state: wasm_start\n dash_wrt: 0, // dash_state: wasm_ready\n dash_ift: 0, // dash_state: init_finished\n dash_cst: 0, // dash_state: core_start\n dash_spt: 0, // dash_state: start_play\n interruptCount: 0, // error retry count\n degrade: 'none', // 降级类型 dash2dash_backup-dash备用地址降级 mp42dash-mp4降级为dash dash2mp4-dash降级mp4\n lc\n }\n\n // 上次发生降级的时候的数据\n this.degradeLog = {\n bu_acu_t: 0,\n bc: 0,\n watch_dur: 0,\n hasSendEnd: false\n }\n\n this.buffers = {\n allBuffer: [],\n curBuffer: {\n buf_s_pos: 0, // 缓存开始点\n buf_e_pos: 0, // 缓存结束点\n buf_include: 0 // 当前缓存是否包含当前播放时间\n }\n }\n\n this.netLog = {\n downloadSpeed: 0, // 网络请求速度\n requestCount: 0, // 网络请求次数\n connectCost: 0, // 平均网络连接耗时 ms\n totalSpeed: 0, // 下载速度累加\n rqCount: 0, // 一次播放行为中\n status: 0 // 最后一次请求的httpcode\n }\n\n this.merror = {\n // \"针对main url的错误信息\n cdn: [], // 请求失败的cdn信息\n player: [], // //main_url的player失败信息 // ijk 播放失败\n playCatch: [],\n expied: []\n }\n\n this.exInfo = {\n buffer: {}, // 缓存信息\n stall: [] // 卡顿信息\n }\n\n this._templog = null\n\n this._isOnePlayReport = false\n this.startStep = 0\n this.bft = 0\n this.initializeLogDatas()\n this.initializeUrlLog()\n }\n\n initializeLogDatas () {\n this.startStep = 0\n this.inWaitingStart = 0\n this.lastVideoTime = 0\n // -------common params-------\n this._endType = '' // 结束类型\n this._retryCount = 0 // 内部重试次数 目前播放器没有重试逻辑\n // event\n this.lastOperaTime = DEFAULT_INTERVAL\n this.lastEventTime = DEFAULT_INTERVAL\n this.seekLog = {\n intervalId: 0,\n lastSeekStartTime: nowTime(),\n seekBefore: 0,\n sat: 0, // 累计seek时长\n sc: 0 // seek的次数\n }\n // 分辨率,清晰度相关\n this.resLogs = {\n lastSwitchStartTime: DEFAULT_INTERVAL, // 上一次切换清晰度的时间戳\n switch_count: 0, // 切换次数\n abr_switch_count: 0,\n initial_resolution: '', // 初始清晰度\n final_resolution: '', // 最终清晰度\n ldst: 0, // 最后一次切换分辨率开始时间\n ldet: 0, // 最后一次切换分辨率完成时间\n df: '', // 清晰度\n lf: '', // 切换前清晰度\n played: [],\n bc: 0, // 累计卡顿次数\n bu_acu_t: 0,\n sc: 0, // 累计seek次数\n sat: 0, // 累计seek耗时\n buf: 0, // 累计缓存时长\n lbuf: 0, // 上一次缓存的时长\n lplayed: 0, // 上一个清洗播放的时长\n vs: 0, // 当前视频大小\n vds: 0, // 当前下载大小\n vps: 0, // 当前播放过的数据大小\n vis: 0, // vs/duration\n bitrate: 0 // 比特率\n }\n this.apiLog = {\n code: 0,\n message: '',\n logid: '',\n api: '',\n auth: '',\n error: {}\n }\n this.errorLog = {\n accu_errc: 0, // 累计错误次数\n try_err_c: 0, // 错误重试次数,重试成功清零\n errt: 0,\n errc: 0,\n fir_errt: 0,\n fir_errc: !Browser.isSupportMP4 ? 1005 : 0, // 试验 暂用字段\n last_errors: []\n }\n this.pauseLog = {\n pause_acu_t: 0, // 累计暂停时长\n isPausing: false,\n pause_start: 0\n }\n // stall\n this.stall = {\n intervalId: 0,\n stall_count: 0,\n first_buf_startt: 0, // 第一次卡顿开始\n first_buf_endt: 0, // 第一次卡顿结束\n stall_start: 0, // 一次开始时间\n stall_end: 0, // 一次结束\n stall_last_interval: 0, // 最近一次stall时长\n stall_acc_time: 0 // 多次累计\n }\n this._playerCreatedTime = 0\n this.load_state = LOAD_STATES.UNKNOWN\n this.lv_method = 6\n // 当前是否在seek中\n this.isSeeking = false\n // 当前是否播放结束\n this.isEnded = false\n // 首帧是否开始 0-未开始播放 1-onplay 但是首帧未出来 2-首帧已经ok\n this.startStep = 0\n this.isAutoplay = this.player.config && this.player.config.autoplay ? 1 : 0\n\n // 动态码率相关日志\n this.abrInfo = {\n abr_general_info: {},\n abr_event_info: {\n video_switch: [],\n video_stall: [],\n video_exit: {}\n },\n abr_play_info: {\n start_play_time_ms: 0,\n is_hint: 0,\n playback_info: {\n internet_speed_record: [],\n play_bitrate_record: [],\n buffer_length_record: [],\n play_speed_record: []\n }\n },\n abr_user_info: {\n cancel_abr: 0\n },\n abr_init_opts: this.player.config.autoBitrateOpts || {}\n }\n // 是否命中 预加载缓存 的标识\n this._cacheFile = CACHE_FILE_TYPE.NO_CACHE;\n }\n\n initSessionId () {\n let webId = '0'\n try {\n const data = window.localStorage.getItem(LS_KEY)\n webId = data.web_id || '0'\n } catch (error) {\n webId = '0'\n }\n this._sessionId = generateSessionId(webId)\n log(`sessionId ${this._sessionId}`)\n }\n\n initializeUrlLog = (value) => {\n let initialUrl = value || ''\n if (typeof (initialUrl) !== 'string') {\n initialUrl = ''\n }\n this.urlLog = {\n initial_url: initialUrl,\n initial_host: getHostFromUrl(initialUrl),\n initial_ip: ''\n }\n }\n\n initializeTracker () {\n const { _options } = this\n if (!window.__xgplayer_vod_log__) {\n this.tracker = window.__xgplayer_vod_log__ = new Collector('tracker')\n let channel = _options.channel || 'cn'\n channel = channel === 'va' || channel === 'sg' ? channel : 'cn'\n const config = {\n app_id: channel === 'cn' ? TEA_ID : (TEA_ID === 1300 ? 3063 : TEA_ID),\n channel: channel,\n log: false,\n disable_sdk_monitor: true\n }\n if (_options.channelDomain) {\n config.channel_domain = _options.channelDomain\n }\n // ab实验开关\n config.enable_ab_test = !!_options.enableAbTest\n // 初始化Tea日志上报组件\n this.tracker.init(config)\n } else {\n this.tracker = window.__xgplayer_vod_log__\n }\n\n this.initSessionId()\n // 日志公共参数\n this.commonParams = {\n play_type: 0, // 点播\n source_type: 'vid',\n sdk_version: this.sdk_version,\n pc: this.playerCoreVersion,\n pv: this.playerVersion,\n line_app_id: this.line_app_id,\n line_user_id: this.line_user_id,\n absdkVersion: _options.absdkVersion || '',\n app_version: _options.appVersion || '',\n platform: Browser.isPad ? 'pad' : (Browser.isMobile ? 'mobile' : 'pc') // 平台类型\n }\n log('commonParams ', this.commonParams)\n const trackConfig = {\n evtParams: this.commonParams,\n disable_auto_pv: true\n }\n log('Browser.name ', Browser.name)\n if (Browser.name && !Browser.isChrome && !Browser.isSafari) {\n trackConfig.browser = Browser.name\n Browser.appVersion && (trackConfig.browser_version = Browser.appVersion)\n }\n if (this.line_user_id) {\n trackConfig.user_unique_id = this.line_user_id\n trackConfig.web_id = this.line_user_id\n }\n // ab实验id获取\n const abVersion = _options.absdkVersion || ''\n if (abVersion) {\n trackConfig.ab_sdk_version = abVersion\n }\n if (_options.referrer) {\n trackConfig.referrer = _options.referrer\n trackConfig.referrer_host = getHostFromUrl(_options.referrer)\n }\n this.tracker.config(trackConfig)\n this.tracker.start()\n }\n\n resetDefiInfo () {\n const { resLogs } = this\n resLogs.played = []\n resLogs.bc = 0// 累计卡顿次数\n resLogs.bu_acu_t = 0\n resLogs.sc = 0\n resLogs.sat = 0\n }\n\n /**\n * 初始化的时候将本地记录的日志内容发出去,并将当前记录的内容移除\n */\n sendLocalLog () {\n const data = LocalLog.get()\n LocalLog.remove()\n data.map((item) => {\n Object.keys(item).map((key) => {\n log('sendLocalLog', key, item[key])\n if (this.player) {\n this.player.emit('abLog', key, item[key])\n const sendLocalCallback = this._options.sendLocalCallback\n if (sendLocalCallback && typeof sendLocalCallback === 'function') {\n sendLocalCallback(key, item[key])\n }\n }\n this.tracker(key, item[key])\n })\n })\n }\n\n bindEvt () {\n this.listeners = [\n { evt: 'play', handler: this.onPlay },\n { evt: 'playing', handler: this.onPlaying },\n { evt: 'pause', handler: this.onPause },\n { evt: 'waiting', handler: this.onWaiting },\n { evt: 'playInterfaceInfo', handler: this.onPlayInterfaceInfo },\n { evt: 'DRM_ERROR', handler: this.onDashError },\n { evt: 'ended', handler: this.onEnded },\n { evt: 'loadeddata', handler: this.onLoadeddata },\n { evt: 'loadstart', handler: this.onLoadStart },\n { evt: 'canplay', handler: this.onCanplay },\n { evt: 'dashStateChange', handler: this.onDashStateChange },\n { evt: 'autoplay was prevented', handler: this.onNotAutoPlay },\n // { 'evt': 'routechange', handler: this.onUserLeave },\n { evt: 'seeking', handler: this.onSeeking },\n { evt: 'seeked', handler: this.onSeeked },\n { evt: 'complete', handler: this.onPlayerInited },\n { evt: 'timeupdate', handler: this.onTimeUpdate },\n { evt: 'bufferedChange', handler: this.onBufferedChange },\n { evt: 'beforeDefinitionChange', handler: this.onBeforeDefinitionChange },\n { evt: 'definitionChange', handler: this.onDefinitionChange }, // 清晰度改变\n { evt: 'definitionChangeSuccess', handler: this.onDefiChangeSuccess }, // 清晰度改变\n { evt: 'drmTypeChange', handler: this.onDrmTypeChange }, // drm_type改变\n { evt: 'replayBtnClick', handler: this.onReplayBtnClick }, // 重播是否处理\n { evt: 'initialUrl', handler: this.initializeUrlLog },\n { evt: 'ABR_CHANGE', handler: this.onAbrChange }, // ABR 自动档位发生变化,进行日志记录\n { evt: 'playCatch', handler: this.onPlayCatch },\n { evt: 'MEDIA_EXPIRED', handler: this.onMediaExpied },\n { evt: 'log', handler: this.onLog },\n // {'evt':'ABR_LOOP', handler: this.onAbrLoop}, //ABR 抽样记录abr每次调用参数\n { evt: 'ABR_PRESTALL_END', handler: this.onAbrPrestallEnd }, // abr档位第一次码率下降后,用户操作结果\n { evt: 'progress_event', handler: this.onProgressEvent },\n { evt: 'logger_next', handler: this.onNext },\n { evt: 'nextEnded', handler: this.onNextEnded },\n { evt: 'media_format_error', handler: this.onMediaFormatError }\n ]\n const errorKey = this.player.config.errorKey\n log('>>>errorKey', errorKey)\n const errorEvt = { evt: 'error', handler: this.onPlayerError }\n if (errorKey) {\n errorEvt.evt = errorKey\n }\n this.listeners.push(errorEvt)\n this.listeners.forEach(item => {\n this.player.on(item.evt, item.handler)\n })\n // this.bindExtra()\n this.bindUnload()\n }\n\n onMediaFormatError = error_info => {\n this.onOneEvent({\n end_type: (error_info.error_type || '') + 'Error'\n })\n }\n\n // eslint-disable-next-line camelcase\n onDrmTypeChange = (drm_type) => {\n this.addIfExist('drm_type', { drm_type }, this._options)\n }\n\n addIfExist (paramsKey, context, params) {\n if (!isObject(context)) {\n return\n }\n const val = context[paramsKey]\n const isExist = !(val === undefined || val === null)\n if (isExist) {\n params[paramsKey] = val\n }\n }\n\n onReplayBtnClick = () => {\n this.resetLoggerParams()\n }\n\n onBeforeDefinitionChange = () => {\n this.resLogs.ldst = nowTime()\n this._endType = 'switch'\n }\n\n onDefinitionChange = ({ from, to }) => {\n this.changeResolution(from, to, this.resLogs.ldst, 'switch')\n log(`onDefinitionChange from:${from}, to:${to}`)\n }\n\n onDefiChangeSuccess = () => {\n log('onDefinitionChangeSuccess')\n this.updateVideoSize()\n this.triggerTask('start')\n }\n\n onAbrChange = ({ prev, cur, abrInfo }) => {\n if (this.player.abrInstance) {\n const data = this.player.abrInstance.eventInfo\n log('abrChange', data)\n data.last_definition = prev\n data.now_definition = cur\n this.abrInfo.abr_event_info.video_switch.push(data)\n this.changeResolution(prev, cur, nowTime(), 'abr_switch', abrInfo)\n }\n }\n\n onAbrPrestallEnd = (stop) => {\n this.abrInfo.abr_user_info.cancel_abr = stop ? 1 : 0\n }\n\n changeResolution (from, to, startTime, operaType, abrInfo) {\n const { resLogs } = this\n from = from ? from.replace('P', 'p') : ''\n to = to ? to.replace('P', 'p') : ''\n resLogs.ldet = nowTime()\n resLogs.df = to\n resLogs.lf = from\n resLogs.final_resolution = to\n resLogs.switch_count++\n const costTime = resLogs.ldet - startTime\n const ext = {\n bc: resLogs.bc,\n bu_acu_t: resLogs.bu_acu_t,\n sc: resLogs.sc,\n sat: resLogs.sat,\n watch_dur: computeWatchDur(resLogs.played)\n }\n if (abrInfo) {\n ext.abrInfo = abrInfo;\n }\n this.updateVds()\n this.resetDefiInfo()\n if (!this._options.closeResolutionLog) {\n this.onOneOperator({ costTime, operaType, stateBefore: from, stateAfter: to }, ext, 0)\n }\n }\n\n onTimeUpdate = () => {\n // seek操作到play过程中会调用一次timeUpdate,增加重置条件\n const { playlogs, resLogs, player, errorLog } = this\n // 重试起播,清空重试次数\n errorLog.try_err_c = 0\n\n if (!playlogs.vt && this.startStep === 1) {\n playlogs.vt = curTimestamp()\n log('onTimeUpdate: first frame inited', `currentTime11:${player.currentTime} vt-pt:${(playlogs.vt - playlogs.pt)} vt-nt:${playlogs.vt - playlogs.nt} vt-rt:${playlogs.vt - playlogs.rt}`)\n this.startStep = 2\n }\n if (!resLogs.initial_resolution) {\n resLogs.initial_resolution = ((player.currentDefitionFromPlayer && player.currentDefitionFromPlayer.definition) ? player.currentDefitionFromPlayer.definition : (player.config.defaultDefinition || (player.video.videoHeight + 'p') || '')).replace('P', 'p')\n }\n if (!resLogs.final_resolution) {\n resLogs.final_resolution = resLogs.initial_resolution\n }\n const len = playlogs.played.length\n if (len < 1) {\n playlogs.played.push({\n begin: player.currentTime,\n end: -1\n })\n } else {\n playlogs.played[len - 1].end = player.currentTime\n }\n\n const dLen = resLogs.played.length\n if (dLen < 1) {\n resLogs.played.push({\n begin: player.currentTime,\n end: -1\n })\n } else {\n resLogs.played[dLen - 1].end = player.currentTime\n }\n this.lastVideoTime = player.currentTime || 0\n this.updateCurBuffer()\n }\n\n onCanplay = () => {\n log('onCanplay', `this.startStep:${this.startStep} ${curTimestamp()}`)\n this.setVt()\n }\n\n onLoadeddata = () => {\n log('onLoadeddata', `this.startStep:${this.startStep} ${curTimestamp()}`)\n this.setVt()\n this.updateVideoSize()\n }\n\n onLoadStart = () => {\n const isSrcEmpty = checkVideoSrcIsEmpty(this.player.currentSrc) || checkIsEmptySrc(this.player, this.line_app_id)\n this.triggerTask('start')\n log('onLoadStart', `this.startStep:${this.startStep} ${curTimestamp()} isSrcEmpty:${isSrcEmpty} player.src:${this.player.src}`)\n if (this.startStep === 0 && !isSrcEmpty && document.visibilityState === 'visible') {\n this.setPt()\n }\n }\n\n onDashStateChange = state => {\n log('onDashStateChange', `this.startStep:${this.startStep} ${nowTime()} state:${state}`)\n const { playlogs } = this\n if (this.startStep < 2) {\n switch (state) {\n case 'player_start':\n playlogs.dash_pst = nowTime()\n break;\n case 'wasm_start':\n playlogs.dash_wst = nowTime()\n break;\n case 'wasm_ready':\n playlogs.dash_wrt = nowTime()\n break;\n case 'init_finished':\n playlogs.dash_ift = nowTime()\n break;\n case 'core_start':\n playlogs.dash_cst = nowTime()\n break;\n case 'start_play':\n playlogs.dash_spt = nowTime()\n break;\n }\n }\n }\n\n onBufferedChange = () => {\n const buffered = this.player.video && this.player.video.buffered // 最后一个缓冲视频范围的结尾,即缓冲完成的时长 单位s, X1000转换为ms\n if (buffered) {\n const len = buffered.length\n if (len > 0 && buffered.end(len - 1) + 1 > this.player.duration) {\n this.bft = curTimestamp()\n }\n }\n }\n\n onPlayerInited = () => {\n log('player init')\n this._playerCreatedTime = curTimestamp()\n this.playlogs.rt = curTimestamp()\n }\n\n onNotAutoPlay = () => {\n log('onNotAutoPlay', `autoplay:${this.isAutoplay}`)\n this.isAutoplay = 0\n }\n\n onDashError = (err) => {\n err = err || {}\n const { errorLog } = this\n errorLog.last_errors.push(err.errorCode)\n errorLog.accu_errc++\n this.onOneError({\n errorType: err.errorTypeCode,\n code: err.errorCode,\n url: err.url || '',\n headers: err.headers || {}\n }, 0)\n }\n\n /** *Player内部错误上报 */\n onPlayerError = (err) => {\n err = err || {}\n const { errorLog, player, line_app_id } = this\n log('onPlayerError', `this.player.type:${this.player.type} this.player.replayRunning:${this.player.replayRunning} isSupportMP4:${Browser.isSupportMP4} isPC:${Browser.isPC}`)\n log('onPlayerError', err)\n this.load_state = LOAD_STATES.ERROR\n this._endType = 'error'\n this.suspendWaitingStatus('onPlayerError')\n // 加密dash在重播/切换视频的时候会报错,但是可以重新开始播放,忽略该情况下产生的错误\n if (player.type === 'dash' && player.replayRunning) return\n const currentSrc = this.player.currentSrc\n if (!err.url) {\n err.url = currentSrc\n }\n // 当前浏览器不支持h264 只上报错误信息, 不计入vv\n if (((line_app_id === 1768 || line_app_id === 9999) && Browser.isPC && !Browser.isSupportMP4) || Browser.isSpider) {\n errorLog.errc = ERROR_CODES[5]\n errorLog.errt = ERROR_TYPES.notSupport\n this.onOneError({\n errorType: errorLog.errt,\n code: errorLog.errc,\n url: err.url,\n headers: err.headers || {}\n }, 0)\n this._isOnePlayReport = true\n return\n }\n\n errorLog.errt = err.errorTypeCode ? err.errorTypeCode : err.errorType && ERROR_TYPES[err.errorType] ? ERROR_TYPES[err.errorType] : 9999\n if (err.errorCode) {\n errorLog.errc = err.errorCode > 0 ? ERROR_CODES[err.errorCode] : err.errorCode\n } else if (err.code && err.code > 0) {\n // code大于0 说明是video原生报错,需要转换为相关错误码\n errorLog.errc = ERROR_CODES[err.code] || err.code\n } else {\n errorLog.errc = err.code\n }\n\n errorLog.last_errors.push(errorLog.errc)\n\n if (errorLog.fir_errc === 0) {\n errorLog.fir_errc = errorLog.errc\n }\n this.onOnePlay(ENDED_TYPE.ERROR)\n this.onOneTemp(ENDED_TYPE.ERROR)\n this.sendDegradeLog('playCatch_end', this.playlogs.degrade)\n this.onOneError({\n errorType: errorLog.errt,\n code: errorLog.errc,\n url: err.url || '',\n headers: err.headers || {}\n })\n this.sendEventsQueue()\n }\n\n /**\n *\n * @param {*} info\n * {\n * code:0,\n * message: 'xxx',\n * logid: 'xxxx',\n * api: 'xxxx',\n * timestamep: 11111,\n * error: { code: 'xxxx' }\n * }\n *\n */\n /** *Play接口错误上报 */\n onPlayInterfaceInfo = (info) => {\n log('onPlayInterfaceInfo', info)\n const { errorLog, apiLog, playlogs } = this\n if (info) {\n Object.keys(info).map(key => {\n if (key === 'code') {\n apiLog.vsc = info[key]\n } else if (key === 'message') {\n apiLog.vsc_message = info.message || 'success,视频可正常播放'\n } else {\n apiLog[key] = info[key]\n }\n })\n }\n playlogs.at = info.timestamep || new Date().getTime()\n // -9988 为dash_error 单独上报\n if ((info.error && info.error.errc === -9988)) return\n apiLog.vsc = info.code || 10\n apiLog.vsc_message = info.message || 'success,视频可正常播放'\n if (info.error) {\n const error = info.error\n errorLog.errt = 1000\n errorLog.errc = error.errc || -9998\n errorLog.last_errors.push(error.errc || -9998)\n if (errorLog.fir_errc === 0) {\n errorLog.fir_errc = error.errc || -9998\n }\n errorLog.accu_errc++\n if (errorLog.accu_errc === 1) {\n errorLog.fir_errt = nowTime()\n }\n this.onOneError({ errorType: 1000, code: error.errc || -9998, url: '', headers: {} })\n }\n }\n\n /**\n * 播放流程中的处理数据收集 通过event上报\n * 开发过程中一些特殊情况数据收集\n * end_type: progress\n */\n onProgressEvent = (data = {}) => {\n const { netLog } = this\n // 记录下载速度\n if (data.speed) {\n const speed = data.speed > 1000000 ? Math.floor(data.speed / 1000) : data.speed\n netLog.downloadSpeed = speed\n netLog.totalSpeed += speed\n netLog.rqCount++\n }\n\n data.type !== 'oversize' && netLog.requestCount++\n data.connectTime && (netLog.connectCost = data.connectTime)\n\n // 抽样发送埋点 10%\n const percent = netLog.rqCount < 7 ? 100 : (data.costTime >= 5000 ? 20 : 10)\n if (data.type === 'success' && parseInt(Math.random() * 100, 10) <= percent) {\n return;\n }\n\n const connectData = findPerformanceInfo(data.cdnUrl)\n const xhr = data.xhr || {}\n const type = data.type ? `progress_${data.type}` : 'progress'\n\n let headers = data.headers\n if (!headers) {\n headers = getResponseHeaders(xhr)\n }\n headers = transformHeader(headers)\n const ext = {\n ...headers,\n download_speed: netLog.downloadSpeed,\n connect_cost: netLog.connectCost,\n c_dur: connectData.connectDuration || 0,\n d_dur: connectData.domainDuration || 0,\n r_dur: connectData.duration || 0,\n rqtt: new Date().getTime(),\n x_cache: headers.x_response_cache || '',\n server_ip: headers.x_response_sinfo\n }\n if (data.status) {\n netLog.status = data.status\n } else if (xhr && xhr instanceof window.XMLHttpRequest) {\n netLog.status = xhr.status || 0\n }\n\n ext.status = netLog.status\n const url = data.cdnUrl || data.url\n if (data.type === 'error') {\n this.merror.cdn.push({\n costTime: data.costTime,\n cur_play_pos: data.pos,\n cdn_url: url,\n cdn_host: getHostFromUrl(url),\n ...ext,\n ...headers\n })\n }\n this.onOneEvent({\n costTime: data.costTime,\n vid: data.vid,\n end_type: type,\n cur_play_pos: data.pos,\n cdn_url: url,\n cdn_host: getHostFromUrl(url)\n }, ext, data.type === 'error' ? 0 : 2)\n }\n\n onNext = (type) => {\n log('onNext:startStep:', this.startStep)\n if (this.startStep > 0) {\n if (this._reportInvalidVV(ENDED_TYPE.NEXT)) {\n return;\n }\n this.onOnePlay(ENDED_TYPE.NEXT)\n this.onOneTemp(ENDED_TYPE.NEXT)\n this.sendEventsQueue()\n }\n this.vtype = null\n this.playlogs.lc = 0\n this.resetLoggerParams()\n }\n\n onNextEnded = () => {\n const { player, resLogs } = this\n let idf = player.config.defaultDefinition || ''\n idf = idf.replace('P', 'p')\n resLogs.initial_resolution = idf\n resLogs.final_resolution = idf\n }\n\n onSeeking = () => {\n if (checkVideoSrcIsEmpty(this.player.src) || checkIsEmptySrc(this.player, this.line_app_id)) return\n const { resLogs, playlogs, player, seekLog } = this\n log('onSeeking', `currentTime:${player.currentTime}`)\n // 解决非自动播放就seek的时候pt设置问题\n if (this.startStep === 0) {\n this.setPt()\n }\n // seek开始自动结束卡顿计算\n this.suspendWaitingStatus('seek')\n this.isSeeking && this.suspendSeekStatus('seek', false)\n this.isSeeking = true\n playlogs.played.push({\n begin: this.player.currentTime,\n end: -1\n })\n resLogs.played.push({\n begin: this.player.currentTime,\n end: -1\n })\n seekLog.lastSeekStartTime = nowTime()\n seekLog.seekBefore = this.lastVideoTime.toString()\n seekLog.intervalId = setTimeout(() => {\n if (this.isSeeking) {\n this.suspendSeekStatus('seekTimeout', true)\n }\n }, MAX_STALL_TIME)\n }\n\n onSeeked = () => {\n if (checkVideoSrcIsEmpty(this.player.src) || checkIsEmptySrc(this.player, this.line_app_id)) return\n if (this.isSeeking) {\n this.suspendSeekStatus('seeked', true)\n }\n }\n\n // 获取操作间隔,单位ms\n getLastInterval (key, context = this, refresh = true) {\n const val = context[key]\n const now = nowTime()\n const lastInterval = val === DEFAULT_INTERVAL ? DEFAULT_INTERVAL : (now - val)\n if (refresh) {\n context[key] = now\n }\n return lastInterval\n }\n\n updateSeekPt (refresh) {\n return this.getLastInterval('lastSeekStartTime', this.seekLog, refresh)\n }\n\n onPlaying = () => {\n this.suspendWaitingStatus('play')\n this.load_state = LOAD_STATES.PLAYABLE\n const now = nowTime()\n if (this.pauseLog.isPausing) {\n this.pauseLog.isPausing = false\n this.pauseLog.pause_acu_t += (now - this.pauseLog.pause_start)\n }\n }\n\n onPlayCatch = (type, error = { errorType: '', errorTypeCode: 0, errorCode: 0, url: '', headers: {}, status: 0 }) => {\n log('onPlayCatch', type, error)\n if (!type) {\n return\n }\n const { errorLog, playlogs, merror } = this\n merror.playCatch.push({\n errc: error.errorCode,\n errt: error.errorType,\n ...error.headers\n })\n this.setBr('playcatch')\n errorLog.accu_errc++\n errorLog.try_err_c++\n error.errorCode && errorLog.last_errors.push(error.errorCode)\n this.suspendWaitingStatus('playcatch')\n this.sendDegradeLog('playCatch', playlogs.degrade, { cdn_url: error.url })\n if (type === 'mp42dash') {\n this.vtype = 'DASH_2'\n } else if (type === 'dash2mp4') {\n this.vtype = 'MP4_2'\n }\n playlogs.degrade = type\n\n this.onOneError({\n errorType: error.errorTypeCode,\n code: error.errorCode,\n url: error.url || '',\n status: error.httpCode || error.status,\n headers: error.headers || {},\n vid: error.vid || this.vid,\n preload_hit: error.preloadHit || 0,\n preload_cached: error.preloadCached || 0,\n endState: ENDED_TYPE.PLAY_CATCH,\n costTime: error.costTime,\n message: error.message\n }, 0)\n }\n\n onMediaExpied = (error = { errorType: '', errorTypeCode: 0, errorCode: 0, url: '', headers: {}, status: 0 }) => {\n const { errorLog, playlogs } = this\n log('onMediaExpied', error)\n this.suspendWaitingStatus('expied')\n this.setBr('expied')\n errorLog.accu_errc++\n errorLog.try_err_c++\n errorLog.last_errors.push(error.errorCode)\n playlogs.at = new Date().getTime()\n this.merror.expied.push({\n errorType: error.errorTypeCode || error.errorType,\n code: error.errorCode,\n url: error.url || '',\n status: error.status,\n ...transformHeader(error.headers || {})\n })\n this.onOneError({\n errorType: error.errorTypeCode || error.errorType,\n code: error.errorCode,\n url: error.url || '',\n status: error.status,\n headers: error.headers || {}\n }, 0)\n }\n\n onLog = (data) => {\n log('onLog', data)\n const type = data.type\n delete data.type\n if (!type) {\n return\n }\n switch (type) {\n // 重试\n case LOGTYPES.RETRY:\n break;\n case LOGTYPES.ONETEMP:\n if (!this._templog) {\n this._templog = {}\n }\n this._templog = parseTempData(this._templog, data.data, data.action)\n // 存在字段,命中数据库缓存\n if (this._templog.preload_hit) {\n this._cacheFile = CACHE_FILE_TYPE.CACHED;\n }\n break;\n case LOGTYPES.ONEERROR:\n const { errorLog } = this\n errorLog.accu_errc++\n errorLog.try_err_c++\n this.setBr('mp4error')\n errorLog.last_errors.push(data.code)\n this.onOneError(data, 0)\n break;\n case LOGTYPES.ONEEVENT:\n const ret = formatData(data, { costTime: 'costTime', vid: 'vid', end_type: 'end_type', pos: 'cur_play_pos', cdnUrl: 'cdn_url' })\n if (ret.ext) {\n ['start', 'end'].map(key => {\n if (ret.ext[key]) {\n ret.ext[`ext_${key}`] = ret.ext[key]\n delete ret.ext[key]\n }\n })\n }\n this.onOneEvent(ret.data, ret.ext, 2)\n break;\n default:\n }\n }\n\n onPlay = () => {\n log('onPlay', `this.startStep :${this.startStep} this.isEnded:${this.isEnded}`)\n // 如果当前状态是播放完成状态,将一些标记复原\n if (this.isEnded) {\n this.resetLoggerParams()\n this.setPt()\n }\n }\n\n onPause = () => {\n log('onPause')\n const { pauseLog } = this\n pauseLog.isPausing = true\n pauseLog.pause_start = nowTime()\n }\n\n onWaiting = () => {\n const { stall } = this\n log('onWaiting>', `isSeeking:${this.isSeeking} startStep:${this.startStep} intervalId:${stall.intervalId}`)\n if (this.isSeeking || this.playlogs.vt === 0) {\n return\n }\n\n // 上一次的卡顿还没有结束\n if (this.inWaitingStart > 0) {\n return\n }\n\n if (stall.intervalId) {\n window.clearTimeout(stall.intervalId)\n stall.intervalId = null\n }\n\n this.inWaitingStart = nowTime()\n\n // 延迟200ms进入卡顿状态\n stall.intervalId = window.setTimeout(() => {\n const { stall } = this\n log(`stall.intervalId>>${stall.intervalId} cost: ${nowTime() - this.inWaitingStart}`)\n this._endType = 'wait'\n this.load_state = LOAD_STATES.STALLED\n // mp4播放才做检测\n if (this.vtype.indexOf('MP4') > -1 && this.player.currentTime > 10 && this.task) {\n this.triggerTask('waiting', this.initial_url)\n this.requestCount++\n }\n stall.stall_start = this.inWaitingStart\n if (stall.sc === 1) {\n stall.first_buf_startt = this.inWaitingStart\n }\n window.clearTimeout(stall.intervalId)\n stall.intervalId = null\n\n this.startWaitingStatus(this.inWaitingStart, nowTime() - this.inWaitingStart)\n // 开始进入卡顿超时记时\n stall.intervalId = setTimeout(() => {\n if (this.inWaitingStart > 0) {\n this.suspendWaitingStatus('waitTimeout')\n }\n }, MAX_STALL_TIME)\n }, MIN_WAITIONG)\n }\n\n onEnded = () => {\n if (!this.initial_url) {\n return;\n }\n const watchDur = computeWatchDur(this.playlogs.played)\n log('onEnded', `watchDur:${watchDur} vt:${this.vt} pt:${this.pt}`)\n this.isEnded = true\n const df = this.resLogs.df\n this.changeResolution(df, df, nowTime(), 'leave_switch')\n this.onOnePlay(ENDED_TYPE.ENDED)\n this.sendDegradeLog('playCatch_end', this.playlogs.degrade)\n this.onOneTemp(ENDED_TYPE.ENDED)\n this.sendEventsQueue()\n this.playlogs.lc++\n // this.resetLoggerParams()\n }\n\n /***\n *未起播,网络状态码为-1\n */\n _reportInvalidVV (endState) {\n if (this._isInvaidVV()) {\n this.onOneError({ endState, errorType: 9998, code: -1, url: this.url, headers: {} }, 0)\n this._isOnePlayReport = true\n return true;\n }\n return false\n }\n\n _isInvaidVV () {\n return this.vt === 0 && this.curStatus === -1;\n }\n\n onUnload = () => {\n // 离开页面未起播 不发送埋点\n if (this.startStep === 0 || !this.initial_url) {\n return; // 未起播 不上报\n }\n const playState = ENDED_TYPE.UNLOAD\n this.onOneTemp(playState)\n this.sendDegradeLog('playCatch_end', this.playlogs.degrade)\n if (this._reportInvalidVV(ENDED_TYPE.UNLOAD)) {\n return;\n }\n // disableLocalCache 表示是否使用localStorage进行缓存\n !this._options.disableLocalCache ? this.onOnePlay(playState, true) : this.onOnePlay(playState, false)\n // this.sendEventsQueue()\n }\n\n onVisibilitychange = () => {\n const { vt } = this.playlogs\n if (document.visibilityState === 'visible') {\n if (!vt) {\n this.setPt()\n }\n }\n }\n\n bindUnload () {\n if (this.sniffer.device === 'pc') {\n window.addEventListener('beforeunload', this.onUnload)\n } else if (this.sniffer.device === 'mobile') {\n window.addEventListener('pagehide', this.onUnload)\n }\n document.addEventListener('visibilitychange', this.onVisibilitychange)\n this.player.once('destroy', this.onDestroy)\n }\n\n onDestroy = () => {\n log(`onDestroy:this.startStep:${this.startStep} initial_url:${this.initial_url} ${!!this.initial_url}`)\n // 播放器销毁的时候,如果首帧已经开始了,算一次vv\n console.log('>>>onDestroy', this.startStep > 0 && !!this.initial_url)\n if (this.startStep > 0 && !!this.initial_url) {\n this.onOnePlay(ENDED_TYPE.DESTROY)\n this.onOneTemp(ENDED_TYPE.DESTROY)\n this.sendDegradeLog('playCatch_end', this.playlogs.degrade)\n }\n const df = this.resLogs.df\n this.changeResolution(df, df, nowTime(), 'leave_switch')\n this.sendEventsQueue()\n if (this.sniffer.device === 'pc') {\n window.removeEventListener('beforeunload', this.onUnload)\n } else if (this.sniffer.device === 'mobile') {\n window.removeEventListener('pagehide', this.onUnload)\n }\n document.removeEventListener('visibilitychange', this.onVisibilitychange)\n this.listeners.forEach(item => {\n this.player.off(item.evt, item.handler)\n })\n this.clearTimers()\n this.player.off('destroy', this.onDestroy)\n this.task && this.task.clear()\n }\n\n clearTimers () {\n const { seekLog, stall } = this\n seekLog.intervalId && window.clearTimeout(seekLog.intervalId)\n stall.intervalId && window.clearTimeout(stall.intervalId)\n }\n\n /**\n *\n * @param {string} endType 结束理性 playcatch-发生降级 playcatch-降级播放结束\n * @param {string} degrade 降级类型\n * @param {object} data 附加数据\n */\n sendDegradeLog (endType = 'playCatch', degrade = 'none', data = {}) {\n log('sendDegradeLog', endType, degrade, data)\n const { degradeLog, playlogs } = this\n if (degradeLog.hasSendEnd || (endType === 'playCatch_end' && degrade === 'none')) {\n return\n }\n if (endType === 'playCatch_end') {\n degradeLog.hasSendEnd = true\n }\n const bu_acu_t = this.bu_acu_t - degradeLog.bu_acu_t\n const watchDur = computeWatchDur(playlogs.played)\n this.onOneEvent({\n costTime: this.vd,\n vid: this.vid,\n end_type: endType, // 'playcatch',\n cur_play_pos: this.player.currentTime,\n cdn_url: data.url\n }, {\n degrade: degrade,\n vt: this.vt,\n pt: this.pt,\n fvt: this.fvt,\n bc: this.bc - degradeLog.bc,\n bu_acu_t: bu_acu_t > MAX_TIME ? 0 : bu_acu_t,\n watch_dur: watchDur - degradeLog.watch_dur,\n ...data\n }, 0)\n }\n\n /**\n * 一次播放上报\n * 整个播放生命周期只上报一次,播放结束(非循环),重新计数\n * @param {Int} endState 结束类型\n * @param {Boolean} isLeave 是否是页面重载引发\n */\n onOnePlay = (endState = 3, isLeave = false) => {\n log(`onOnePlay _isOnePlayReport:${this._isOnePlayReport} isLeave: ${isLeave} endState:${endState}`)\n if (this._isOnePlayReport) {\n return\n }\n const { errorLog, playlogs, abrInfo, resLogs, player, apiLog, pauseLog, stall, netLog } = this\n this._isOnePlayReport = true\n const watchDur = computeWatchDur(playlogs.played)\n const et = curTimestamp()\n\n let videoBufferTime = 0\n let audioBufferTime = 0\n const buffered = player.video && player.video.buffered // 最后一个缓冲视频范围的结尾,即缓冲完成的时长 单位s, X1000转换为ms\n if (buffered) {\n const len = buffered.length\n let cachedBufferTime = 0\n for (let i = 0; i < len; i++) {\n cachedBufferTime += buffered.end(i) - buffered.start(i)\n }\n videoBufferTime = audioBufferTime = cachedBufferTime * 1000\n }\n const params = {\n local_time: new Date().getTime(),\n log_type: 'video_playq',\n // 是否有插件加载异常,0是正常 1为异常\n plugin_exception: 0, // todo\n // 自研播放器创建异常\n player_create_exception: '', // todo\n v: this.vid, // video id,外部传入\n initial_url: this.initial_url,\n initial_host: this.initial_host,\n initial_ip: this.curHeaders.x_response_sinfo || 0,\n initial_type: this.initial_type,\n ...this.curHeaders,\n initial_resolution: resLogs.initial_resolution,\n final_resolution: resLogs.final_resolution,\n // play_timestamp, 用户启动本次播放的时间戳\n pt: this.pt,\n // prepare开始的时间戳,单位是毫秒\n prepare_start_time: playlogs.nt, // 暂时用启动播放时间戳\n // prepare结束时间戳\n prepare_end_time: playlogs.rt || curTimestamp(), // 暂时用启动播放时间戳\n // vv_time, 用户开始看到点播视频的第一帧画面的时间戳\n vt: this.vt,\n // wp_time用户没有播放点播视频就离开的时间,若未发生则是空,LWP(leave without play),单位是毫秒\n lt: this.lt,\n // lpt lt与pt的差值,用于统计复用下未起播快速切换\n lpt: this.lpt,\n // 首帧耗时\n fvt: this.fvt,\n // buffer finish time用户本次点播视频流加载结束的时间戳,单位是毫秒\n bft: this.bft, // 用户本次点播视频流加载结束时间戳\n // seek的次数\n sc: this.seekLog.sc,\n // 累计seek时长\n sat: this.seekLog.sat,\n // 网络卡顿次数,即出现Loading的次数,只统计main url的bc\n bc: this.bc,\n dbc: playlogs.dbc || 0,\n nbc: playlogs.nbc || 0,\n video_net_s: this.videoNetworkState,\n status: this.curStatus,\n // 第一次发生卡顿的时间\n first_buf_startt: stall.first_buf_startt,\n // 第一次卡顿结束时间\n first_buf_endt: stall.first_buf_endt,\n lc: playlogs.lc, // 循环播放次数为0\n // 累积网络卡顿时长\n bu_acu_t: this.bu_acu_t > MAX_TIME ? 0 : this.bu_acu_t,\n de_bu_acu_t: playlogs.de_bu_acu_t || 0,\n n_bu_acu_t: playlogs.n_bu_acu_t || 0,\n // 累积暂停时长\n pause_acu_t: pauseLog.pause_acu_t,\n // 退出时播放时播放进度, 单位毫秒\n cur_play_pos: this.cur_play_pos,\n // 退出时当前的加载状态(卡顿与否)\n load_state: this.load_state,\n // 退出时的播放状态\n playback_state: this.playback_state,\n // 结束类型\n end_state: endState,\n // 累积观看时长\n watch_dur: watchDur > MAX_TIME ? 0 : watchDur,\n // 切换清晰度的次数\n switch_resolution_c: this.switchResolutionCount,\n // 是否在onprepared之后自动start 是否自动播放\n is_start_play_automatically: this.isAutoplay,\n // 视频续播时的起始位置(用户上次看到的位置),单位ms\n start_time: this.start_time,\n // 是否播放完成\n finish: this.finish,\n // error_type,最终的错误类型,服务端据此统计总的失败率 0 无错误 1000 Play接口错误 1001 DNS错误 1002 Player内部错误 1003 CDN错误 9999 其他错误\n errt: errorLog.errt,\n // 最终错误码\n errc: errorLog.errc,\n // video status code 视频状态异常,play接口返回的视频状态码(0或者10为正常状态)\n vsc: apiLog.vsc,\n // play接口返回的视频状态异常信息\n vsc_message: apiLog.vsc_message,\n api_str: apiLog.api_str, // api请求链接\n auth: apiLog.auth || apiLog.logid, // api请求非时候token或者logid\n width: this.videoWidth,\n height: this.videoHeight,\n // 视频时长\n vd: this.vd,\n // 缓存时长\n video_length: videoBufferTime,\n audio_length: audioBufferTime,\n // 视频清晰度\n df: resLogs.df,\n // 视频当前清晰度\n lf: resLogs.lf,\n play_c: 0, // 本次setVideoID/DirectURL/..中的play次数写为0\n // 播放器实例创建完成时间\n player_created_t: this.player_created_t,\n // 抽刺出错时间\n fir_errt: errorLog.fir_errt,\n // 首次出错错误码\n fir_errc: errorLog.fir_errc,\n lv_method: 0, // 离开时调用的方式 \"0 stop, 1 release, 2 release async ,3 normal 4 error , 5 status excp ,6 reset\"\n // 最后一次切换分辨率开始时间\n ldst: resLogs.ldst,\n // 最后一次切换分辨率完成时间\n ldet: resLogs.ldet,\n is_disable_short_seek: 0, // 播放器目前没有short_seek处理\n mute: this.mute,\n volume: this.volume,\n download_speed: this.task && this.task.speed ? this.task.speed : netLog.downloadSpeed,\n avg_speed: netLog.rqCount > 0 ? parseInt(netLog.totalSpeed / netLog.rqCount, 10) : 0,\n mdl_req_num: netLog.requestCount, // 网络请求次数\n watingcost: this.watingCost,\n br: playlogs.br, // 中断次数\n fbrt: playlogs.fbrt, // 第一次中断\n try_err_c: errorLog.try_err_c, // 重试次数\n accu_errc: errorLog.accu_errc, // 累计错误次数\n dash_pst: this.dash_pst,\n dash_wst: this.dash_wst,\n dash_wrt: this.dash_wrt,\n dash_ift: this.dash_ift,\n dash_cst: this.dash_cst,\n dash_spt: this.dash_spt,\n dash_break: player.dashBufferBreak === 2 ? 1 : 0,\n // eagleid: this.eagleid,\n merror: JSON.stringify(this.merror),\n ex: JSON.stringify(this.exInfo),\n bufs: JSON.stringify(this.buffers.allBuffer),\n vs: resLogs.vs,\n vds: resLogs.vds,\n vps: resLogs.vps,\n ...this.buffers.curBuffer,\n degrade: playlogs.degrade,\n cache_file: this._cacheFile\n }\n // 已经开始起播, 中途退出\n if (this.vt !== 0) {\n params.et = et\n }\n\n if (player && player.dashState) {\n params.dash_state = player.dashState;\n }\n\n ['drm_type', 'dynamic_type', 'enable_bash'].forEach((key) => {\n this.addIfExist(key, this._options, params)\n })\n // 设置abr信息\n if (player.abrInstance) {\n const abrInst = player.abrInstance\n abrInfo.abr_general_info = abrInst.generalInfo\n abrInfo.abr_event_info.video_exit = {\n local_time_ms: new Date().getTime(),\n buffer_length: abrInst.bufferLength,\n internet_speed: abrInst.downloadSpeed,\n now_bitrate: abrInst.nowBitrate,\n play_speed: this.player.playbackRate\n }\n if (abrInst.getAbrPlayInfo) {\n abrInfo.abr_play_info = abrInst.getAbrPlayInfo() // 时序日志转到播放器中处理\n }\n if (abrInst.getAbrVVStats) {\n const abrVVStats = abrInst.getAbrVVStats();\n Object.keys(abrVVStats).forEach((key) => {\n params[key] = abrVVStats[key]\n })\n }\n }\n abrInfo.abr_init_opts = this.player.config.autoBitrateOpts || {}; // 空配置启播后,改配置日志有问题,上传前重新赋值\n params.abr_info = JSON.stringify(this.abrInfo)\n if (isLeave) {\n this.reportLog(REPORT_EVENTS.ONE_PLAY, params, isLeave)\n } else {\n this.reportLog(REPORT_EVENTS.ONE_PLAY, params)\n }\n }\n\n /** *一次用户操作上报 */\n // eslint-disable-next-line camelcase\n onOneOperator ({ costTime, operaType, stateBefore, stateAfter, endType }, ext = {}, mode = 2) {\n // eslint-disable-next-line camelcase\n const last_interval = this.getLastInterval('lastOperaTime')\n const params = {\n local_time: new Date().getTime(),\n v: this.vid, // video id,外部传入\n opera_type: operaType,\n state_before: stateBefore,\n state_after: stateAfter,\n cost_time: costTime,\n end_type: endType || this.end_type,\n cdn_url: this.url,\n resolution: this.resolution,\n last_interval,\n bufs: JSON.stringify(this.buffers.allBuffer),\n video_pos: this.cur_play_pos,\n // buffer_time: this.buffer_time,\n retry_count: this.retry_count // 目前播放器没有重试逻辑\n }\n if (this.player && this.player.dashState) {\n params.dash_state = this.player.dashState\n }\n Object.keys(ext).map(key => {\n params[key] = ext[key]\n })\n this.addIfExist('drm_type', this._options, params)\n this.reportLog(REPORT_EVENTS.ONE_OPERA, params, mode)\n }\n\n /** 一次事件上报,卡顿等 */\n // eslint-disable-next-line camelcase\n onOneEvent = ({ costTime, vid, end_type, cur_play_pos, cdn_url, cdn_host }, ext, mode) => {\n const { curBuffer } = this.buffers\n const params = {\n local_time: new Date().getTime(),\n // video id,外部传入\n v: vid || this.vid,\n // 耗时\n cost_time: costTime,\n // 结束类型seek、switch、exit、wait、error、progress\n end_type: end_type || this.end_type,\n // 当前cdn地址\n cdn_url: cdn_url || this.url,\n cdn_host: cdn_host || '',\n initial_type: this.initial_type,\n resolution: this.resolution,\n // 当前倍速\n play_speed: this.playbackRate,\n // 距离起播时间间隔\n first_frame_interval: nowTime() - this.pt,\n // 距离上次切清晰度的时间间隔\n last_switch_interval: this.getLastInterval('lastSwitchStartTime', this.resLogs, false),\n // 距离上次seek操作的时间间隔\n last_seek_interval: this.updateSeekPt(false),\n // 上次同类型事件的时间间隔\n last_event_interval: this.getLastInterval('lastEventTime'),\n // 时间发生时视频进度\n video_pos: cur_play_pos || this.cur_play_pos,\n video_ready_s: this.videoReadyState,\n video_seeking: this.videoSeeking,\n video_paused: this.videoPaused,\n bufs: JSON.stringify(this.buffers.allBuffer),\n // 内部重试次数\n retry_count: this.retry_count, // 目前播放器没有重试逻辑\n at: this.playlogs.at, // 初始化时间戳\n stay_seconds: parseInt((new Date().getTime() - this.playlogs.at) / 1000, 10),\n preload_state: this.player ? (this.player.preloadState || 0) : 0, // 预加载状态,0没有 1队列中 2当前正在预加载\n ...curBuffer\n }\n if (end_type === 'waitstart' && typeof this._options.getPageFPS === 'function') {\n const fpsInfo = this._options.getPageFPS()\n params.cur_fps = fpsInfo.curFPS || 0\n params.avg_fps = fpsInfo.avgFPS || 0\n }\n if (this.player && this.player.dashState) {\n params.dash_state = this.player.dashState;\n }\n if (ext && typeof ext === 'object') {\n for (const key in ext) {\n !params[key] && (params[key] = ext[key])\n }\n }\n this.addIfExist('drm_type', this._options, params)\n this.reportLog(REPORT_EVENTS.ONE_EVENT, params, mode)\n }\n\n onOneTemp = () => {\n log('onOneTemp>>', !this._templog)\n if (!this._templog) {\n return\n }\n const { player, playlogs, pauseLog, errorLog, resLogs } = this\n const watchDur = computeWatchDur(playlogs.played)\n const params = {\n local_time: new Date().getTime(),\n ...this._templog,\n v: this.vid, // video id,外部传入\n initial_type: this.initial_type, // 初始起播类型\n // play_timestamp, 用户启动本次播放的时间戳\n pt: this.pt,\n // vv_time, 用户开始看到点播视频的第一帧画面的时间戳\n vt: this.vt,\n // wp_time用户没有播放点播视频就离开的时间,若未发生则是空,LWP(leave without play),单位是毫秒\n lt: this.lt,\n // 首帧耗时\n fvt: this.fvt,\n // 网络卡顿次数,即出现Loading的次数,只统计main url的bc\n bc: this.bc,\n // 第一次发生卡顿的时间\n // 累积网络卡顿时长\n bu_acu_t: this.bu_acu_t > MAX_TIME ? 0 : this.bu_acu_t,\n // 累积暂停时长\n pause_acu_t: pauseLog.pause_acu_t,\n // 退出时播放时播放进度, 单位毫秒\n cur_play_pos: this.cur_play_pos,\n // 累积观看时长\n watch_dur: watchDur > MAX_TIME ? 0 : watchDur,\n // 是否播放完成\n finish: this.finish,\n // error_type,最终的错误类型,服务端据此统计总的失败率 0 无错误 1000 Play接口错误 1001 DNS错误 1002 Player内部错误 1003 CDN错误 9999 其他错误\n errt: errorLog.errt,\n // 最终错误码\n errc: errorLog.errc,\n // 视频时长\n vd: this.vd,\n // 视频清晰度\n df: resLogs.df,\n // 视频当前清晰度\n lf: resLogs.lf,\n br: playlogs.br, // 中断次数\n fbrt: playlogs.fbrt, // 第一次中断\n try_err_c: errorLog.try_err_c, // 重试次数\n accu_errc: errorLog.accu_errc, // 累计错误次数\n dash_break: player.dashBufferBreak === 2 ? 1 : 0,\n bufs: JSON.stringify(this.buffers.allBuffer),\n vs: resLogs.vs,\n vds: resLogs.vds,\n vps: resLogs.vps,\n ...this.buffers.curBuffer,\n degrade: playlogs.degrade\n }\n // 已经开始起播, 中途退出\n if (this.vt !== 0) {\n params.et = curTimestamp()\n }\n\n ['drm_type', 'dynamic_type', 'enable_bash'].forEach((key) => {\n this.addIfExist(key, this._options, params)\n })\n this.reportLog(REPORT_EVENTS.ONE_TEMP, params, 0)\n this._templog = null\n }\n\n /**\n * 一次错误上报\n * @param {Object} err 错误信息对象\n * type: 0 无错误\n * 1000 Play接口错误\n * 详见 ERROR_TYPES 枚举\n */\n onOneError (err = { errorType: 0, code: 0, url: '', headers: {}, costTime: 0, vid: '', message: '', preload_hit: 0, preload_cached: 0 }, mode = 0) {\n log('onOneError', err)\n const { errorLog, apiLog, resLogs, player, playlogs } = this\n const headers = transformHeader(err.headers || {})\n const params = {\n v: err.vid || this.vid, // video id,外部传入\n video_pos: this.cur_play_pos,\n local_time: new Date().getTime(),\n // 耗时\n cost_time: err && err.costTime ? err.costTime : 0,\n errt: err.errorType, // 错误类型\n errc: err.code, // 具体的错误码\n es: this.es, // error_stage出错时的播放阶段,beforePlay/playing\n cdn_url: err.url || '', // 出错的url地址\n bufs: JSON.stringify(this.buffers.allBuffer),\n // cdn_ip: '', //出错cdn ip\n resolution: resLogs.final_resolution, // 出错时的清晰度\n last_errors: errorLog.last_errors.join(';'), // 本次播放的所有错误码,用';'分割\n vsc: apiLog.vsc, // video status code 视频状态异常,play接口返回的视频状态码(0或者10为正常状态)\n vsc_message: err.message || apiLog.vsc_message, // play接口返回的视频状态异常信息\n server_ip: headers.x_response_sinfo || 0,\n initial_host: /^blob/.test(err.url) ? 'blob:' : getHostFromUrl(err.url),\n ...headers, // cdn服务端返回的client_ip\n cur_play_pos: this.cur_play_pos, // 当前视频播放时间\n ...this.buffers.curBuffer,\n degrade: playlogs.degrade,\n end_state: err.endState || ENDED_TYPE.ERROR,\n preload_hit: err.preload_hit,\n preload_cached: err.preload_cached\n }\n if (player && player.dashState) {\n params.dash_state = player.dashState;\n }\n this.addIfExist('drm_type', this._options, params)\n this.reportLog(REPORT_EVENTS.ONE_ERROR, params, mode)\n }\n\n /**\n * @param {*} evtName\n * @param {*} params\n * @param {*} mode 默认-0:立即发送 1:本地记录 下次发送 2:队列合并发送\n */\n reportLog (evtName, params, mode) {\n const { ABTestTag } = this.player\n !params.player_sessionid && (params.player_sessionid = this.sessionId)\n !params.web_url && (params.web_url = window.location.href);\n params.user_agent = navigator.userAgent\n params.dynamic_type = this.dynamicType\n ABTestTag !== undefined && ABTestTag !== null && (params.abtest_tag = ABTestTag)\n const options = this._options\n if (isObject(options)) {\n // 合并公共参数\n COMMON_KEYS.forEach((pkey) => {\n this.addIfExist(pkey, options, params)\n })\n params.vtype = this.vtype\n }\n\n if (mode === 1) {\n const key = evtName\n const obj = {}\n obj[key] = params\n LocalLog.set(obj)\n return;\n } else if (mode === 2) {\n this.addEventsQueue(evtName, params)\n return\n }\n if (this.player) {\n this.player.emit('abLog', evtName, params)\n }\n this.tracker(evtName, params)\n }\n\n addEventsQueue (eventName, params) {\n this.eventQueue.push({ event: eventName, params })\n if (this.eventQueue.length >= this._options.maxQueueCount) {\n this.sendEventsQueue()\n }\n }\n\n sendEventsQueue () {\n while (this.eventQueue.length > 0) {\n const item = this.eventQueue.pop()\n this.tracker(item.event, item.params)\n // this.player.emit('abLog', item.event, item.params)\n }\n }\n\n startWaitingStatus (startTime, costTime) {\n this.onOneEvent({ costTime, end_type: 'waitstart' }, {}, 2)\n this.appendStallInfo('start', startTime)\n }\n\n triggerTask (type = 'start', url) {\n log('triggerTask>>', type)\n url = url || this.player.src\n const isSrcEmpty = checkVideoSrcIsEmpty(url)\n !isSrcEmpty && this.vtype.indexOf('MP4') > -1 && this.task && this.task.trigger(url, type)\n }\n\n appendStallInfo (type = 'start', time, endType) {\n const { stall } = this.exInfo\n if (type === 'start') {\n if (stall.length > 6) {\n stall.splice(0, stall.length - 6)\n }\n const buf = this.buffers.curBuffer\n stall.push({\n start: time,\n end: -1,\n endType: 'waitstart',\n cost: 0,\n cur: this.cur_play_pos,\n buf_s: buf.buf_s_pos, // 缓存开始点\n buf_e: buf.buf_e_pos, // 缓存结束点\n buf_i: buf.buf_include // 当前缓存是否包含当前播放时间\n })\n } else if (type === 'end') {\n const i = stall.length - 1\n if (i < 0) {\n return\n }\n if (stall[i].end < 0) {\n stall[i].end = time\n stall[i].endType = endType\n stall[i].cost = time - stall[i].start\n }\n }\n log('appendStallInfo', stall)\n }\n\n suspendWaitingStatus (endType) {\n const now = nowTime()\n const { playlogs, resLogs, stall, inWaitingStart } = this\n if (inWaitingStart <= 0 || this.isSeeking || playlogs.vt <= 0) {\n return\n }\n log(`suspendWaitingStatus>>${endType}|costTime:${now - inWaitingStart} isSeeking:${this.isSeeking} vt:${playlogs.vt}`)\n this.appendStallInfo('end', now, endType)\n // 如果恢复和卡顿的时间差小于阈值 不计入卡顿\n if (now - inWaitingStart > MIN_WAITIONG) {\n const costTime = now - this.inWaitingStart\n // 累计网络卡顿时长 排除seek和首帧加载\n playlogs.bc++\n if (this.checkInBuffer(this.player.currentTime)) {\n playlogs.de_bu_acu_t += costTime\n playlogs.dbc++\n } else {\n playlogs.nbc++\n playlogs.n_bu_acu_t += costTime\n }\n resLogs.bc++\n playlogs.bu_acu_t += costTime\n resLogs.bu_acu_t += costTime\n stall.stall_end = now\n stall.stall_last_interval = stall.stall_end - stall.stall_start\n stall.stall_acc_time += stall.stall_last_interval\n if (stall.sc === 1) {\n stall.first_buf_endt = now\n }\n // abr 卡顿时数据统计\n if (this.player.abrInstance && !this.isSeeking && this.playlogs.vt) {\n const abrInst = this.player.abrInstance\n this.abrInfo.abr_event_info.video_stall.push({\n local_time_ms: new Date().getTime(),\n stall_duration: parseFloat((costTime / 1000).toFixed(2)), // 卡顿时长,单位s\n buffer_length: abrInst.bufferLength,\n internet_speed: abrInst.downloadSpeed,\n now_bitrate: abrInst.nowBitrate,\n play_speed: this.player.playbackRate,\n is_abr: abrInst.isCurrentInAbr ? 1 : 0 // 是否在abr档位\n })\n }\n this.onOneEvent({ costTime, end_type: endType || 'wait' }, {}, 2)\n }\n\n // 恢复状态\n this._endType = ''\n this.load_state = LOAD_STATES.PLAYABLE\n this.inWaitingStart = 0\n window.clearTimeout(stall.intervalId)\n stall.intervalId = null\n }\n\n suspendSeekStatus (endType, needSendLog = true) {\n if (!this.isSeeking) {\n return\n }\n const { seekLog, resLogs, player } = this\n const costTime = nowTime() - seekLog.lastSeekStartTime\n log('suspendSeekStatus>>', `${endType} currentTime:${player.currentTime} costTime:${costTime} sat:${seekLog.sat} resLogs.sat:${resLogs.sat}`)\n seekLog.intervalId && window.clearTimeout(seekLog.intervalId)\n seekLog.intervalId = null\n this.isSeeking = false\n const operaType = this._endType = 'seek'\n const stateBefore = seekLog.seekBefore\n const stateAfter = (player.currentTime || 0).toString()\n seekLog.sc++\n seekLog.sat += costTime > MAX_COST ? 0 : costTime\n resLogs.sc++\n resLogs.sat += costTime > MAX_COST ? 0 : costTime\n this.updateSeekPt(true)\n if (!this.closeSeekLog && needSendLog) {\n this.onOneOperator({ costTime, operaType, stateBefore, stateAfter, endType })\n }\n }\n\n setPt () {\n const { playlogs } = this\n this.startStep = 1\n // log(`isSeeking:${this.isSeeking} currentTime: ${this.player.currentTime} playlogs.pt:${playlogs.pt}`)\n if (!playlogs.pt && this.player.currentTime) {\n this.isSeeking = true\n }\n if (!playlogs.pt) {\n playlogs.pt = curTimestamp()\n log('setPt', `init pt :${playlogs.pt}, document.visibilityState:${document.visibilityState}`)\n }\n }\n\n setVt () {\n const { playlogs } = this\n if (this.startStep === 1) {\n if (!playlogs.vt) {\n playlogs.vt = curTimestamp()\n log('setVt: first frame inited', `vt-pt:${(playlogs.vt - playlogs.pt)} vt-nt:${playlogs.vt - playlogs.nt}`)\n }\n this.startStep = 2\n }\n }\n\n setBr (endType) {\n const { playlogs } = this\n if (playlogs.vt > 0) {\n if (playlogs.br === 0) {\n playlogs.fbrt = endType || ''\n }\n playlogs.br++\n }\n }\n\n // params start,较新URL\n get url () {\n const { player } = this\n return player && player.config ? player.config.url : ''\n }\n\n // video id\n get vid () {\n const { player } = this\n return player && player.config ? player.config.vid : ''\n }\n\n get bc () {\n return this.playlogs.bc\n }\n\n // eslint-disable-next-line camelcase\n get bu_acu_t () {\n return this.playlogs.bu_acu_t\n }\n\n // 启动播放的时间戳\n get pt () {\n return this.playlogs.pt || curTimestamp()\n }\n\n get vt () {\n // 如果pt为0,vt默认为空\n const { vt, pt } = this.playlogs\n return pt > 0 ? vt : 0\n }\n\n get fvt () {\n const { vt, pt } = this.playlogs\n if (vt > 0 && pt > 0) {\n return parseInt(vt - pt, 10)\n }\n return 0\n }\n\n get dash_pst () {\n return this.playlogs.dash_pst\n }\n\n get dash_wst () {\n return this.playlogs.dash_wst\n }\n\n get dash_wrt () {\n return this.playlogs.dash_wrt\n }\n\n get dash_ift () {\n return this.playlogs.dash_ift\n }\n\n get dash_cst () {\n return this.playlogs.dash_cst\n }\n\n get dash_spt () {\n return this.playlogs.dash_spt\n }\n\n get vd () {\n const { player } = this\n if (player.duration && typeof player.duration === 'number' && player.duration > 0) {\n return parseInt(player.duration * 1000, 10)\n } else if (player.config.duration && typeof player.config.duration === 'number') {\n return parseInt(player.config.duration * 1000, 10)\n }\n return 0\n }\n\n // eslint-disable-next-line camelcase\n get cur_play_pos () {\n return parseInt(this.player.currentTime * 1000, 10)\n }\n\n get volume () {\n return this.player.volume\n }\n\n // eslint-disable-next-line camelcase\n get buffer_time () {\n let buf = 0\n try {\n const range = this.player.getBufferedRange()\n buf = range[1] - range[0]\n } catch (e) {\n buf = 0\n }\n return buf\n }\n\n // eslint-disable-next-line camelcase\n get player_created_t () {\n return this._playerCreatedTime\n }\n\n get playbackRate () {\n return this.player.playbackRate\n }\n\n get mute () {\n return this.player.muted ? 0 : 1\n }\n\n get videoWidth () {\n const { player } = this\n return player && player.video ? player.video.videoWidth : 0\n }\n\n get videoHeight () {\n const { player } = this\n return player && player.video ? player.video.videoHeight : 0\n }\n\n get preload () {\n const { player } = this\n return player && player.video ? player.video.preload : false\n }\n\n // eslint-disable-next-line camelcase\n get initial_url () {\n const currentSrc = this.player.currentSrc\n if (currentSrc.indexOf('blob:') > -1 && this.urlLog.initial_url) {\n return this.urlLog.initial_url\n } else {\n return checkVideoSrcIsEmpty(currentSrc) || checkIsEmptySrc(this.player, this.line_app_id) ? '' : currentSrc\n }\n }\n\n // eslint-disable-next-line camelcase\n get initial_host () {\n const currentSrc = this.player.currentSrc\n if (currentSrc.indexOf('blob:') > -1 && this.urlLog.initial_host) {\n return this.urlLog.initial_host\n } else {\n return getHostFromUrl(checkVideoSrcIsEmpty(currentSrc) || checkIsEmptySrc(this.player, this.line_app_id) ? '' : currentSrc)\n }\n }\n\n get curHeaders () {\n const { player, task } = this\n if (player && player.__dash__ && player.__dash__.curReqVideoSegInfo) {\n const headers = player.__dash__.curReqVideoSegInfo.headers || {}\n return transformHeader(headers)\n } else if (task) {\n return task.headers\n }\n return {}\n }\n\n get curStatus () {\n const { task, vtype, netLog } = this\n if (vtype.indexOf('MP4') > -1) {\n return task ? task.status : 0\n } else {\n return netLog.status\n }\n }\n\n // eslint-disable-next-line camelcase\n get play_type () {\n // 0 表示点播\n return 0\n }\n\n // 清晰度 分辨率\n get resolution () {\n return this.resLogs.df\n }\n\n get sessionId () {\n return this._sessionId\n }\n\n // 是否播放完\n get finish () {\n return this.isEnded ? 1 : 0\n }\n\n // 结束类型\n // eslint-disable-next-line camelcase\n get end_type () {\n return this._endType\n }\n\n // 音频/视频的当前就绪状态\n get videoReadyState () {\n const { player } = this\n return player && player.video ? player.video.readyState : -1\n }\n\n // 显示出用户是否正在视频中寻址\n get videoSeeking () {\n const { player } = this\n return player && player.video && player.video.seeking ? 1 : 0\n }\n\n // 检查视频是否已暂停\n get videoPaused () {\n const { player } = this\n return player && player.video && player.video.paused ? 1 : 0\n }\n\n // 目前播放器没有重试逻辑\n // eslint-disable-next-line camelcase\n get retry_count () {\n return this._retryCount\n }\n\n get switchResolutionCount () {\n return this.resLogs.switch_count\n }\n\n get isError () {\n return this.util.hasClass(this.player.root, 'xgpplayer-is-error')\n }\n\n get isPlaying () {\n return this.util.hasClass(this.player.root, 'xgplayer-playing')\n }\n\n get isStop () {\n return this.util.hasClass(this.player.root, 'xgplayer-ended') || this.util.hasClass(this.player.root, 'xgplayer-nostart')\n }\n\n get isPause () {\n return this.util.hasClass(this.player.root, 'xgplayer-pause')\n }\n\n get isLoading () {\n return this.util.hasClass(this.player.root, 'xgplayer-isloading')\n }\n\n // error_stage出错时的播放阶段,beforePlay/playing\n get es () {\n return this.isPlaying ? 'playing' : 'beforePlay'\n }\n\n get lt () {\n let tmp = 0\n // 未起播率 进入页面初始化的时间点\n if (this.vt === 0) {\n log('lt init', this.playlogs.lt)\n tmp = curTimestamp()\n }\n return tmp\n }\n\n get lpt () {\n return this.lt ? this.lt - this.pt : 0;\n }\n\n // eslint-disable-next-line camelcase\n get playback_state () {\n if (this.isError) {\n return PLAYBACK_STATE.ERROR\n }\n if (this.isStop) {\n return PLAYBACK_STATE.STOP\n }\n if (this.isPause) {\n return PLAYBACK_STATE.PAUSE\n }\n if (this.isLoading) {\n return PLAYBACK_STATE.LOADING\n }\n return PLAYBACK_STATE.PLAYING\n }\n\n // eslint-disable-next-line camelcase\n get is_start_play_automatically () {\n return this.isAutoplay\n }\n\n get vtype () {\n return this.__vtype ? this.__vtype : (this.player.dash || (this.player.config && this.player.config.dashOpts && this.player.config.dashOpts.dynamic_video) ? 'DASH' : (this._options.vtype === 'DASH' ? 'MP4' : (this._options.vtype || 'MP4')))\n }\n\n set vtype (value) {\n this.__vtype = value\n }\n\n get watingCost () {\n if (this.inWaitingStart > 0) {\n const costTime = nowTime() - this.inWaitingStart\n return costTime > MAX_COST ? 0 : costTime\n } else {\n return 0\n }\n }\n\n get videoNetworkState () {\n const { player } = this\n return player && player.video ? player.video.networkState : -1\n }\n\n get eagleid () {\n const { player } = this\n if (player && player.__dash__ && player.__dash__.curReqVideoSegInfo) {\n const headers = player.__dash__.curReqVideoSegInfo.headers || {}\n return headers.eagleid\n }\n return ''\n }\n\n get initial_type () {\n const config = this.player.config || {}\n if (config && config.vodLogOpts && config.vodLogOpts.currentDashType !== undefined) {\n return parseInt(config.vodLogOpts.currentDashType, 10)\n }\n return -1\n }\n\n /**\n * range请求 segment_base\n * 分片文件请求 segment_template\n */\n get dynamicType () {\n const { player } = this\n if (this.__dt) {\n return this.__dt\n } else if (player && player.__dash__ && player.__dash__.dash && player.__dash__.dash.mpd) {\n this.__dt = player.__dash__.dash.mpd.dashType\n return this.__dt\n } else {\n return ''\n }\n }\n\n /**\n * 当前最近的buffer区间以及当前播放时间是否在buffer中\n */\n updateCurBuffer () {\n const { buffered, currentTime } = this.player\n const buffer = {\n buf_s_pos: 0, // 缓存开始点\n buf_e_pos: 0, // 缓存结束点\n buf_include: 0 // 当前缓存是否包含当前播放时间\n }\n const buffers = []\n if (!buffered || buffered.length < 1) {\n return buffer\n }\n let diff = -1, index = -1\n for (let i = 0; i < buffered.length; i++) {\n const start = parseInt(buffered.start(i) * 1000, 10)\n const end = parseInt(buffered.end(i) * 1000, 10)\n buffers.push({ start, end })\n if (currentTime > start && currentTime < end) {\n buffer.buf_include = 1\n buffer.buf_s_pos = start\n buffer.buf_e_pos = end\n } else {\n if (currentTime < start && (diff < 0 || start - currentTime < diff)) {\n diff = start - currentTime\n index = i\n } else if (currentTime > end && (diff < 0 || currentTime - end < diff)) {\n diff = currentTime - end\n index = i\n }\n }\n }\n if (buffer.buf_include !== 1 && index > -1) {\n buffer.buf_s_pos = parseInt(buffered.start(index) * 1000, 10)\n buffer.buf_e_pos = parseInt(buffered.end(index) * 1000, 10)\n }\n this.buffers.allBuffer = buffers\n this.buffers.curBuffer = buffer\n }\n\n checkInBuffer (currentTime, diff = 0) {\n const { buffered } = this.player\n currentTime = parseInt(currentTime * 1000, 10)\n for (let i = 0; i < buffered.length; i++) {\n const start = parseInt(buffered.start(i) * 1000, 10) + diff,\n end = parseInt(buffered.end(i) * 1000, 10) + diff\n if (currentTime > start && currentTime < end) {\n return true\n }\n }\n return false\n }\n\n updateVideoSize () {\n const { _options, player, resLogs } = this\n let vs = 0\n let bitrate = 0\n if (player.__dash__ && player.__dash__.dash && player.__dash__.dash.mpd.mediaList) {\n const videoList = player.__dash__.dash.mpd.mediaList.video;\n const videoItem = videoList[videoList.selectedIdx];\n log('updateVideoSize》》videoItem', videoItem)\n bitrate = videoItem ? (videoItem.bitrate || videoItem.bandwidth) : 0\n vs = videoItem ? videoItem.size : 0\n } else {\n vs = _options.videoSize || player.config.videoSize || 0\n bitrate = _options.bitrate || player.config.bitrate || 0\n }\n log('updateVideoSize', `bitrate:${bitrate}, vs:${vs}`)\n if (vs) {\n resLogs.vs = vs\n resLogs.vis = parseInt(vs / player.duration, 10)\n resLogs.bitrate = bitrate || resLogs.vis\n }\n }\n\n updateVds () {\n const { resLogs, playlogs, player } = this\n if (resLogs.vis === 0) {\n log('updateVds', `vis:${resLogs.vis}`)\n return\n }\n const pdur = parseInt(computeWatchDur(playlogs.played) / 1000, 10)\n const buf = player.buffered\n let bdur = 0\n for (let i = 0; i < buf.length; i++) {\n bdur += parseInt(buf.end(i) - buf.start(i), 10)\n }\n log('updateVds', `pdur:${pdur} bdur:${bdur} \\n lbuf:${resLogs.lbuf} lplayed:${resLogs.lplayed} bitrate: ${resLogs.bitrate} vis:${resLogs.vis} vs:${resLogs.vs}`)\n resLogs.vps += parseInt((pdur - resLogs.lplayed) * resLogs.vis, 10)\n resLogs.vds += parseInt((bdur - resLogs.lbuf) * resLogs.vis, 10)\n resLogs.lplayed = pdur\n resLogs.lbuf = bdur\n }\n}\nexport default XGPlayerAppLogger\n","const ENTRIES = []\nconst MAX_COUNT = 30\n\nexport function findPerformanceInfo (url, type = 'resource') {\n const ret = {}\n try {\n url = url.replace(/^http:|^https:/, '')\n const p = ENTRIES || []\n // const start = window.performance.timing.navigationStart || 0\n for (let i = p.length - 1; i >= 0; i--) {\n const name = p[i].name.replace(/^http:|^https:/, '')\n if (name === url) {\n ['domainLookupEnd', 'domainLookupStart', 'startTime', 'requestStart', 'responseEnd', 'responseStart', 'connectStart', 'connectEnd', 'fetchStart']\n .map(item => {\n ret[item] = Math.round(p[i][item])\n })\n ret.url = p[i].name\n ret.duration = Math.round(p[i].duration)\n ret.domainDuration = ret.domainLookupEnd - ret.domainLookupStart\n ret.connectDuration = ret.connectEnd - ret.connectStart\n break\n }\n }\n return ret\n } catch (e) {\n return ret\n }\n}\n\nfunction addPerformaceObserver () {\n try {\n const perfObserver = new window.PerformanceObserver((list, obj) => {\n const entries = list.getEntriesByType('resource')\n if (ENTRIES.length > MAX_COUNT) {\n ENTRIES.splice(0, ENTRIES.length - MAX_COUNT)\n }\n for (let i = 0; i < entries.length; i++) {\n ENTRIES.push(entries[i])\n }\n })\n perfObserver.observe({\n entryTypes: ['resource']\n })\n } catch (e) {\n console.warn('PerformanceObserver not support', e)\n }\n}\n\ntypeof window !== 'undefined' && addPerformaceObserver()\n","function e(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var t=function(){return(t=Object.assign||function(e){for(var t,i=1,r=arguments.length;i0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){n={error:e}}finally{try{r&&!r.done&&(i=o.return)&&i.call(o)}finally{if(n)throw n.error}}return s}function r(){for(var e=[],t=0;t>e/4).toString(10):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,b)}var k=function(){return b().replace(/-/g,\"\").slice(0,19)};var I=function(e){return function(e,t,i){if(\"string\"==typeof e&&\"number\"==typeof t&&\"number\"==typeof i){var r,n=[];i=i<=25?i:i%25;var o=String.fromCharCode(i+97);r=e.split(o);for(var s=0;s-1&&(t=e.slice(0,e.indexOf(\"Build/\")))});else if(\"ios\"===e||\"mac\"===e||\"windows\"===e){var i=navigator.userAgent.replace(\"Mozilla/5.0 (\",\"\"),r=i.indexOf(\";\");t=i.slice(0,r)}}catch(e){}return t.trim()}(_),language:u,referrer:p,referrer_host:f,creative_id:C.creative_id,ad_id:C.ad_id,campaign_id:C.campaign_id,utm_source:C.utm_source,utm_medium:C.utm_medium,utm_campaign:C.utm_campaign,utm_term:C.utm_term,utm_content:C.utm_content,tracer_data:C.tracer_data}},C=function(){function e(e,t,i,r){this.config=e,this.cfg=t,this.storage=new h(!1),this.appInfo=e.app_key||e.app_id,this.isNoWebid=e.disable_webid,this.enable_ttwebid=e.enable_ttwebid||!1,this.domain=e.channel_domain||I(u[e.channel]),this.tokenReady=!1,this.checkExp=e.checkExp||!1,this.enableCookie=e.cross_subdomain||!1,this.expiresTime=e.cookie_expire||v,this.fetchUrl=\"\"+this.domain+p,this.hook=i,this.session=r,this.cookieDomain=e.cookie_domain||\"\"}return e.prototype._getToken=function(){try{this.tokensKey=g(this.appInfo,!0),this.cookieKey=\"__tea_cookie_tokens_\"+this.appInfo;var e=this.storage.getItem(this.tokensKey);if(this.enable_ttwebid)if(e){var t={user_unique_id:e.user_unique_id||\"\",timestamp:Date.now()};this.storage.setItem(this.tokensKey,t),this._setTtWid(e,!1)}else this._setTtWid(e,!0);else if(this.enableCookie){var i=this.storage.getCookie(this.cookieKey,this.cookieDomain);if(i){var r=(i=JSON.parse(decodeURIComponent(i))).user_unique_id,n=i.web_id,o=i.timestamp;this._setToken(n,r,o)}else{if(!e)return void this._requestWebId();this.storage.setCookie(this.cookieKey,encodeURIComponent(JSON.stringify(e)),this.expiresTime,this.cookieDomain),this._checkLocal(e)}}else{if(!e)return void this._requestWebId();this._checkLocal(e)}}catch(e){console.log(\"\"+e.message)}},e.prototype._checkEnv=function(){if(-1!==window.navigator.userAgent.indexOf(\"miniProgram\")){var e=x(window.location.href);return!(!e||!e.Web_ID)&&(this._setTokenId(\"\"+e.Web_ID),!0)}return!1},e.prototype._checkLocal=function(e){var t=e.user_unique_id,i=e.web_id,r=e.timestamp;i&&t?this._setToken(i,t,r):this._requestWebId()},e.prototype._setToken=function(e,t,i){if(this.checkExp){var r=Date.now()-parseFloat(i);if(r>7344e6)return void this._requestWebId();if(r>432e7)return void this._updateWebId(e)}this.cfg.envInfo.user.user_unique_id=t,this.cfg.envInfo.user.web_id=e,this.storage.setItem(this.tokensKey,{user_unique_id:t,web_id:e,timestamp:Date.now()}),this.tokenReady=!0},e.prototype._requestWebId=function(){this.isNoWebid?this._setTokenId(k()):this._fetchWebId(this.fetchUrl,!1)},e.prototype._updateWebId=function(e){var t=\"\"+this.domain+p+\"/\"+e+\"/update\";this._fetchWebId(t,!0)},e.prototype._fetchWebId=function(e,t){var i=this;w(e,3e3,{app_key:this.config.app_key,app_id:this.config.app_id,url:location.href,user_agent:window.navigator.userAgent,referer:document.referrer,user_unique_id:\"\"},this.config.app_key,function(e){e&&0===e.e?i._setTokenId(e.web_id):(i.hook.emit(\"token-error\"),console.warn(\"[]appid: \"+i.config.app_id+\", \"+(t?\" update\":\"get\")+\" webid error, init error~\"))},function(){i.hook.emit(\"token-error\"),console.warn(\"[]appid: \"+i.config.app_id+\", get webid error, init error~\")},!0,!1,this.enable_ttwebid)},e.prototype._setTtWid=function(e,t){if(!t){var i={web_id:e.web_id||\"\",timestamp:Date.now()},r=e.user_unique_id||\"\";this.cfg.envInfo.user.user_unique_id=this.cfg.envInfo.user.user_unique_id||r,this.storage.setCookie(this.cookieKey,encodeURIComponent(JSON.stringify(i)),108e5,this.cookieDomain)}this.tokenReady=!0,this.hook.emit(\"token-ready\")},e.prototype._setTokenId=function(e){var t=this.cfg.envInfo.user.web_id||e,i={web_id:t,user_unique_id:this.cfg.envInfo.user.user_unique_id||t,timestamp:Date.now()};this.enableCookie&&this.storage.setCookie(this.cookieKey,encodeURIComponent(JSON.stringify(i)),this.expiresTime,this.cookieDomain),this.storage.setItem(this.tokensKey,i),this.cfg.envInfo.user.web_id=this.cfg.envInfo.user.web_id||t,this.cfg.envInfo.user.user_unique_id=this.cfg.envInfo.user.user_unique_id||t,this.tokenReady=!0,this.hook.emit(\"token-ready\")},e.prototype._setUuid=function(e){try{var t=this.storage.getItem(this.tokensKey);if(e){\"string\"!=typeof e&&console.warn(\"user_unique_id must be string!!! please check\");var i=String(e);this.cfg.envInfo.user.user_unique_id=i,t&&t.user_unique_id?t.user_unique_id!==i&&(t.user_unique_id=i,this.hook.emit(\"uuid-change\")):((t={}).user_unique_id=i,this.hook.emit(\"uuid-change\")),t.timestamp=Date.now(),this.storage.setItem(this.tokensKey,t),this.session._resetSessionId()}else this._clearUuid(t)}catch(e){}},e.prototype._clearUuid=function(e){this.enable_ttwebid||e&&e.web_id&&(this.cfg.envInfo.user.user_unique_id=e.web_id,e.user_unique_id=e.web_id,e.timestamp=Date.now(),this.storage.setItem(this.tokensKey,e))},e.prototype._setWebid=function(e){if(!this.enable_ttwebid){var t=this.storage.getItem(this.tokensKey),i=!1;t&&t.web_id?t.web_id!==e&&(t.user_unique_id=t.web_id===t.user_unique_id?e:t.user_unique_id,t.web_id=e,this.cfg.envInfo.user.user_unique_id&&this.cfg.envInfo.user.user_unique_id!==this.cfg.envInfo.user.web_id||(this.cfg.envInfo.user.user_unique_id=e,i=!0)):(t={}).web_id=e,t.timestamp=Date.now(),this.cfg.envInfo.user.web_id=e,this.storage.setItem(this.tokensKey,t),i&&this.hook.emit(\"uuid-change\")}},e.prototype.isTokenReady=function(){return this.tokenReady},e.prototype._getTobId=function(e){var t=this.domain+\"/tobid\";w(t,3e4,{app_id:this.config.app_id,user_unique_id:this.cfg.envInfo.user.user_unique_id,web_id:this.cfg.envInfo.user.web_id},this.config.app_key,function(t){t&&0===t.e?e(t.tobid):e(null)},function(){e(null)},!0,!1,this.enable_ttwebid)},e}(),z=function(e){!!navigator.userAgent.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/)?window.addEventListener(\"pagehide\",e,!1):window.addEventListener(\"beforeunload\",e,!1)},E=function(){function e(e,t,i,r,n,o,s){this.collect=e,this.cfg=i,this.config=t,this._token=r,this.appInfo=t.app_id||t.app_key,this.debugMode=!!t.log,this.evtDataKey=g(this.appInfo,!1);var a=t.channel_domain||I(u[t.channel]);this.reportUrl=t.report_url?t.report_url:\"\"+a+f,this.storage=new h(!0),this.EventStorage=new h(!1),this.maxStorage=t.max_storage_num||-1,this.maxReport=t.max_report||10,this.reportTime=t.reportTime||30,this.timeout=t.timeout||1e5,this.closeStorage=!0,this.plugin=n,this.session=o,this.match=s,this.filter=t.filter,this.addListener()}return e.prototype.addListener=function(){var e=this;window.addEventListener(\"unload\",function(){e.report(!0)},!1),z(function(){e.report(!0)}),document.addEventListener(\"visibilitychange\",function(){\"hidden\"===document.visibilityState&&e.report(!0)},!1)},e.prototype.setReady=function(){this.isReady=!0,this.report()},e.prototype.event=function(e){var t=this;void 0===e&&(e=[]);try{var i=r(e,this.storage.getItem(this.evtDataKey)||[]);this.storage.setItem(this.evtDataKey,i),this.reportTimer&&clearTimeout(this.reportTimer),i.length>=this.maxReport?this.report(!1):this.reportTimer=setTimeout(function(){t.report(!1),t.reportTimer=null},this.reportTime)}catch(e){}},e.prototype.beconEvent=function(e){void 0===e&&(e=[]);var t=this._mergeEvents(e);this._dealData(t,!0)},e.prototype.report=function(e){if(void 0===e&&(e=!1),!this.collect.destroyInstance&&this._token.isTokenReady()&&this.isReady){var t=this.storage.getItem(this.evtDataKey)||[],i=this._mergeEvents(t);this.storage.removeItem(this.evtDataKey),this._dealData(i,e)}},e.prototype._mergeEvents=function(e){var i=this;if(!e.length)return e;var r=this.cfg.get();r.header.custom=JSON.stringify(r.header.custom);var n=[];return n.push(e),n.map(function(e){return{events:e.map(function(e){try{if(e.event&&\"applog_trace\"!==e.event){var r=t({},i.cfg.get(\"evtParams\"),e.params);return delete r.__disable_storage__,t({},e,{params:JSON.stringify(r),session_id:i.session._getSessionId()})}return t({},e,{params:JSON.stringify(e.params)})}catch(i){return t({},e,{params:JSON.stringify(e.params)})}}),user:r.user,header:r.header,verbose:i.debugMode?1:void 0,local_time:parseInt(\"\"+(new Date).getTime()/1e3)}})},e.prototype._dealData=function(e,t){var i=this;if(!e.length)return e;e.map(function(e){var t=[];return t.push(e),t}).forEach(function(e){var r=k(),n=e;try{i.filter&&(n=i.filter(e))}catch(e){}i._send(r,n,t)})},e.prototype._send=function(e,t,i){var r=this;this.isSending=!0;var n=function(){r.isSending=!1};w(this.reportUrl,this.timeout,t,this.config.app_key,function(e,t){n(),e&&0!==e.e&&r.collect&&r.collect.tracer&&1!==r.cfg.staging&&r.collect.tracer.addErrorCount(t,\"f_data\",e.e,e)},function(e,t){n(),r.cfg.get(\"reportErrorCallback\")(e,t),r.collect&&r.collect.tracer&&1!==r.cfg.staging&&r.collect.tracer.addErrorCount(e,\"f_net\",t)},!1,i,this.config.enable_ttwebid,n)},e.prototype.checkStorageEvent=function(){},e}(),T=void 0,A=(new Date).getTimezoneOffset(),N=parseInt(\"\"+-A/60,10),P=60*A,q=function(){function e(e,t,i){this.initConfig=t;var r=O(e,t.cookie_domain||\"\",t.cookie_expire||v);this.configKey=l(\"\"+e),this.sessionStorage=new h(!1,\"session\"),this.localStorage=new h(!1,\"local\"),i&&(this.storage=1===i?this.sessionStorage:this.localStorage),this.envInfo={user:{user_unique_id:T,user_type:T,user_id:T,user_is_auth:T,user_is_login:T,device_id:T,web_id:T,ip_addr_id:T,ssid:T},header:{app_id:T,app_name:T,app_install_id:T,install_id:T,app_package:T,app_channel:T,app_version:T,os_name:r.os_name,os_version:r.os_version,device_model:r.device_model,ab_client:T,ab_version:T,ab_sdk_version:T,traffic_type:T,client_ip:T,device_brand:T,os_api:T,access:T,language:r.language,region:T,app_language:T,app_region:T,creative_id:r.creative_id,ad_id:r.ad_id,campaign_id:r.campaign_id,log_type:T,rnd:T,platform:r.platform,sdk_version:d,sdk_lib:\"js\",province:T,city:T,timezone:N,tz_offset:P,tz_name:T,sim_region:T,carrier:T,resolution:r.screen_width+\"x\"+r.screen_height,browser:r.browser,browser_version:r.browser_version,referrer:r.referrer,referrer_host:r.referrer_host,width:r.screen_width,height:r.screen_height,screen_width:r.screen_width,screen_height:r.screen_height,utm_term:r.utm_term,utm_content:r.utm_content,utm_source:r.utm_source,utm_medium:r.utm_medium,utm_campaign:r.utm_campaign,tracer_data:JSON.stringify(r.tracer_data),custom:{}}},this.evtParams={},this.reportErrorCallback=function(){}}return e.prototype.set=function(e,i){var r=this;if(null==i&&(this.delete(e),i=void 0),\"evtParams\"===e||\"_staging_flag\"===e){var n;n=\"evtParams\"===e?i:{_staging_flag:Number(i)};var o=t({},n);Object.keys(o).forEach(function(e){r.evtParams[e]=o[e]})}else if(\"reportErrorCallback\"===e&&\"function\"==typeof i)this.reportErrorCallback=i;else{var s=\"\";if(e.indexOf(\".\")>-1){var a=e.split(\".\");s=a[0],e=a[1]}if(\"user_unique_id\"===e){if(!i)return;if(-1!==[\"0\",\"Null\",\"None\",\"\",\"undefined\"].indexOf(i))return}if(\"os_version\"===e&&(e=\"\"+i),\"web_id\"===e){if(!i)return;(!this.envInfo.user.user_unique_id||this.envInfo.user.user_unique_id&&this.envInfo.user.user_unique_id===this.envInfo.user.web_id)&&(this.envInfo.user.user_unique_id=i)}s?\"user\"===s||\"header\"===s?this.envInfo[s][e]=i:this.envInfo.header.custom[e]=i:this.envInfo.user.hasOwnProperty(e)?[\"user_type\",\"ip_addr_id\"].indexOf(e)>-1?this.envInfo.user[e]=i?Number(i):i:[\"user_id\",\"web_id\",\"user_unique_id\",\"ssid\"].indexOf(e)>-1?this.envInfo.user[e]=i?String(i):i:[\"user_is_auth\",\"user_is_login\"].indexOf(e)>-1?this.envInfo.user[e]=Boolean(i):\"device_id\"===e&&(this.envInfo.user[e]=i):this.envInfo.header.hasOwnProperty(e)?this.envInfo.header[e]=i:this.envInfo.header.custom[e]=i}},e.prototype.get=function(e){try{return e?\"evtParams\"===e?this.evtParams:\"reportErrorCallback\"===e?this[e]:JSON.parse(JSON.stringify(this.envInfo[e])):JSON.parse(JSON.stringify(this.envInfo))}catch(e){console.log(\"get config stringify error \")}},e.prototype.setStore=function(e){try{var t=this.storage.getItem(this.configKey);if(Object.keys(e).length){var i=Object.assign(e,t);this.storage.setItem(this.configKey,i)}}catch(e){}},e.prototype.getStore=function(){try{var e=this.storage.getItem(this.configKey);return Object.keys(e).length?e:null}catch(e){return null}},e.prototype.delete=function(e){try{var t=this.storage.getItem(this.configKey);t&&t.hasOwnProperty(e)&&(delete t[e],this.storage.setItem(this.configKey,t))}catch(e){}},e}(),B=function(){function e(e,t){this.isLog=t||!1,this.name=e||\"\"}var t=e.prototype;return t.info=function(e){this.isLog&&console.log(\"[\"+this.name+\"] \"+e)},t.warn=function(e){this.isLog&&console.warn(\"[\"+this.name+\"] \"+e)},t.error=function(e){this.isLog&&console.error(\"[\"+this.name+\"] \"+e)},t.throw=function(e){throw this.error(this.name),new Error(e)},e}(),D=function(){function e(){this._hooks={}}return e.prototype.on=function(e,t){e&&t&&\"function\"==typeof t&&(this._hooks[e]||(this._hooks[e]=[]),this._hooks[e].push(t))},e.prototype.once=function(e,t){var i=this;if(e&&t&&\"function\"==typeof t){this.on(e,function r(n){t(n),i.off(e,r)})}},e.prototype.off=function(e,t){if(e&&this._hooks[e]&&this._hooks[e].length)if(t){var i=this._hooks[e].indexOf(t);-1!==i&&this._hooks[e].splice(i,1)}else this._hooks[e]=[]},e.prototype.emit=function(e,t){e&&this._hooks[e]&&this._hooks[e].length&&r(this._hooks[e]).forEach(function(e){try{e(t)}catch(e){}})},e}(),L=function(){return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return(\"x\"===e?t:3&t|8).toString(16)})},U=function(){function e(e,t){this.storage=new h(!1,\"session\"),this.sessionKey=m(e),this.expireTime=t.expireTime||18e5,this.disableSession=t.disable_session,this.disableSession||this._setSessionId()}return e.prototype._updateSessionId=function(){var e=this.storage.getItem(this.sessionKey);if(e&&e.sessionId){var t=e.timestamp;Date.now()-t>this.expireTime?e={sessionId:L(),timestamp:Date.now()}:e.timestamp=Date.now(),this.storage.setItem(this.sessionKey,e),this._resetExpTime()}},e.prototype._setSessionId=function(){var e=this,t=this.storage.getItem(this.sessionKey);t&&t.sessionId?t.timestamp=Date.now():t={sessionId:L(),timestamp:Date.now()},this.storage.setItem(this.sessionKey,t),this.sessionExp=setInterval(function(){e._checkEXp()},this.expireTime)},e.prototype._getSessionId=function(){var e=this.storage.getItem(this.sessionKey);return this.disableSession?\"\":e&&e.sessionId?e.sessionId:\"\"},e.prototype._resetExpTime=function(){var e=this;this.sessionExp&&(clearInterval(this.sessionExp),this.sessionExp=setInterval(function(){e._checkEXp()},this.expireTime))},e.prototype._resetSessionId=function(){var e={sessionId:L(),timestamp:Date.now()};this.storage.setItem(this.sessionKey,e)},e.prototype._checkEXp=function(){var e=this.storage.getItem(this.sessionKey);e&&e.sessionId&&(Date.now()-e.timestamp+30>=this.expireTime&&(e={sessionId:L(),timestamp:Date.now()},this.storage.setItem(this.sessionKey,e)))},e}(),M={pv:[\"predefine_pageview\"],sdk:[\"_be_active\",\"predefine_page_alive\",\"predefine_page_close\",\"__profile_set\",\"__profile_set_once\",\"__profile_increment\",\"__profile_unset\",\"__profile_append\"],autotrack:[\"bav2b_click\",\"bav2b_page\",\"bav2b_beat\",\"bav2b_page_statistics\",\"__bav_click\",\"__bav_page\",\"__bav_beat\",\"__bav_page_statistics\"]},R=function(){function e(e,t,i,r){this.count={pv:0,sdk:0,autotrack:0,log:0},this.limit={pv:1,sdk:10,autotrack:10,log:3},this.errorCode={f_net:0,f_data:0},this.errorInfo={pv:{f_net:0,f_data:0},sdk:{f_net:0,f_data:0},autotrack:{f_net:0,f_data:0},log:{f_net:0,f_data:0}},this.collect=e,this.disable_tracer=t.disable_tracer||t.channel_domain,this.ready=!(!t.app_id||this.disable_tracer),this.appid=t.app_id,this.process=i,this.event=r;var n=t.channel_domain||I(u[t.channel]);this.reportUrl=t.report_url?t.report_url:\"\"+n+f,this.listener()}return e.prototype.addCount=function(e){try{if(!this.ready)return;if(this.count[e]++,this.count[e]>=this.limit[e]){var t=[];for(var i in t=r(t,this.processTracer(this.count[e],e,\"net\")),this.errorInfo[e])this.errorInfo[i]&&(t=r(t,this.processTracer(this.errorInfo[e][i],e,i)));t.length&&this.sendTracer(t,!0,e,!1)}}catch(e){}},e.prototype.addErrorCount=function(e,t,i,r){var n=this;try{if(!this.ready)return;if(e&&e.length){var o=e[0].events;o&&o.length&&(\"f_data\"===t?(r&&r.hasOwnProperty(\"sc\")?this.errorInfo.log.f_data=o.length-r.sc:this.errorInfo.log.f_data=o.length,this.errorCode.f_data=i):o.forEach(function(e){var t=\"log\";for(var r in M)if(-1!==M[r].indexOf(e.event)){t=r;break}n.errorInfo[t].f_net++,n.errorCode.f_net=i}))}}catch(e){}},e.prototype.clearCount=function(e){try{e?(this.count[e]=0,this.errorInfo[e]={f_net:0,f_data:0}):(this.count={pv:0,sdk:0,autotrack:0,log:0},this.errorInfo={pv:{f_net:0,f_data:0},sdk:{f_net:0,f_data:0},autotrack:{f_net:0,f_data:0},log:{f_net:0,f_data:0}})}catch(e){}},e.prototype.sendTracer=function(e,t,i,r){try{if(!this.ready)return;if(this.collect.staging)return;var n=this.event._mergeEvents(e);r&&window.navigator.sendBeacon?window.navigator.sendBeacon(this.reportUrl,JSON.stringify(n)):w(this.reportUrl,3e5,n,\"\"),t?this.clearCount(i):this.clearCount()}catch(e){}},e.prototype.processTracer=function(e,t,i){try{var r={count:e,state:i,key:t,params_for_special:\"applog_trace\",aid:this.appid,platform:\"web\",_staging_flag:1,sdk_version:d};\"f_net\"!==i&&\"f_data\"!==i||(r.errorCode=this.errorCode[i]);var n=[];if(n.push(this.process(\"applog_trace\",r,!0)),n&&n.length)return delete n[0].is_bav,n}catch(e){}},e.prototype.listener=function(){var e=this;this.ready&&(document.addEventListener(\"visibilitychange\",function(){e.leavePage()}),z(function(){e.leavePage()}))},e.prototype.leavePage=function(){if(this.ready)try{var e=[];for(var t in this.count)if(this.count[t]){var i=this.errorInfo[t];for(var n in e=r(e,this.processTracer(this.count[t],t,\"net\")),i)i[n]&&(e=r(e,this.processTracer(i[n],t,n)))}e&&e.length&&this.sendTracer(e,!1,\"\",!0)}catch(e){}},e}(),K=function(){function e(e){this.logger=e}var t=e.prototype;return t.bridgeInject=function(){try{return AppLogBridge?(this.logger.info(\"AppLogBridge is injected\"),!0):(this.logger.info(\"AppLogBridge is not inject\"),!1)}catch(e){return this.logger.info(\"AppLogBridge is not inject\"),!1}},t.hasStarted=function(e){var t=this;try{this.bridgeInject()?AppLogBridge.hasStarted(function(i){t.logger.info(\"AppLogBridge is started? : \"+i),e(i)}):e(0)}catch(t){this.logger.info(\"AppLogBridge, error:\"+JSON.stringify(t.stack)),e(0)}},t.setUserUniqueId=function(e){try{AppLogBridge.setUserUniqueId(e)}catch(e){this.logger.error(\"setUserUniqueId error\")}},t.addHeaderInfo=function(e,t){try{AppLogBridge.addHeaderInfo(e,t)}catch(e){this.logger.error(\"addHeaderInfo error\")}},t.setHeaderInfo=function(e){try{AppLogBridge.setHeaderInfo(JSON.stringify(e))}catch(e){this.logger.error(\"setHeaderInfo error\")}},t.removeHeaderInfo=function(e){try{AppLogBridge.removeHeaderInfo(e)}catch(e){this.logger.error(\"removeHeaderInfo error\")}},t.onEventV3=function(e,t){try{AppLogBridge.onEventV3(e,t)}catch(e){this.logger.error(\"onEventV3 error\")}},t.profileSet=function(e){try{AppLogBridge.profileSet(e)}catch(e){this.logger.error(\"profileSet error\")}},t.profileSetOnce=function(e){try{AppLogBridge.profileSetOnce(e)}catch(e){this.logger.error(\"profileSetOnce error\")}},t.profileIncrement=function(e){try{AppLogBridge.profileIncrement(e)}catch(e){this.logger.error(\"profileIncrement error\")}},t.profileUnset=function(e){try{AppLogBridge.profileUnset(e)}catch(e){this.logger.error(\"profileUnset error\")}},t.profileAppend=function(e){try{AppLogBridge.profileAppend(e)}catch(e){this.logger.error(\"profileAppend error\")}},e}();function W(e,t,i){void 0===t&&(t=\"\"),void 0===i&&(i={});var r=e;\"/\"===(r=r.split(\"#\")[0].split(\"?\")[0])[e.length-1]&&(r=r.substr(0,e.length-1)),r=\"/\"===t[0]?r.replace(/(https?:\\/\\/[\\w-]+(\\.[\\w-]+){1,}(:[0-9]{1,5})?)(\\/[.\\w-]+)*\\/?$/,\"$1\"+t):r.replace(/(https?:\\/\\/[\\w-]+(\\.[\\w-]+){1,}(:[0-9]{1,5})?(\\/[.\\w-]+)*?)(\\/[.\\w-]+)?\\/?$/,\"$1/\"+t);var n=Object.keys(i).map(function(e){return e+\"=\"+i[e]}).join(\"&\");return n.length>0?r+\"?\"+n:r}var V,J=function(){function e(e){this.autotrack=!1,this.spa=!1,(e.spa||e.autotrack)&&(this.autotrack=!!e.autotrack,this.spa=e.spa,this.fncArray=new Map,this.setLocation(),this.hack(),this.storage=new h(!0),this.storage.setItem(\"__tea_cache_refer_key\",location.href),this.listener())}return e.prototype.hack=function(){var e=this,t=window.history.pushState;history.pushState=function(i){for(var n=[],o=1;o-1?(n=i.colloctor)[s].apply(n,t.slice(1)):(o=i.colloctor).event.apply(o,t)}),this.cmdQueue=[],this.name=t,this.colloctor=new Q(t),this._isProcess=!1,this._alias={},this._processCmd(),j.forEach(function(e){i._exportCollect[e]=i._exportCollect.bind(i,e)}),this._exportCollect}\n","const isSupport = _isLocalStorageUsable()\n\nfunction probeSupport () {\n try {\n return (\n typeof localStorage !== 'undefined' &&\n 'setItem' in window.localStorage &&\n !!window.localStorage.setItem\n )\n } catch (e) {\n return false\n }\n}\n\nfunction checkIfLocalStorageThrows () {\n const localStorageTestKey = '_localstorage_support_test'\n\n try {\n window.localStorage.setItem(localStorageTestKey, true)\n window.localStorage.removeItem(localStorageTestKey)\n return false\n } catch (e) {\n return true\n }\n}\n\nfunction _isLocalStorageUsable () {\n return probeSupport() && !checkIfLocalStorageThrows()\n}\n\nconst Strorage = isSupport ? window.localStorage : {}\nconst debug = false\nconst LOGKEY = '__xgplayerlogkey'\n\nconst LOCAL_LOG = {\n set (value) {\n try {\n const localist = this.get()\n localist.push(value)\n Strorage.setItem(LOGKEY, JSON.stringify(localist))\n } catch (error) {\n debug && console.error('Strorage.set error', error)\n }\n },\n get () {\n try {\n let data = Strorage.getItem(LOGKEY)\n if (data) {\n data = JSON.parse(data)\n } else {\n data = []\n }\n return data\n } catch (error) {\n debug && console.error('Strorage.get error', error)\n return []\n }\n },\n remove () {\n try {\n Strorage.removeItem(LOGKEY)\n } catch (error) {\n debug && console.error('Strorage.removeItem error', error)\n }\n },\n clear () {\n try {\n Strorage.clear()\n } catch (error) {\n debug && console.error('Strorage.clear error', error)\n }\n }\n}\n\nexport default LOCAL_LOG\n","const RegMap = [\n {\n key: 'QQBrowser',\n reg: /(qqbrowser)\\/([\\d.]+)/\n },\n {\n key: 'QIHU360EE',\n reg: /qihu 360ee/\n },\n {\n key: 'QIHU360SE',\n reg: /qihu 360se/\n },\n {\n key: '2345Explorer',\n reg: /(2345explorer)\\/([\\d.]+)/\n },\n {\n key: 'Sogou',\n reg: /(metasr)/\n },\n {\n key: 'Wexin',\n reg: /(micromessenger)\\/([\\d.]+)/\n },\n {\n key: 'Openlanguage', // 开言\n reg: /(openlanguage)\\/([\\d.]+)/\n },\n {\n key: 'NewsArticle', // 头条\n reg: /(newsarticle)\\/([\\d.]+)/\n },\n {\n key: 'VideoArticle', // 西瓜\n reg: /(videoarticle)\\/([\\d.]+)/\n },\n {\n key: 'Hotsoon', // 火山\n reg: /(live_stream)_([\\d.]+)/\n },\n {\n key: 'Aweme', // 抖音\n reg: /(aweme)_([\\d.]+)/\n },\n {\n key: 'Lark', // 飞书\n reg: /(lark)\\/([\\d.]+)/\n },\n {\n key: 'PlayStation',\n reg: /(playstation)/\n },\n {\n key: 'BingPreview',\n reg: /(bingpreview)\\/([\\d.]+)/\n },\n {\n key: 'Baiduspider',\n reg: /(baiduspider-render)\\/([\\d.]+)/\n },\n {\n key: 'YandexBot',\n reg: /(yandexbot)\\/([\\d.]+)/\n },\n {\n key: 'Chrome',\n reg: /(chrome)\\/([\\d.]+)/\n },\n {\n key: 'Safari',\n reg: /(version)\\/([\\d.]+)\\s*(safari)/\n }\n]\nconst IERegMap = [{\n key: 'Trident',\n reg: /(rv:)([\\d.]+)/\n},\n{\n key: 'Trident',\n reg: /(msie)\\s*([\\d.]+)/\n}]\n\nfunction isSupportMP4 () {\n const H264_MIMETYPES = [\n 'avc1.42E01E, mp4a.40.2',\n 'avc1.58A01E, mp4a.40.2',\n 'avc1.4D401E, mp4a.40.2',\n 'avc1.64001E, mp4a.40.2',\n 'avc1.42E01E',\n 'mp4v.20.8',\n 'avc1.42E01E, mp4a.40.2',\n 'avc1.58A01E, mp4a.40.2',\n 'avc1.4D401E, mp4a.40.2',\n 'avc1.64001E, mp4a.40.2',\n 'mp4v.20.8, mp4a.40.2',\n 'mp4v.20.240, mp4a.40.2'\n ]\n let a = document.createElement('video')\n const result = {\n isSupport: false,\n mime: ''\n }\n if (typeof a.canPlayType === 'function') {\n H264_MIMETYPES.map(key => {\n if (a.canPlayType(`video/mp4; codecs=\"${key}\"`) === 'probably') {\n result.isSupport = true\n result.mime += `||${key}`\n }\n })\n return result\n }\n a = null\n return result\n}\n\nconst SPIDER_UA = ['Baiduspider', 'YandexBot']\nfunction checkIsSpider (name, ua) {\n let flag = false\n SPIDER_UA.map(key => {\n if (key === name) {\n flag = true\n }\n })\n /**\n * Google Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\n * 俄罗斯 LinkpadBot Mozilla/5.0 (compatible; LinkpadBot/1.06; +http://www.linkpad.ru)\n * Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)\n * 腾讯搜搜 Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)\n * 360spider (http://webscan.360.cn)\n * 百度Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)\n * 爬虫UA汇总 https://yq.aliyun.com/articles/655062\n */\n // 通用爬虫UA校验\n if (/(\\+http|; http|\\(http):\\/\\/([\\w.]+\\/?)\\S*/.test(ua)) {\n flag = true\n }\n return flag\n}\n\nfunction detect (ua = '') {\n ua = ua.toLocaleLowerCase()\n const isIOS = (/(iphone)/.test(ua) || /(ipad)/.test(ua))\n const isAndroid = /(android)/.test(ua)\n const isWP = /(windows phone)/.test(ua)\n const isMobile = (isIOS || isAndroid || isWP)\n const browser = {\n isIOS: isIOS,\n isAndroid: isAndroid,\n isMobile: isMobile,\n isPC: !isMobile,\n isPad: /(ipad)/.test(ua)\n }\n\n const result = isSupportMP4()\n browser.isSupportMP4 = result.isSupport\n browser.mime = result.mime\n\n let appNameKey = ''\n let appVersion = 0\n let match = []\n let _regMap = RegMap\n if (/trident/.test(ua)) {\n _regMap = IERegMap\n }\n\n for (let i = 0; i < _regMap.length; i++) {\n match = _regMap[i].reg.exec(ua)\n if (match) {\n appNameKey = _regMap[i].key\n appVersion = match.length > 2 ? match[2] : ''\n break\n }\n }\n\n if (appNameKey) {\n browser[`is${appNameKey}`] = true\n browser.name = appNameKey\n browser.appVersion = appVersion\n } else {\n const is360 = checkIs360()\n is360 && (browser.name = '360EE')\n }\n // 非IE检测是否为兼容模式\n if (browser.name && browser.name !== 'Trident') {\n // 浏览器兼容模式判断\n const isTrident = /(trident)/.exec(ua)\n if (isTrident) {\n browser.name = browser.name ? `${browser.name}_Trident` : 'Trident'\n }\n }\n\n browser.isSpider = checkIsSpider(browser.name)\n return browser\n}\n\nfunction checkIs360 () {\n const mimeTypes = navigator.mimeTypes\n if (mimeTypes) {\n for (let i = 0; i < mimeTypes.length; i++) {\n if (mimeTypes[i].type && mimeTypes[i].type.indexOf('360') > -1) {\n return true\n }\n\n if (mimeTypes[i].type && mimeTypes[i].type.indexOf('application/vnd.chromium.remoting-viewer') > -1) {\n return true\n }\n\n if (mimeTypes[i].description && mimeTypes[i].description.indexOf('360') > -1) {\n return true\n }\n }\n\n return false\n }\n}\n/**\n * Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 QIHU 360EE\n * Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 QIHU 360SE\n * Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.90 Safari/537.36 2345Explorer/9.6.0.18627\n * Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3722.400 QQBrowser/10.5.3738.400\n * 搜狗 \"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0\"\n * 爬虫 Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106\n * 百度爬虫 Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)\n */\nconst Browser = typeof navigator !== 'undefined' && detect(navigator.userAgent)\nexport default Browser\n","import { getXhr, log, transformHeader } from './util'\n\nconst defaultConfig = {\n range: '0-1048576',\n timer: 60 * 1000,\n timeout: 15000\n}\n\nexport default class SpeedCheckTask {\n constructor (options = {}) {\n Object.keys(defaultConfig).map(key => {\n if (options[key] === undefined || options[key] === null) {\n options[key] = defaultConfig[key]\n }\n })\n this.options = options\n this._headers = {}\n // this.speed = 0\n this.intervalId = null\n this.ishangUp = false\n this._data = {\n contentLength: 0,\n statusText: '',\n status: -1,\n speed: 0,\n costTime: 0,\n connectTime: 0,\n contentType: ''\n }\n this.url = []\n }\n\n setData (data, url) {\n Object.keys(data).map(key => {\n if (key !== 'headers') {\n this._data[key] = data[key]\n }\n })\n if (data.headers && Object.keys(data.headers).length > 0) {\n this._headers = transformHeader(data.headers)\n data.headers['content-type'] && (this._data.contentType = data.headers['content-type'])\n const resrange = data.headers['content-range'] || ''\n const arr = resrange.split('/')\n if (arr && arr.length > 1) {\n this._data.contentLength = parseInt(arr[1])\n }\n }\n }\n\n get contentLength () {\n return this._data.length || 0\n }\n\n trigger (url, type = 'start') {\n const { options } = this\n this.url = url\n if (this.url && (type === 'start' || (!this.ishangUp && !this.intervalId))) {\n log('task>>trigger url ', url)\n this.ishangUp = true\n this.intervalId && this.clear()\n this.intervalId = setTimeout(() => {\n this.clear()\n }, type === 'start' ? 500 : options.timer)\n getXhr(this.url, { range: type === 'start' ? '0-1024' : options.range, timeout: options.timeout }).then((data) => {\n log('getXhr>>check result ', data)\n this.setData(data || {})\n this.ishangUp = false\n }).catch((e) => {\n log('getXhr>>error ', e)\n this.ishangUp = false\n this._data.status = -1\n })\n } else {\n log('task>>cant`t trigger url', this.ishangUp, this.intervalId)\n }\n }\n\n set url (value) {\n value && (this.options.url = value)\n }\n\n get url () {\n return this.options.url\n }\n\n get serverIp () {\n return this._headers.x_response_sinfo || ''\n }\n\n get headers () {\n return this._headers || {}\n }\n\n get status () {\n return this._data.status || -1\n }\n\n get speed () {\n return this._data.speed\n }\n\n clear () {\n clearTimeout(this.intervalId)\n this.intervalId = null\n }\n}\n","// eslint-disable-next-line no-undef\nconst version = __VOD_LOGGER_VERSION__\nexport default version\n"],"sourceRoot":""}