After a long time (I won’t go into how miserable I am because of where I live :'( ) I have programmed something small again. Well, not entirely me, this is a mash-up of programs by 3 people:
- The person who made the GUI you see, I only modified it
- Another program could only download one video at a time, but it could actually download, which the first program couldn’t
- My own code
So what can the program actually do: It can download in 5 ways in total, namely:
- Searching via the YouTube API for a given phrase, up to 999 videos; then downloading the selected ones
- Searching via the YouTube API for a given phrase, up to 999 videos; then downloading all of them
- Parsing the source code of the search results with no limit on the number; then downloading the selected ones
- Parsing the source code of the search results with no limit on the number; then downloading all of them
- Loading videos into the clipboard and downloading them directly from supported servers (currently only YouTube)
I will probably add these download modes as well:
- An option to turn on clipboard monitoring, so that addresses of YT videos are loaded from the clipboard and inserted into the program; downloading will probably start only after the user confirms they have finished inserting, but there may be another option too
- Entering addresses into the program’s
TextBoxmanually - Deep automatic search – that is, you enter the address of the first search: and set how far it should parse further, so only the number at the end changes. The problem is that I didn’t manage to implement any browser or engine (Trident, Gecko, WebKit), and without logging in or other personalization it doesn’t show such good results; if I manage to solve this, I will definitely implement it
- Gradually adding newly parsed results – this is a replacement for point 4) until I manage to solve it..
By default the program downloads in format MP4. If MP4 HD 720 is available, it downloads in that; if not, it tries MP4 480, and if that isn’t available either, it downloads in FLV 240 – which all videos should have available.
The plan is also to detect whether the file/video has already been downloaded. For that I will have to write my own media library. It took me quite a long time (almost 5 days) to write this. First I tried those WebBrowser controls, which I didn’t get working, then the XmlDocument class didn’t work for me. I wanted to load the XML into it in a loop and fix whatever error it threw each time. The thing is, the HTML code of YT isn’t entirely valid.
But then it started throwing completely nonsensical errors, so I gave up on it and today I finished writing an XmlParser that fixed those errors for me and told me about all the tags that were in it. I would also like to teach the program to download favorites playlists and other playlists (there may be some API for other playlists, I don’t know about favorites). I wanted to write more here, but my memory really isn’t serving me anymore.. :'(


