✓ RPA Challenge 5 - Explore new music

Hello and welcome to new challenge!

This time I prepared quite easy challenge with a pleasant outcome. With a help of our robot, we will get inspired with some music you probably never heard before.

We will work with this website: Free Music Archive, full of new and unexplored music. Free Music Archive = FMA is a great source of music for video & film makers, but also for casual listeners. Not all of the music is free for commercial use without contribution to author, but you certainly can download and play it at home or for example in your car :slight_smile:

So, what is the goal? What should the robot do?

  1. Gives you option to select a main genre (as seen in top menu “Genres”)
  2. Picks 10-40 songs of that genre (I will leave it up to you) and downloads them one by one.
    – you can utilize also the “Charts” section, where each chart can be narrowed down by selecting a genre (look around and explore)

And that’s it!
You will practice web automation, data scraping and maybe some activities related to files and downloading? :slight_smile: I am looking forward how you will challenge this task!

How to participate?

When you are done, please send me your code to PM.

And as usual - first 3 correct, original solutions earn 3 robopoints, next get 1 robopoint.
Check the Leaderboard here.

Challenge deadline is 18.4. by the end of the day. You can still submit your projects after the deadline but you cannot earn robopoints. New challenge is published every week or 2 weeks so don’t worry if you did not catch this one. Keep in mind, your submitted files may be published after the deadline so others can learn from solutions.

4 Likes

image

Nice exercise! Not that hard actually, although maybe my method was quick and dirty?. 30 minutes from starting the project to having 8 (not 10 :wink: but it’s just a variable) mp3’s downloaded… for sure going to use some of this music for some epic videos!!

1 Like

Once more a very cool challenge! Thanks! I will not be able to do that one as this webiste is rejecting Python web scrapers :wink: .

1 Like

Great and interesting challenge! I am sending my workflow to your PM, Roman. :slight_smile:

Time is up! :timer_clock:

I hope you enjoyed this challenge and strained your :brain: a lot!

Solution

Let’s dive a bit into how to solve this challenge.
You probably will get into some trouble already in the beginning. The first task is to extract the Genres from the menu and then display to human as a list to pick one.

Using Data scraping wizard can get tricky since you will soon realize that the Genres menu keeps hiding from you. One little trick will solve this. In the browser, click F12. This will display the Inspection panel. Click this icon obrazek and then click on the “Genres” in menu.

In the source code, that will be shown in the Inspection panel, locate this line:
obrazek
and change the parameter

style="display: none;"

to

style="display: block;"

as it is in the picture :slight_smile:
The sub-menu is now visible and will be unless you hover over it and move your cursor away. Then you have to repeat it. Make sure you tick the Extract URL option in the wizard.

Now when we have the Genres stored in DataTable, we have to convert the content of it to an array of Strings. I used help of LINQ expressions in Assign activity:

GenresDT.AsEnumerable().Select(Function (a) a.Field(of string)(“Column1”).ToString).ToArray()

For Input Dialog activity, we provide this array to parameter Options.

Next challenge is to based on users choice, retrieve from the datatable the URL. I helped myself with .Select method:

GenresDT.Select("[Column1] = '"+picked_genre+"'")(0)(1).ToString

This selects second column from first row of result of Select method searching for rows where Column1 = the result of Input Dialog.

As for this website, data scraping does not really work for the download buttons, I use Find Children activity, where Selector is the whole area with the songs and Filter parameter is set as:

"<webctrl aaname='Download' tag='A' />"

This gives me all the UiElements of the download arrows.
The last thing is to use For Each of the UiElements and click download (and work with the popup).

I also use Wait for Download activity. Why - description is in the solution workflow.

Download solution :arrow_double_down:

You can download and explore the solution here:
0501_solution.zip (575.3 KB)
Note: Before you run it, change the Download path in Wait for Download activity to yours download folder :slight_smile:

Who earned points?

So, the only fully working solution that came to me was from @radim.dom this time! So big congratulations and +3 robopoints for you!
The solution from @johannesvanwijk was working only partially (the first part - pick the genre was missing), so I have to give only +2 robopoints. But overall good work! Keep going! :slight_smile:

You can check the Leaderboard for your points :slight_smile:

Thank you for your participation! If you have any question to this Challenge, please do Reply! :heart:

1 Like

Hi!
For those who want to learn how to solve this challenge with UiPath, watch my RPA Fridays webinar recording:

Join me for another RPA Fridays! https://cutt.ly/YT_RPAFridaysFBGroup :robot:

1 Like