How to use scanMedia method in Appium Android Driver

Best JavaScript code snippet using appium-android-driver

walls.js

Source:walls.js Github

copy

Full Screen

1(function ($) {2    $.fn.yogaWall = function (options) {3        var $container = $(this);4        var $media = $container.find('div[data-role=PostMedia]');5        var $addVideoButton = $container.find('button[data-role=AddVideoButton]');6        var $addPhotosButton = $container.find('button[data-role=UploadButton]');7        var $postsEmpty = $('#page-content', window.parent.document).find('[data-role=PostsEmpty]');8        options = $.extend({9            afterPost: function (html) {10                $container.find('[data-role=Posts]').prepend(html);11            },12            afterShare: function () {},13            afterDelete: function ($button) {14                $button.closest('[data-role=Post]').remove();15                if ($media.find('[data-role=Posts]').length > 0) return;16                $postsEmpty.show();17            }18        }, options);19        $container.find('[data-role=PostContainer]').yogaGallery({20            beforeUpload: function () {21                $container.find('[data-role=PostMediaResource]').remove();22            },23            afterUpload: function() {24                disableButtons($addPhotosButton, $addVideoButton);25            }26        });27        var scanMedia = function () {28            if ($media.find('[data-role=PostMediaResource]').length > 0) return;29            var $textarea = $(this);30            var match = /(?:https?:\/\/)?([a-z][a-z0-9-]+(?:\.[a-z][a-z0-9-]+)+[^\s]*)/i.exec($textarea.val());31            if (match) {32                var url = match[0];33                if (!/^https?:\/\//.test(url)) {34                    url = 'http://' + url;35                }36                $.ajax({37                    type: 'POST',38                    url: $container.data('media-preview-url'),39                    data: { uri: url },40                    success: function (html) {41                        if (!html) return;42                        $container.find('[data-role=PostMediaResource]').remove();43                        var $resource = $(html);44                        var $image = $resource.find('[data-role=PostMediaImage]');45                        $media.append($resource);46                        disableButtons($addPhotosButton, $addVideoButton);47                        $.ajax({48                            type: 'POST',49                            url: $image.data('scan-url'),50                            data: { uri: $resource.data('resource-uri') },51                            success: function (html) {52                                $image.html(html);53                            }54                        });55                    }56                });57            }58        };59        this.on('keyup', 'textarea', _.debounce(scanMedia, 1000));60        this.on('change paste', 'textarea', scanMedia);61        this.on('click', 'button[data-role=PostButton]', function (e) {62            e.preventDefault();63            var $button = $(this);64            var $container = $button.closest('[data-role=PostContainer]');65            var $content = $container.find('[data-role=PostContent]');66            var $postsEmpty = $('#page-content', window.parent.document).find('[data-role=PostsEmpty]');67            var url = $button.attr('data-url');68            var content = $content.val();69            var $resources = $container.find('[data-role=PostMediaResource]');70            var resourceUris = [];71            $resources.each(function () {72                var $resource = $(this);73                var uri = $resource.attr('data-resource-uri');74                resourceUris.push(uri);75            });76            if (content.trim() == "" && resourceUris.length == 0) return;77            if (content.split(/[^\w'-]+/i).length > 300) {78                alert('Please enter 300 words or less.');79                return;80            }81            $.ajax({82                type: 'POST',83                url: url,84                contentType: 'application/json',85                data: JSON.stringify({86                    Content: content,87                    ResourceUris: resourceUris88                }),89                success: function (response) {90                    options['afterPost'](response);91                    toLocalDateTime($(".post .localDateTime", ".posts").eq(0));92                    $content.val('');93                    $resources.remove();94                    $postsEmpty.hide();95                    enableButtons($addPhotosButton, $addVideoButton);96                }97            });98        });99        this.on('click', 'button[data-role=SharePostButton]', function (e) {100            e.preventDefault();101            var $button = $(this);102            var url = $button.attr('data-url');103            var postId = $button.attr('data-post-id');104            $.ajax({105                type: 'POST',106                url: url,107                data: { PostId: postId },108                success: function (response ) {109                    options['afterShare'](response);110                    window.alert('Post shared.');111                }112            });113        });114        this.on('click', 'a[data-role=DeletePostButton]', function (e) {115            e.preventDefault();116            if (!window.confirm("Are you sure you want to delete this?"))117                return;118            var $button = $(this);119            var url = $button.attr('data-url');120            var postId = $button.attr('data-post-id');121            $.ajax({122                type: 'POST',123                url: url,124                data: { PostId: postId },125                success: function () {126                    options['afterDelete']($button);127                }128            });129        });130        this.on('click', 'button[data-role=AddVideoButton]', function (e) {131            e.preventDefault();132            var $button = $(this);133            openModal($button.data('url'), false);134        });135        this.on('click', 'div[data-role=PostMediaResource] a[data-role=RemoveButton]', function (e) {136            e.preventDefault();137            $(this).closest('[data-role=PostMediaResource]').remove();138            if ($media.find('[data-role=PostMediaResource]').length > 0) return;139            enableButtons($addPhotosButton, $addVideoButton);140        });141    };142    $.fn.yogaWallAddVideoModal = function () {143        var $container = this;144        var $resources = $('#page-content', window.parent.document).find('[data-role=PostMedia]');145        var $addVideoButton = $('#page-content', window.parent.document).find('button[data-role=AddVideoButton]');146        var $addPhotosButton = $('#page-content', window.parent.document).find('button[data-role=UploadButton]');147        $container.find('button[data-role=AddButton]').on('click', function (e) {148            e.preventDefault();149            var $button = $(this);150            $.ajax({151                type: 'POST',152                url: $button.attr('data-url'),153                data: $button.parent().find('input').serialize(),154                success: function (video) {155                    $.ajax({156                        type: 'POST',157                        url: $container.data('media-preview-url'),158                        data: { uri: 'urn:yogaclicks:entity:Video:' + video.Id },159                        success: function (html) {160                            $resources.find('[data-role=PostMediaResource]').remove();161                            $resources.append(html);162                            disableButtons($addPhotosButton, $addVideoButton);163                            closeModal();164                        }165                    });166                },167                error: function () {168                    alert("Please provide a valid YouTube or Vimeo video URL.");169                }170            });171        });172    };173    var disableButtons = function(photosButton, videoButton) {174        photosButton.attr('disabled', 'disabled');175        photosButton.css('opacity', 0.6);176        videoButton.attr('disabled', 'disabled');177        videoButton.css('opacity', 0.6);178    };179    var enableButtons = function (photosButton, videoButton) {180        photosButton.removeAttr('disabled');181        photosButton.css('opacity', 1);182        videoButton.removeAttr('disabled');183        videoButton.css('opacity', 1);184    };...

Full Screen

Full Screen

index.js

Source:index.js Github

copy

Full Screen

1import React from 'react';2import { connect } from 'umi';3import { Button, Collapse, Divider, PageHeader, Select, Statistic, Upload, message } from 'antd';4import { CloudUploadOutlined, FileAddOutlined } from '@ant-design/icons';5import { delay } from '../../utils/respCheck';6import style from './index.less';7import moment from 'moment';8import UserTable from './userTable';9import MediaTable from './mediaTable';10import RegisteredModal from '../login/registeredModal';11const { Panel } = Collapse;12const { Option } = Select;13class ManagerMedia extends React.Component {14  constructor(props) {15    super(props);16    this.state = {17      modalVisible: false,18      loading: false,19      // 文件上传Upload20      file: null,21      fileList: [],22      uploadBtnLoading: false,23      // 本地媒体扫描24      scanMediaBtnLoading: false25    }26  }27  // handle28  uploadOnChange = async (data) => {29    await this.setState({30      file: data.file,31      fileList: data.fileList32    });33  };34  uploadFile = async () => {35    await this.setState({uploadBtnLoading: true});36    let formData = new FormData();37    formData.append('file', this.state.file);38    await this.props.dispatch({ type: 'managerModel/uploadFile', payload: formData });39    await this.setState({uploadBtnLoading: false});40    await this.setState({41      file: null,42      fileList: []43    })44  };45  scanMedia = async () => {46    await this.setState({ scanMediaBtnLoading: true });47    message.info("正在扫描本地媒体文件,请稍后......", 15);48    await this.props.dispatch({ type: 'managerModel/scanMedia' });49    await this.setState({ scanMediaBtnLoading: false });50  };51  // 注册对话框52  modalVisible = async () => {53    await this.setState({ modalVisible: true })54  };55  modalHide = async () => {56    await this.setState({ modalVisible: false });57  };58  // life cycle59  initData = async () => {60    await this.setState({ loading: true });61    await this.props.dispatch({type: 'loginModel/getLoginStatus'});62    await this.props.dispatch({ type: 'managerModel/getMusicCount' });63    await this.props.dispatch({ type: 'managerModel/getVideoCount' });64    await this.props.dispatch({ type: 'managerModel/getLastScanMediaTime' });65    await this.setState({ loading: false });66  };67  componentWillMount() {68    this.initData().then()69  }70  render() {71    const renderUpload = () => {72      return <div>73        <div className={style.upload_btn}>74          <Upload name="file"75                  accept=".mp3,.mp4"76                  multiple={false}77                  beforeUpload={() => false}78                  fileList={this.state.fileList}79                  onChange={this.uploadOnChange}80          >81            {82              this.state.fileList.length === 0 ?83                <Button type={'primary'} icon={<FileAddOutlined />} style={{width: '360px'}}>选择文件</Button> :84                <div onClick={() => null}>85                  <span>{`您已选择${this.state.fileList.length}个文件:${this.state.file?.name}`}</span>86                </div>87            }88          </Upload>89          {90            this.state.fileList.length > 0 ?91              <Button type={'primary'} icon={<CloudUploadOutlined />} loading={this.state.uploadBtnLoading} style={{width: '80%', marginTop: '30px'}} onClick={this.uploadFile}>确定上传</Button> :92              null93          }94        </div>95      </div>96    };97    return <div>98      <PageHeader title={'媒体管理'}99                  subTitle={'支持管理员上传,刷新,扫描媒体文件'}100      />101      <Divider orientation='left' style={{ fontWeight: 'bold' }}>媒体概览</Divider>102      <div className={style.row_flex}>103        <Statistic className={style.statistic_board} title="当前媒体库总数:" value={Number(this.props.musicCount + this.props.videoCount)} suffix={'首'}/>104        <Divider type="vertical"/>105        <Statistic className={style.statistic_board} title="歌曲数:" value={Number(this.props.musicCount)} suffix={'首'}/>106        <Divider type="vertical"/>107        <Statistic className={style.statistic_board} title="视频数:" value={Number(this.props.videoCount)} suffix={'个'}/>108        <Divider type="vertical"/>109        <Statistic className={style.statistic_board} title="最近上传:" value={moment(this.props.lastScanMediaTime ?? '0').format('YYYY-MM-DD HH:mm:ss')}/>110      </div>111      <Divider orientation='left' style={{ fontWeight: 'bold' }}>扫描本地媒体,当前媒体库:D:/media_src</Divider>112      <div className={style.row_flex}>113        <Button onClick={this.scanMedia} type={'primary'} style={{width: '350px', marginTop: '30px'}} loading={this.state.scanMediaBtnLoading}>刷新媒体列表(需要较长时间)</Button>114      </div>115      <Divider orientation='left' style={{ fontWeight: 'bold' }}>上传本地文件(管理员权限)</Divider>116      <div className={style.row_flex}>117        {118          this.props.user_role === 'admin' ? renderUpload() : '您当前不是管理员,无法上传本地媒体到媒体库。'119        }120      </div>121      <Divider orientation='left' style={{ fontWeight: 'bold' }}>系统用户管理(管理员权限)<Button onClick={this.modalVisible} type={'primary'} style={{marginLeft: '20px'}}>+ 新增用户</Button></Divider>122      <div className={style.row_flex}>123        {124          this.props.user_role === 'admin' ? <div className={style.table_wrapper}><UserTable /></div> : '您当前不是管理员,无法管理本地媒体。'125        }126      </div>127      <Divider orientation='left' style={{ fontWeight: 'bold' }}>管理本地文件(管理员权限)</Divider>128      <div className={style.row_flex}>129        {130          this.props.user_role === 'admin' ? <div className={style.table_wrapper}><MediaTable /></div> : '您当前不是管理员,无法管理系统用户。'131        }132      </div>133      <Divider orientation='left' style={{margin: '20px 0'}} />134      <RegisteredModal visible={this.state.modalVisible}135                       hide={this.modalHide}136                       dispatch={this.props.dispatch}137      />138    </div>139  }140}141function mapStateToProps(state) {142  const { username, user_role, last_login } = state.loginModel;143  const { musicCount, videoCount, lastScanMediaTime } = state.managerModel;144  return { username, user_role, last_login, musicCount, videoCount, lastScanMediaTime };145}...

Full Screen

Full Screen

popup.js

Source:popup.js Github

copy

Full Screen

...27function removeElements(selector)28{29	iterateElements(selector, function(node) { node.parentNode.removeChild( node ); })30}31function scanMedia()32{33	background.scanMedia();34	// close the popup35	window.close();36}37function load_media()38{39	// remove all previous results40	removeElements('.media-result');41	42	// show the loading div43	showElements("#scanning");44	hideElements("#nonefound");45	background.loadMedia(function(response) { 46		hideElements("#scanning");47		// add the new entries...

Full Screen

Full Screen

settings.js

Source:settings.js Github

copy

Full Screen

1// ----- Functions ----- //2// Displays an error message.3function showError (message) {4	var errorMessage = document.getElementById('error-message');5	errorMessage.textContent = message;6}7// Removes the error message.8function clearError () {9	var errorMessage = document.getElementById('error-message');10	errorMessage.textContent = '';11}12// Sends a request to scan the media directories.13function scanMedia () {14	fetch('/scan', {method: 'post'}).then(function (response) {15		if (response.status !== 202) {16			showError('Scan failed.');17		} else {18			clearError();19		}20	});21}22// Sends request to add source via fetch.23function addSource (form) {24	form.preventDefault();25	var data = new FormData(form.target);26	fetch('/add_source', { method: 'put', body: data })27		.then(function (response) {28			if (response.status === 201) {29				location.reload();30			} else {31				response.text().then(function (body) {32					showError(body);33				});34			}35		});36}37// Sets up the event listeners on page buttons.38function setup () {39	var scanButton = document.getElementById('scan-button');40	scanButton.addEventListener('click', scanMedia);41	var sourceDialog = document.getElementById('add-media-dialog');42	dialogPolyfill.registerDialog(sourceDialog);43	var addMediaButton = document.getElementById('add-media-button');44	var closeDialogButton = document.getElementById('close-dialog-button');45	addMediaButton.addEventListener('click', function () {46		sourceDialog.showModal();47	});48	49	closeDialogButton.addEventListener('click', function () {50		sourceDialog.close();51	});52	var sourceForm = document.getElementById('source-form');53	sourceForm.addEventListener('submit', addSource);54}55// ----- DOM Loaded ----- //...

Full Screen

Full Screen

mediaScanner.js

Source:mediaScanner.js Github

copy

Full Screen

...11        }12        mediaScanner.scanningActive = true;13        alertify.success("Scanning media from your disk, please wait");14        if (typeof scanMedia == 'function') {15            scanMedia();16        }17        return true;18    },19    showSize: function(size) {20        alertify.success(size);21    },22    scannerErrorCallback: function () {23        mediaScanner.scanningActive = false;24        songCollection.needsUpdate = false;25        alertify.error("Unable to scan due to lack of paths. Please check your settings.");26    },27    completeScanning: function() {28        mediaScanner.scanningActive = false;29        songCollection.needsUpdate = true;...

Full Screen

Full Screen

scanMedia.js

Source:scanMedia.js Github

copy

Full Screen

1function ScanMediaPlugin() {}2        3ScanMediaPlugin.prototype.scanFile = function(string, win, fail) {4    console.log("ScanMediaPlugin: scanFile called");5    cordova.exec(win, fail, "ScanMedia", "mediaScanner", [string]);6};7ScanMediaPlugin.prototype.test = function() {8    console.log("ScanMediaPlugin: Javascript Interface Loaded");9};10ScanMediaPlugin.install = function () {11    console.log("ScanMediaPlugin: Initializing");12    if(!window.plugins){13        window.plugins = {};14        console.log("ScanMediaPlugin: window.plugins initialized");15    }16    window.plugins.scanmedia = new ScanMediaPlugin();17    window.plugins.scanmedia.test();18    19    return window.plugins.scanmedia;20};...

Full Screen

Full Screen

MediaRefresher.js

Source:MediaRefresher.js Github

copy

Full Screen

1cordova.define("com.metacube.metacampus.mediarefresher.MediaRefresher", function(require, exports, module) {2var mediaRefresh = {3	scanMedia : function(fileUri,successCallback,errorCallback) {4		cordova.exec(5			successCallback,6			errorCallback,7			'MediaRefresher',8			'refresh',9			[fileUri]10		);11	}12}13module.exports = mediaRefresh;...

Full Screen

Full Screen

gamebar.js

Source:gamebar.js Github

copy

Full Screen

1function scanMedia() {2	$('#media_src').attr("src",'https://www.bilibili.com/video/BV1dW411i7QC?p=2&share_source=copy_web');3	document.querySelector('video').load();//video重载,以免读取src失败4	$("#mediaModal").modal('show');...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var webdriver = require('selenium-webdriver');2var driver = new webdriver.Builder()3    .forBrowser('chrome')4    .build();5driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');6driver.findElement(webdriver.By.name('btnG')).click();7driver.wait(function() {8  return driver.getTitle().then(function(title) {9    return title === 'webdriver - Google Search';10  });11}, 1000);12driver.quit();13driver.scanMedia("/sdcard/DCIM/Camera", "jpg");14driver.quit();15info: [debug] [ADB] The installed 'io.appium.settings' package does not require upgrade (2 >= 2)16info: [debug] [ADB] Running '/Users/xxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell 'pgrep --help; echo $?'''

Full Screen

Using AI Code Generation

copy

Full Screen

1var AppiumAndroidDriver = require('appium-android-driver');2var driver = new AppiumAndroidDriver();3driver.scanMedia('/sdcard/test.mp3');4var AppiumAndroidDriver = require('appium-android-driver');5var driver = new AppiumAndroidDriver();6driver.scanMedia('/sdcard/test.mp3');7var AppiumAndroidDriver = require('appium-android-driver');8var driver = new AppiumAndroidDriver();9driver.scanMedia('/sdcard/test.mp3');10var AppiumAndroidDriver = require('appium-android-driver');11var driver = new AppiumAndroidDriver();12driver.scanMedia('/sdcard/test.mp3');13var AppiumAndroidDriver = require('appium-android-driver');14var driver = new AppiumAndroidDriver();15driver.scanMedia('/sdcard/test.mp3');16var AppiumAndroidDriver = require('appium-android-driver');17var driver = new AppiumAndroidDriver();18driver.scanMedia('/sdcard/test.mp3');19var AppiumAndroidDriver = require('appium-android-driver');20var driver = new AppiumAndroidDriver();21driver.scanMedia('/sdcard/test.mp3');22var AppiumAndroidDriver = require('appium-android-driver');23var driver = new AppiumAndroidDriver();24driver.scanMedia('/sdcard/test.mp3');25var AppiumAndroidDriver = require('appium-android-driver');26var driver = new AppiumAndroidDriver();27driver.scanMedia('/sdcard/test.mp3');28var AppiumAndroidDriver = require('appium-android-driver');29var driver = new AppiumAndroidDriver();30driver.scanMedia('/sdcard/test.mp3');31var AppiumAndroidDriver = require('appium-android-driver');32var driver = new AppiumAndroidDriver();33driver.scanMedia('/sdcard/test.mp3');

Full Screen

Using AI Code Generation

copy

Full Screen

1var wd = require('wd'),2    path = require('path'),3    assert = require('assert'),4    _ = require('underscore');5var appPath = path.resolve(__dirname, 'app', 'ApiDemos-debug.apk');6var desiredCaps = {7};8var driver = wd.promiseChainRemote("localhost", 4723);9    .init(desiredCaps)10    .sleep(5000)11    .scanMedia()12    .then(function() {13        console.log('Media Scan Completed');14    })15    .quit();

Full Screen

Using AI Code Generation

copy

Full Screen

1var androidDriver = require("appium-android-driver");2var driver = new androidDriver.AndroidDriver();3driver.scanMedia("/path/to/your/file");4var androidDriver = require("appium-android-driver");5var driver = new androidDriver.AndroidDriver();6driver.scanMedia("/path/to/your/file");7var androidDriver = require("appium-android-driver");8var driver = new androidDriver.AndroidDriver();9driver.scanMedia("/path/to/your/file");10var androidDriver = require("appium-android-driver");11var driver = new androidDriver.AndroidDriver();12driver.scanMedia("/path/to/your/file");13var androidDriver = require("appium-android-driver");14var driver = new androidDriver.AndroidDriver();15driver.scanMedia("/path/to/your/file");16var androidDriver = require("appium-android-driver");17var driver = new androidDriver.AndroidDriver();18driver.scanMedia("/path/to/your/file");19var androidDriver = require("appium-android-driver");20var driver = new androidDriver.AndroidDriver();21driver.scanMedia("/path/to/your/file");22var androidDriver = require("appium-android-driver");23var driver = new androidDriver.AndroidDriver();24driver.scanMedia("/path/to/your/file");25var androidDriver = require("appium-android-driver");26var driver = new androidDriver.AndroidDriver();27driver.scanMedia("/path/to/your/file");28var androidDriver = require("appium-android-driver");29var driver = new androidDriver.AndroidDriver();30driver.scanMedia("/path/to/your/file");31var androidDriver = require("appium

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Appium Android Driver automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful