|
||
|
|
|
|||||||
| Avisos |
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Me he encontrado un tema muy interesante y algo más complicado que este otro.
La cuestión del millón es esta... Tengo una colección de archivos MP3 en una carpeta y los quiero reproducir de forma aleatoria sin repetir ninguno hasta que no los haya reproducido todos.Nuevamente, sólo acciones de Tasker (sin JavaScript). Antes de comenzar con la tarea ... ¿alguna idea de cómo atacar el problema?
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
| Gracias de parte de: | ||
|
|
|
#2
|
||||
|
||||
|
A) Lo primero sería obtener la lista de los archivos y meterla en un array.
B) Generar un número aleatorio entre 1 y el total de ficheros (elementos del array), para elegir la primera canción. Luego quitar ese elemento del array, con lo que el número de elementos se reduce en uno. C) Volver al paso B) mientras todavía haya elementos por procesar.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
| Gracias de parte de: | ||
|
#3
|
||||
|
||||
|
A) Lo primero sería obtener la lista de los archivos y meterla en un array.
B) Generar un número aleatorio entre 1 y el total de ficheros (elementos del array), para elegir la primera canción. Luego quitar ese elemento del array, con lo que el número de elementos se reduce en uno. C) Volver al paso B) mientras todavía haya elementos por procesar. ![]() Ohhh, estaba intentado crear la tarea con la parte de tu idea 'B' al revés XD. Ahora tu planteamiento es más sencillo. Me pongo a ello!!! |
| Gracias de parte de: | ||
|
#4
|
||||
|
||||
|
Bueno, no sé si iva bien encaminado o que, pero aquí os dejo algo para empezar.
La tarea esta totalmente incompleta, y con cosas desperdigadas, por aquí, y por allá. Pero quizás sirva a modo de inicio ;) Código:
A1: List Files [ Dir:Documents/Tasker/Music Match: Include Hidden Files:Off Use Root:Off Sort Select:Alphabetic Variable:%temp1 ]
A2: Variable Set [ Name:%temp2 To:(%temp2)+1 Recurse Variables:Off Do Maths:On Append:Off ]
A3: Variable Set [ Name:%temp3 To:%temp1(%temp2) Recurse Variables:Off Do Maths:Off Append:On ]
A4: Variable Set [ Name:%temp3 To:, Recurse Variables:Off Do Maths:Off Append:On ] If [ %temp2 !~ %temp1(#) ]
A5: Goto [ Type:Action Number Number:2 Label: ] If [ %temp2 !~ %temp1(#) ]
A6: Array Set [ Variable Array:%temp3 Values:%temp3 Splitter:, ]
A7: Variable Clear [ Name:%temp2 Pattern Matching:Off Local Variables Only:Off ]
A8: Variable Set [ Name:%temp2 To:(%temp2)+1 Recurse Variables:Off Do Maths:On Append:Off ]
A9: Flash [ Text:%temp3 Long:Off ]
A10: Array Pop [ Variable Array:%temp3 Position:8 To Var: ]
A11: Goto [ Type:Action Number Number:8 Label: ] If [ %temp3(#) !~ 1 ]
A12: [x] Music Play [ File:%temp1(%temp2) Start:0 Loop:Off Stream:3 Continue Task Immediately:Off ]
A13: [x] Music Stop [ Clear Dir:Off Continue Task After Error:On ]
Algunos valores no tienen sentido en algunas tareas, y el órden de algunas tampoco. Pero la mitad de la misma debería funcionar, al menos para generar la lista de las canciones. Última edición por SmartPhoneLover Día 25/06/18 a las 21:10:15. |
| Los siguientes 2 usuarios han agradecido a SmartPhoneLover su comentario: | ||
|
#5
|
||||
|
||||
|
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
|
#6
|
||||
|
||||
|
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#7
|
||||
|
||||
|
A) Lo primero sería obtener la lista de los archivos y meterla en un array.
B) Generar un número aleatorio entre 1 y el total de ficheros (elementos del array), para elegir la primera canción. Luego quitar ese elemento del array, con lo que el número de elementos se reduce en uno. C) Volver al paso B) mientras todavía haya elementos por procesar. ![]() ![]() No vale copiar, que te veo.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#8
|
||||
|
||||
|
Como decía he seguido la estrategia que apuntaba Caravantes ...
Código:
ReproducciónSinRepetición (666) <LISTA DE ARCHIVOS> A1: Listar archivos [ Directorio:/sdcard/Music Coincidir:*.mp3 Incluir Archivos Ocultos:Apagado Usar Root:Apagado Ordenar por:Alphabetic Variable:%lista ] <LARGO DE LA LISTA> A2: Establecer variable [ Nombre:%max A:%lista(#) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] <NÚMERO DE ARCHIVO ALEATORIO> A3: Variable aleatoria [ Nombre:%num Mín:1 Máx:%max ] <SACA ARCHIVO DE LA LISTA> A4: Array Pop [ Matriz de Variables (array):%lista Posición:%num A la variable:%archivo ] <REPRODUCE EL ARCHIVO> A5: Reproducir música [ Archivo:%archivo Comenzar:0 Bucle:Apagado Stream:3 Continuar tarea inmediatamente:Apagado ] <SIGUIENTE ARCHIVO> A6: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:LARGO DE LA LISTA ] Si (if) [ %lista(#) > 0 ] Caravantes, lo tenías claro pero te he ganado por la mano.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#9
|
||||
|
||||
|
¡Mecachis!
Pero me voy a desquitar. Tu tarea tiene 6 acciones. La mía tiene una menos. Ahí va: [atención, esta tarea es incorrecta, tiene un error que se explica en posts posteriores] Código:
<LISTA DE ARCHIVOS> A1: Listar archivos [ Directorio:/sdcard/Music Coincidir:*.mp3 Incluir Archivos Ocultos:Apagado Usar Root:Apagado Ordenar por:Alphabetic Variable:%lista ] <NÚMERO DE ARCHIVO ALEATORIO> A2: Variable aleatoria [ Nombre:%num Mín:1 Máx:%lista(#) ] <SACA ARCHIVO DE LA LISTA> A3: Array Pop [ Matriz de Variables (array):%lista Posición:%num A la variable:%archivo ] <REPRODUCE EL ARCHIVO> A4: Reproducir música [ Archivo:%archivo Comenzar:0 Bucle:Apagado Stream:3 Continuar tarea inmediatamente:Apagado ] <SIGUIENTE ARCHIVO> A5: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:NÚMERO DE ARCHIVO ALEATORIO ] Si (if) [ %lista(#) > 0 ] - Quitar tu acción A2, porque la variable %max resulta innecesaria. - Corregir la siguiente acción para el número aleatorio esté entre 1 y el total de elementos %lista(#), sin usar la variable %max. - En la ultima acción, corregir el destino del GOTO que antes iba a una acción (antigua A2) ya inexistente. Saludos.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Última edición por Caravantes Día 28/06/18 a las 23:43:35. |
|
#10
|
||||
|
||||
|
¿Estás seguro de que en el campo "Máx" de A2 puedes poner %lista(#)?
Es que yo no puedo. |
|
#11
|
||||
|
||||
|
Realmente no había hecho la tarea, solo había modificado el texto de tu post, dando por supuesto que para el límite de la variable aleatoria era posible poner %lista(#), y no. Solo se pueden poner números o elegir una variable de las que hay en la lista (bajo la lupa), ni siquiera es posible escribir un nombre de variable. He intentado hacer una trampa para ver si podía esquivar el problema. Compuse la tarea (la tuya), comprobé que funcionaba bien. Exporté en formato XML. Modifiqué el texto XML sustituyendo la palabra max por %lista(#), y luego probé a importar la tarea. Nones. ERROR, FORMATO DE DATOS INCORRECTO. Ese error aparece siempre que se modifica el XML, aunque sea en algo tan poco relevante como una etiqueta (Anchor). Deduzco que el XML lleva incorporado algún cheksum sobre el propio conjunto de datos, precisamente para evitar trampas como la que yo he intentado. Dicho todo lo cual, tengo que disculparme por haberme pasado de listo. WillyWeb sigue siendo insuperable. Al menos para este ejercicio tiene la mejor tarea. Willy
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
|
#12
|
||||
|
||||
|
Ya me parecía.
![]() ¿Es que lo dudabas?
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#13
|
||||
|
||||
|
Como idea, también podemos presentar pequeños problemas sobre cosas que hemos creado y ver si damos con la misma solución. O ser imaginativos (Willy te toca Algo que no se usa casi son condiciones complejas con varios booleanos y lo podríamos tocar, como ejercicios de lógica. Es que me estoy acordando de un perfil que hice donde uso 5 condiciones intentando cubrir colisiones. |
|
#14
|
||||
|
||||
|
Parece que has vuelto "juguetón".
![]() Me parece muy bien lo de crear pequeños retos para animar un poco el foro. Justo esa es mi intención con los "Ejercicios de verano", fomentar la participación activa. La participación pasiva (lectores silenciosos) parece que está cubierta viendo el número de visitas de cada tema. Por cierto, aunque no inicie el "ejercicio" aportando mi solución no quiere decir que no la tenga preparada. Siempre tengo al menos una. Naturalmente también estaré encantado de participar en cualquier reto que quiera plantear otro forero. ![]() El tema de los operadores lógicos que has mencionado suena muy interesante. Podrías hacer un pequeño tutorial explicando su funcionamiento y como caso práctico presentar ese proyecto que has recordado. Es malo aburrirse, ¿verdad?
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
![]() |
Estás aquí
|
||||||
|
||||||