![]() |
|
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
|
Crear una lista de reproducción en Spotify con canciones similares
Hola: quería compartir el trabajo original y el modificado por mi.
En el original es necesario tener Autospotify, Autotools y Autoweb, al no contar con Autospotify modifiqué las tareas para poder realizarlo solo con Autotools y Autoweb. Lo que hace es si uno está escuchando una canción en Spotify y le gusta puede crear automaticamente, copiando el vinculo, una lista de reproducción con canciones similares según el sitio Last.fm También podría modificarse para obtener el nombre de una canción que estemos escuchando, por ejemplo de Soundhound o ingresar manualmente el nombre de un tema y que nos cree la playlist. Este es el link para el perfil original en inglés http://forum.joaoapps.com/index.php?...ify-songs.107 Código:
Spotify Modificado (141) A1: Si (if) [ %CLIP ~R https://open.spotify.com/track/ ] A2: AutoTools Dialog [ Configuración:Dialog Type: 2 Choices Choice One: No Choice One Command: false Choice Two: Yes Choice Two Command: true Text: Crear una playlist con canciones similares? Text Size: 20 Use HTML: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A3: Si (if) [ %atcommand ~ true ] A4: Establecer variable [ Nombre:%url A:%CLIP Calcular:Apagado Añadir:Apagado ] A5: Separar variable [ Nombre:%url Separador:https://open.spotify.com/track/ Eliminar base:Apagado ] A6: AutoWeb Web Service [ Configuración:API: Spotify API Action: Get a track Id: %url2 Cuenta atrás (segundos):120 ] A7: Establecer variable [ Nombre:%songname A:%trackname Calcular:Apagado Añadir:Apagado ] A8: AutoTools Dialog [ Configuración:Dialog Type: Progress Text: Obteniendo canciones... Text Size: 20 Use HTML: false Indeterminate: true Progress Style: 0 Current Progress: 0 Max Progress: 100 Close: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A9: AutoWeb Web Service [ Configuración:API: Last.fm API Action: Get similiar songs Track: %trackname Artist: %trackartistnames1 Limit: 30 Cuenta atrás (segundos):120 ] A10: Si (if) [ %track_name1 No ajust. ] A11: AutoTools Dialog [ Configuración:Dialog Type: Ok Text: No se encontraron canciones Text Size: 20 Use HTML: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A12: Detener [ Con error:Apagado Tarea: ] A13: Fin si (End if) A14: For [ Variable:%num Ítems:1:%track_name(#) ] A15: Establecer variable [ Nombre:%resultado(%num) A:%track_name(%num),%artist_name(%num) Calcular:Apagado Añadir:Apagado ] A16: End For A17: For [ Variable:%similarsongs Ítems:%resultado() ] A18: Array Clear [ Nombre:%items_uri ] A19: Array Clear [ Nombre:%popularity ] A20: Sumar a variable [ Nombre:%array Valor:1 Módulo (wrap around):0 ] A21: AutoWeb Web Service [ Configuración:API: Spotify API Action: Search tracks Q: %resultado(%array) Cuenta atrás (segundos):120 ] A22: Si (if) [ %items_uri1 Ajuste & %trackuri() !~R %items_uri1 & %trackuri() !~R spotify:track:%url2 ] A23: Array Push [ Nombre:%trackuri Posición:1 Valor:%items_uri1 Rellenar Espacios:Apagado ] A24: Array Push [ Nombre:%trackpopularity Posición:1 Valor:%popularity1 Rellenar Espacios:Apagado ] A25: Fin si (End if) A26: AutoTools Dialog [ Configuración:Dialog Type: Progress Text: %trackuri(#) canciones encontradas! Text Size: 20 Use HTML: false Indeterminate: true Progress Style: 0 Current Progress: 0 Max Progress: 100 Close: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A27: End For A28: Si (if) [ %trackuri(#) > 0 ] A29: AutoWeb Web Service [ Configuración:API: Spotify API Action: My Account Info Cuenta atrás (segundos):120 ] A30: AutoTools Dialog [ Configuración:Dialog Type: Progress Text: Creando playlist. Text Size: 20 Use HTML: false Indeterminate: true Progress Style: 0 Current Progress: 0 Max Progress: 100 Close: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A31: AutoWeb Web Service [ Configuración:API: Spotify API Action: Create playlist User Id: %my_user_id Name: canciones similares a %songname Public: false Cuenta atrás (segundos):120 ] A32: AutoWeb Web Service [ Configuración:API: Spotify API Action: Add Tracks to a Playlist User Id: %my_user_id Playlist Id: %playlist_id Uris: %trackuri() Cuenta atrás (segundos):120 ] A33: AutoTools Dialog [ Configuración:Dialog Type: 2 Choices Choice One: No Choice One Command: false Choice Two: Yes Choice Two Command: true Text: Playlist creada! Escuchar ahora? Text Size: 20 Use HTML: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A34: Enviar Intent [ Acción:android.intent.action.VIEW Categ.:Default Tipo Mime: Datos:spotify:user:%my_user_id:playlist:%playlist_id Extra: Extra: Extra: Paquete: Clase: Objetivo:Activity ] A35: Else A36: AutoTools Dialog [ Configuración:Dialog Type: Ok Text: No se encontraron canciones similares Text Size: 20 Use HTML: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A37: Fin si (End if) A38: Fin si (End if) A39: Fin si (End if) Lo bueno es que, gracias a Willyweb, pude dominar un poco más las variables. Saludos |
| Los siguientes 2 usuarios han agradecido a leromaro su comentario: | ||
|
|
|
#2
|
|
Un buen ejemplo de cómo utilizar AutoWeb. Seguro que a más de uno se le ocurren nuevas ideas al ver tu trabajo.
![]() ¿Te importaría explicar, a grandes rasgos, el funcionamiento de la tarea y de dónde salen esas variables que utilizas? Creo que así será más fácil que te ayuden a mejorar/optimizar la tarea. |
| Los siguientes 2 usuarios han agradecido a WillyWeb su comentario: | ||
|
#3
|
|
A ver Wilyweb, si no lo entiendes...
El perfil se activa cuando se modifica la variable del portapapeles %CLIP A1 si %CLIP se corresponde con la estructura de un enlace de Spotify A2 Abre un dialogo donde nos consulta si queremos crear la playlist con canciones similares A4 y A5 copiamos la parte del link que nos interesa quedandonos solamente el id de la canción A6 hace una consulta en Autoweb a la API de Spotify solicitando los datos de la canción nos devuelve la variable %trackname, %trackartistnames() y %popularity A7 guarda el nombre del tema en otra variable para en A31 colocar el nombre a la playlist A8 con Autotools crea un dialogo de progreso de la tarea A9 consulta con %trackname y %trackartistnames1, con Autoweb en la API de Last.fm canciones similares y se puede elegir la cantidad, nos devuelve una lista de canciones similares %%track_name() y %artist_name() A10 verifica que tengamos la respuesta de la acción anterior o detiene la tarea A14 bucle que ordena cada canción con su respectivo artista y lo guarda en %resultado Lo siguiente es la única parte que no entendí del todo pero logré modificar la tarea original para que funcione. A17 en este bucle hacemos la consulte mediante Autoweb a Spotify de cada uno de los elementos de array %resultado para obtener el uri y popularidad de cada uno. %items_uri() y %popularity(), luego guardandolo en %trackuri y %trackpopularity Con el dato de popularidad la tarea original, realiza una consulta con Autospotify y elimina las canciones que tienen menos popularidad que la canción original, debido a que la tarea original tenía una acción A8 donde guardaba la popularidad del tema original - 15. Tendríamos en este caso que eliminar los array de popularidad que sean menores a xxx, eliminar los mismos números del array de %trackuri y continuar. Me pareció que me complicaba y no lo hice. A26 dialogo que nos dice las canciones encontradas A28 Si obtenemos al menos una canción (con mi tarea se va a lograr siempre la cantidad inicial porque no descarta los de popularidad baja) A29 pide el id de spotify y lo guarda en la variable %my_user_id A30 dialogo que dice creando playlist A31 crea con el id de usuario obtenido la playlist utilizando variable de A7 A32 agrega la lista de temas obtenida en %trackuri A33 pregunta si queremos escuchar la playlist A34 intente que abre spotify en la playlist (no pude encontrar uno que comience a sonar, el original lo hace con Autospotify) Fin Lo que veo que se puede mejorar mucho son los bucles A17 a A27, que es donde más tarda la tarea, quizás con javascript. Gracias Willyweb, en este caso puntual, por explicarme detenidamente y para niños los arrays, algo pequeñito entendí. Saludos |
| Los siguientes 2 usuarios han agradecido a leromaro su comentario: | ||
|
#4
|
|
Eres un cachondo
![]() ![]() ![]() Gracias por la explicación. Seguro que ahora es más fácil que alguien intente mejorar la tarea. Sobre lo de usar JavaScript para procesar los arrays, pues seguro que se ganaba tiempo, pero el intercambio de variables entre Tasker y JavaScript tiene la pequeña limitación de que no soporta los arrays, así que se tendría que inventar algo para solucionar ese problema. Antes de intentar andar por ese camino sería conveniente optimizar las acciones de esos bucles que comentas. Vamos a dar tiempo para que los compañeros estudien el tema y opinen.
|
| Gracias de parte de: | ||
|
#5
|
|
Después de realizar la tarea decenas de veces para ir armándola y terminarla y ver que funciona más o menos bien, digo: ahora voy a hacer una playlist de algo que me guste, resultado: un fracaso!
Las canciones obtenidas de todas las pruebas que hice son la mayoría covers o karaoke de la original (que si está en spotify), tengo que buscar si el error está en la búsqueda de Last.fm o en el loop que no pude controlar bien que manejaba y filtraba la popularidad de los temas. Trabajo largo por delante. |
| Gracias de parte de: | ||
|
#6
|
|
|
Cita:
![]() Empiezas hablando de un perfil que no pones, y la tarea empieza con un IF (de A1 hasta A39) que te podrías ahorrar perfectamente si ese perfil tiene esta pinta... Código:
Perfil: DetectaURLSpotify (777) Evento: Establecer variable [ Variable:%CLIP Valor: https://open.spotify.com/track/* User Variables Only:Apagado ] Entrada: Spotify Modificado (141) ... ... Código:
A1: Detener [ Con error:Apagado Tarea: ] Si (if) [ %CLIP !~ https://open.spotify.com/track/* ] La consulta al API de Spotify (A6) para obtener los datos de la canción (%trackname, %trackartistnames() y %popularity) no tiene misterio. Muy curioso que el nombre del artista sea un array ¿...? Tampoco tiene misterio la consulta al API de Last.fm (A9) para conseguir una lista de canciones similares (%track_name() y %artist_name()). La comprobación de A10 también podría ser "Si (if) [ %track_name(#) = 0 ]". Haces eso mismo en A28 y creo que se entiende mejor. Y aquí comienza la parte farragosa... El propósito del bucle A14-A16 está claro por lo que me habías comentado, pero viendo el uso que haces de %resultado() creo que te podrías ahorrar ese array, el bucle que comienza en A17 y llega hasta A27, la variable %similarsongs, que no usas para nada, y el contador %array. No entiendo la consulta de A21. Pasas al API de Spotify un par "canción,artista" y te devuelve los arrays %items_uri() y %popularity(). Parece que intentas buscar información sobre ese par "canción,artista" pero el resultado tiene pinta de ser una lista de canciones+popularidad que cuadran con los términos buscados ¿...? En este punto no parece complicado filtrar los resultados que tengan menos popularidad que la canción inicial. Sólo tienes que recorrer el array %popularity() con un bucle como los que ya has hecho antes y añadir a la lista de canciones válidas (%trackuri) las del array %items_uri() que cumplan con tu criterio. Yo diría que A22, que evita repetir canciones en la lista, formaba parte de un bucle que hacía justo lo que te digo. El resto no parece complicado: Comprobar si finalmente tienes canciones en la lista (A28). Obtener tu ID de usuario de Spotify (A29). Crear una lista de reproducción nueva (A31). Y añadir las canciones de %trackuri() a esa lista (A32). Y para finalizar decidir si quieres escuchar la nueva lista (A33-A34). ¿Seguro que no existe un intent que pulse el PLAY o que lance la reproducción directamente? ¿Te he aclarado algo, o ha sido peor?
|
| Los siguientes 2 usuarios han agradecido a WillyWeb su comentario: | ||
|
#7
|
|
|
Hola Willyweb: gracias por todo. Cuando creí haber detectado por que no funcionaba...
Paso a explicar lo que hice y por que. Antes no había exportado la original y puse el link porque me sale distinto y no se por qué. Pero aquí la exporto: Código:
[u'Spotify Original (108)\n\tA1: Si (if) [ %CLIP ~R https://open.spotify.com/track/ ]\n\tA2: AutoTools Dialog [ Configuraci\xf3n:Dialog Type: 2 Choices\nChoice One: No\nChoice One Command: false\nChoice Two: Yes\nChoice Two Command: true\nText: Would you like to create a playlist with similar Songs?\nText Size: 20\nUse HTML: false\nDim Background: true\nCancelable: true\nTurn Screen On: true Cuenta atr\xe1s (segundos):60 ] \n\tA3: Si (if) [ %atcommand ~ true ]\n\tA4: Establecer variable [ Nombre:%url A:%CLIP Calcular:Apagado A\xf1adir:Apagado ] \n\tA5: Separar variable [ Nombre:%url Separador:https://open.spotify.com/track/ Eliminar base:Apagado ] \n\tA6: AutoSpotify Tracks [ Configuraci\xf3n:Track: spotify:track:%url2\nImage Size: Medium Cuenta atr\xe1s (segundos):40 ] \n\t<Edit these values to your liking!!>\n\tA7: Establecer variable [ Nombre:%popularity A:%astrackpopularity1 - 15 Calcular:Encendido A\xf1adir:Apagado ] \n\tA8: Establecer variable [ Nombre:%songname A:%astrackname1 Calcular:Apagado A\xf1adir:Apagado ] \n\tA9: Si (if) [ %astrackartistnames1 ~R ', u' ]\n\tA10: Separar variable [ Nombre:%astrackartistnames1 Separador:', u" Eliminar base:Apagado ] \n\tA11: Establecer variable [ Nombre:%astrackartistnames1 A:%astrackartistnames1(1) Calcular:Apagado A\xf1adir:Apagado ] \n\tA12: Fin si (End if) \n\tA13: AutoTools Dialog [ Configuraci\xf3n:Dialog Type: Progress\nText: Get similar songs..\nText Size: 20\nUse HTML: false\nIndeterminate: true\nProgress Style: 0\nCurrent Progress: 0\nMax Progress: 100\nClose: false\nDim Background: true\nCancelable: true\nTurn Screen On: true Cuenta atr\xe1s (segundos):60 ] \n\t<Edit the values to your liking!!>\n\tA14: AutoWeb Web Service [ Configuraci\xf3n:API: Last.fm\nAPI Action: Get similiar songs\nTrack: %astrackname1\nArtist: %astrackartistnames1\nLimit: 30 Cuenta atr\xe1s (segundos):120 ] \n\tA15: Si (if) [ %track_name1 No ajust. ]\n\tA16: AutoTools Dialog [ Configuraci\xf3n:Dialog Type: Ok\nText: No similar songs found:/\nText Size: 20\nUse HTML: false\nDim Background: true\nCancelable: true\nTurn Screen On: true Cuenta atr\xe1s (segundos):60 ] \n\tA17: Detener [ Con error:Apagado Tarea: ] \n\tA18: Fin si (End if) \n\tA19: For [ Variable:%similarsongs \xcdtems:%track_name() ] \n\tA20: Array Clear [ Nombre:%astrackuri ] \n\tA21: Array Clear [ Nombre:%astrackpopularity ] \n\tA22: Sumar a variable [ Nombre:%array Valor:1 M\xf3dulo (wrap around):0 ] \n\tA23: AutoSpotify Tracks [ Configuraci\xf3n:Track: %track_name(%array) %artist_name(%array)\nExplicit: Get All\nTrack Popularity: >%popularity\nImage Size: Medium Cuenta atr\xe1s (segundos):40 Continuar Tarea Tras Error:Encendido ] \n\tA24: Si (if) [ %astrackuri1 Ajuste & %trackuri() !~R %astrackuri1 & %trackuri() !~R spotify:track:%url2 ]\n\tA25: Array Push [ Nombre:%trackuri Posici\xf3n:1 Valor:%astrackuri1 Rellenar Espacios:Apagado ] \n\tA26: Array Push [ Nombre:%trackpopularity Posici\xf3n:1 Valor:%astrackpopularity1 Rellenar Espacios:Apagado ] \n\tA27: Fin si (End if) \n\tA28: AutoTools Dialog [ Configuraci\xf3n:Dialog Type: Progress\nText: %trackuri(#) songs found!\nText Size: 20\nUse HTML: false\nIndeterminate: true\nProgress Style: 0\nCurrent Progress: 0\nMax Progress: 100\nClose: false\nDim Background: true\nCancelable: true\nTurn Screen On: true Cuenta atr\xe1s (segundos):60 ] \n\tA29: End For \n\tA30: Si (if) [ %trackuri(#) > 0 ]\n\tA31: AutoTools Arrays [ Configuraci\xf3n:Input Arrays: %trackpopularity()|%trackuri()|\nVertical Mode: false\nSeparator: |\nItem Separator: ,\nInput Is File: false\nNames: trackpopularity|trackuri\nSort Arrays: true\nInvert: true\nRandomize: false\nMerge Arrays: false\nMerged Array Name: atmergedarray\nUnique: false\nExact: false\nRegex: false\nCase Insensitive: false\nContains All: false\nClear For Name: false\nClear For All: false Cuenta atr\xe1s (segundos):60 ] \n\tA32: AutoWeb Web Service [ Configuraci\xf3n:API: Spotify\nAPI Action: My Account Info Cuenta atr\xe1s (segundos):120 ] \n\tA33: AutoTools Dialog [ Configuraci\xf3n:Dialog Type: Progress\nText: Creating playlist..\nText Size: 20\nUse HTML: false\nIndeterminate: true\nProgress Style: 0\nCurrent Progress: 0\nMax Progress: 100\nClose: false\nDim Background: true\nCancelable: true\nTurn Screen On: true Cuenta atr\xe1s (segundos):60 ] \n\tA34: AutoWeb Web Service [ Configuraci\xf3n:API: Spotify\nAPI Action: Create playlist\nUser Id: %my_user_id\nName: Similar songs to %songname\nPublic: false Cuenta atr\xe1s (segundos):120 ] \n\tA35: AutoSpotify Playlists [ Configuraci\xf3n:Playlist: %uri\nCreate If Doesn't Exist: true\nAdd Songs: %trackuri()\nImage Size: Medium Cuenta atr\xe1s (segundos):20 ] \n\tA36: AutoTools Dialog [ Configuraci\xf3n:Dialog Type: 2 Choices\nChoice One: No\nChoice One Command: false\nChoice Two: Yes\nChoice Two Command: true\nText: Playlist created! Wanna listen to it now? :) \nText Size: 20\nUse HTML: false\nDim Background: true\nCancelable: true\nTurn Screen On: true Cuenta atr\xe1s (segundos):60 ] \n\tA37: AutoSpotify Play Media [ Configuraci\xf3n:Media To Play: %uri\nLimit: 100\nPlay In Spotify: true\nImage Size: Medium Cuenta atr\xe1s (segundos):40 ] Si (if) [ %atcommand ~ true ]\n\tA38: Else \n\tA39: AutoTools Dialog [ Configuraci\xf3n:Dialog Type: Ok\nText: No songs found:/\nText Size: 20\nUse HTML: false\nDim Background: true\nCancelable: true\nTurn Screen On: true Cuenta atr\xe1s (segundos):60 ] \n\tA40: Fin si (End if) \n\tA41: Fin si (End if) \n\tA42: Fin si (End if) \n"] Cita:
A6 no se porque pero lo devuelve como array aunque uno le esté dando el id de en teoría una única canción. Y para mi más... esta es la parte en la que logré entender algo de todo lo que me explicaste y partes en las que no modifiqué nada porque así funcionaba. Desde A17 a A27 lo dejé como estaba porque no entendí el funcionamiento de array clear y arraypush (que quieres soy Odontólogo, Tasker ya no puedo decir que es un hobby, es mi obsesión (palabras de mi esposa)) Tomaré tus nuevas sugerencias para que la tarea sea más práctica y trataré de ver si puedo realizar la limpieza de popularidad, que aquí está el inconveniente de la playlist creada con canciones malas. Creo que en el perfil original en A23 con AUtospotify filtra y busca las canciones que se correspondan al par %track_name() %artist_name() obtenido en Last.fm por la popularidad Ahora si, no me apuren que me tomará unos días... Gracias Saludos |
| Gracias de parte de: | ||
|
#8
|
|
Bueno Willyweb, pude seguir casi todas tus indicaciones.
Modifiqué el evento para que se inicie cuando se copia un link de spotify, sacando el If de A1 viejo, eliminé el bucle de A14-16 viejo, eliminando %resultado y lo incluí en el bucle de búsqueda siguiente. Eliminé la variable %array y %similarsongs, utilizando %num como me habías explicado. Así queda por ahora Código:
Perfil: Similar Songs Spotify (109) Evento: Establecer variable [ Variable:%CLIP Valor:https://open.spotify.com/track/* User Variables Only:Apagado ] Entrada: Spotify Modificado (149) A1: AutoTools Dialog [ Configuración:Dialog Type: 2 Choices Choice One: No Choice One Command: false Choice Two: Yes Choice Two Command: true Text: Crear una playlist con canciones similares? Text Size: 20 Use HTML: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A2: Si (if) [ %atcommand ~ true ] A3: Establecer variable [ Nombre:%url A:%CLIP Calcular:Apagado Añadir:Apagado ] A4: Separar variable [ Nombre:%url Separador:https://open.spotify.com/track/ Eliminar base:Apagado ] A5: AutoWeb Web Service [ Configuración:API: Spotify API Action: Get a track Id: %url2 Cuenta atrás (segundos):120 ] A6: Establecer variable [ Nombre:%songname A:%trackname Calcular:Apagado Añadir:Apagado ] A7: Establecer variable [ Nombre:%popfiltro A:%popularity - 35 Calcular:Encendido Añadir:Apagado ] A8: AutoTools Dialog [ Configuración:Dialog Type: Progress Text: Obteniendo canciones... Text Size: 20 Use HTML: false Indeterminate: true Progress Style: 0 Current Progress: 0 Max Progress: 100 Close: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A9: AutoWeb Web Service [ Configuración:API: Last.fm API Action: Get similiar songs Track: %trackname Artist: %trackartistnames() Limit: 30 Cuenta atrás (segundos):120 ] A10: Si (if) [ %track_name(#) = 0 ] A11: AutoTools Dialog [ Configuración:Dialog Type: Ok Text: No se encontraron canciones Text Size: 20 Use HTML: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A12: Detener [ Con error:Apagado Tarea: ] A13: Fin si (End if) A14: For [ Variable:%num Ítems:1:%track_name(#) ] A15: Array Clear [ Nombre:%items_uri ] A16: Array Clear [ Nombre:%popularity ] A17: AutoWeb Web Service [ Configuración:API: Spotify API Action: Search tracks Q: %track_name(%num) %artist_name(%num) Filter Popularity: %popfiltro Cuenta atrás (segundos):120 ] A18: Si (if) [ %items_uri1 Ajuste & %trackuri() !~R %items_uri1 & %trackuri() !~R spotify:track:%url2 ] A19: Array Push [ Nombre:%trackuri Posición:1 Valor:%items_uri1 Rellenar Espacios:Apagado ] A20: Array Push [ Nombre:%trackpopularity Posición:1 Valor:%popularity1 Rellenar Espacios:Apagado ] A21: Fin si (End if) A22: AutoTools Dialog [ Configuración:Dialog Type: Progress Text: %trackuri(#) canciones encontradas! Text Size: 20 Use HTML: false Indeterminate: true Progress Style: 0 Current Progress: 0 Max Progress: 100 Close: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A23: End For A24: Si (if) [ %trackuri(#) > 0 ] A25: AutoWeb Web Service [ Configuración:API: Spotify API Action: My Account Info Cuenta atrás (segundos):120 ] A26: AutoTools Dialog [ Configuración:Dialog Type: Progress Text: Creando playlist. Text Size: 20 Use HTML: false Indeterminate: true Progress Style: 0 Current Progress: 0 Max Progress: 100 Close: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A27: AutoWeb Web Service [ Configuración:API: Spotify API Action: Create playlist User Id: %my_user_id Name: canciones similares a %songname Public: false Cuenta atrás (segundos):120 ] A28: AutoWeb Web Service [ Configuración:API: Spotify API Action: Add Tracks to a Playlist User Id: %my_user_id Playlist Id: %playlist_id Uris: %trackuri() Cuenta atrás (segundos):120 ] A29: AutoTools Dialog [ Configuración:Dialog Type: 2 Choices Choice One: No Choice One Command: false Choice Two: Yes Choice Two Command: true Text: Playlist creada! Escuchar ahora? Text Size: 20 Use HTML: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A30: Enviar Intent [ Acción:android.intent.action.VIEW Categ.:Default Tipo Mime: Datos:spotify:user:%my_user_id:playlist:%playlist_id Extra: Extra: Extra: Paquete: Clase: Objetivo:Activity ] A31: Else A32: AutoTools Dialog [ Configuración:Dialog Type: Ok Text: No se encontraron canciones similares Text Size: 20 Use HTML: false Dim Background: true Cancelable: true Turn Screen On: true Cuenta atrás (segundos):60 ] A33: Fin si (End if) A34: Fin si (End if) Lo nuevo que encontré es que se puede filtrar las consultas en Autoweb, pude utilizar la popularidad inicial, obtenida en A5, la copio a otra variable %popfiltro en A7 restando un margen que se puede modificar a gusto para calibrar lo que se obtiene, para en la búsqueda de Autoweb de la A17, así filtre los resultados para obtener canciones más populares. Mejorando el problema de obtener, covers, karaoke o instrumentales que eran las que obtenía mayormente, obteniendo playlist desastrosas. En el bucle A14-23: obtengo con el par %track_name() %artist_name(), %trackuri filtrado por %popfiltro. Me faltaría: A3-4 obtener el id con expresiones regulares (escucho ofertas) y sobre todas las cosas entender bien el rulo que hace con los arrayclear y arraypush que si bien lo pude manejar el copiado con tu ayuda, no podría hacerlo solo de nuevo. Está ya mucho más afinada y sobre todas las cosas, crea playlist más interesantes que la primer tarea.
Última edición por leromaro Día 22/07/16 a las 00:58:29 |
| Gracias de parte de: | ||
|
#9
|
|||
|
Me alegro de que te gustasen mis sugerencias.
![]() Cita:
Cita:
https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular Y puedes hacer experimentos aquí... https://regex101.com/#python La idea es crear una expresión que "saque" la parte del ID de la URL de una canción. Si las URLs que estás manejando son parecidas a las que se usan en la versión web del reproductor (es el que uso habitualmente) se parecerán a estas... https://play.spotify.com/track/69uxyAqqPIsUyTO8txoP2M https://play.spotify.com/track/5tf1VVWniHgryyumXyJM7w https://play.spotify.com/track/02QVxWave0pTc7P3UjDaVo La parte del ID son los últimos 22 caracteres, y en el "idioma" RegExp eso se dice así... \w{22}$ No te costará entender lo que hace esa expresión si revisas el primer enlace que te he dado. Pero, no te canses que no merece la pena. ![]() Al ir a poner eso en Tasker me he dado cuenta de que no es posible usar variables globales del sistema directamente en la acción de "Buscar y Reemplazar". Una pequeña faena. De todas formas, como no me gusta esa técnica de "Separar variable", creo eso se podrían escribir de una forma más "lógica"... Código:
A3: Establecer variable [ Nombre:%trackid A:%CLIP Calcular:Apagado Añadir:Apagado ] A4: Buscar y Reemplazar Contenido de Variable [ Variable:%trackid Buscar:https://play.spotify.com/track/ Reemplazar Coincidencias:Encendido Reemplazar Con: ] Lo que hacen esas dos acciones es guardar %CLIP (la URL completa) en %trackid y luego eliminar de %trackid la parte que sobra de la URL. El resultado es el mismo, pero me gusta más ... cada uno tiene sus manías. ![]() Cita:
http://tasker.dinglisch.net/userguide/en/variables.html (mira al final) La acción "Array Clear" borra todos los elementos de un array. En este caso se usa para garantizar que los arrays %items_uri y %popularity no contienen datos de la vuelta anterior del bucle A14-A23 antes de hacer la consulta de A17. La acción "Array Push" añade un elemento a un array en una posición concreta. Por cierto, puesto que has solucionado el tema de filtrar la popularidad directamente en la consulta creo que te sobran las acciones A16, A20 y cualquier referencia a esos arrays y variables. Última edición por WillyWeb Día 22/07/16 a las 08:37:35 |
| Los siguientes 2 usuarios han agradecido a WillyWeb su comentario: | ||
|
#10
|
|
Es que lo modifiqué después de copiado en el foro porque había hecho pruebas y me había quedado otro valor. Ahora edito para que quede bien
|
|
#11
|
|
Lo que quiero ahora es que comience a reproducir en modo aleatorio, estoy intentando hacerlo mediante un intent, pero creo que voy a utilizar Autoinput
Lo que logré hasta ahora es que si agregamos :play luego de el id de la playlist comenzará la reproducción Código:
A30: Enviar Intent [ Acción:android.intent.action.VIEW Categ.:Default Tipo Mime: Datos:spotify:user:%my_user_id:playlist:%playlist_id:play Extra: Extra: Extra: Paquete: Clase: Objetivo:Activity ] |
|
#12
|
|
|
Willyweb: has probado el perfil? puede ser que con la modificación del evento del perfil no funcione
Cita:
A mi me pasa eso, copi cualquier cosa al portapapeles y me salta el perfil. |
|
#13
|
|
|
Cita:
Aunque tengo un par de perfiles de este tipo, que ya me hicieron pensar un rato en su momento, he cometido el mismo error de nuevo. ![]() El contexto "Evento: Establecer variable" salta cuando la comparación entre "Variable:" y "Valor:" es positiva, y esa comparación se hace "al estilo Tasker". Ese "estilo" considera la barra / como un separador de opciones, lo que hace que esa cadena de caracteres (para nosotros una URL)... https://open.spotify.com/track/* ...sea interpretada por Tasker como... Que %CLIP sea igual a "https:", "nada", "open.spotify.com", "track" o "cualquier cosa" Por eso salta el perfil cada vez que se modifica %CLIP ![]() Si cambias la URL inicial por esto otro ... https*open.spotify.com*track* ..funcionará correctamente para tus propósitos. Perdona
|
| Gracias de parte de: | ||
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 22:38:04 (GMT +1)
HTCMania: líderes desde el 2007










