Coder Social home page Coder Social logo

jamesbrindle / ytmusicuploader Goto Github PK

View Code? Open in Web Editor NEW
123.0 13.0 19.0 242.51 MB

Automatically upload your music library and playlists to YouTube Music .Net Application. Upload songs to YouTube Music and bulk delete music and playlists from YouTube Music. C#.

License: MIT License

C# 100.00%
youtube-music musicbrainz upload-music music-library yt-music auto-upload ytmusicapi

ytmusicuploader's Introduction

YT Music Uploader

 

N|Solid

 

This project has now been archived

Unforuntately, YTM / Google has changed they way they authenticate again and I simply don't have time to keep reworking it. Thanks for the support guys, it was much appreciated.

 

Download Version 1.8.0 Installer

   

Application

This is a .Net application written in C# that uploads your personal music library to YouTube. It has a minimalistic UI for basic settings such as:

  • Choosing library folders.
  • Option to start the application with Windows (will start hidden, accessible via the System Tray):

N|Solid

  • Option to throttle the upload speed so it doesn't use all your bandwidth.

 

N|Solid

N|Solid

N|Solid    

Features

  • Connect and authenticate with YouTube Music.
  • Upload music to YouTube Music.
  • Automatic creation of YouTube Music playlists from local .m3u, .m3u8, .wpl, .pls, ,zpl playlist files.
  • Delete uploaded music from YouTube Music.
  • Delete playlists from YouTube Music.
  • Checks YouTube Music to see if the music file has already been uploaded. It will perform this check once per month on all watched library files and is quite dependant on music file meta data being present and accurate.
  • Add and remove library watch folders.
  • File system watcher to monitor for changes in watched folders.
  • Throttle upload bandwidth.
  • Start with Windows, minimized to the system tray area.
  • Reads music file tags, including cover art thumbnail.
  • If not all data is found in the tags of the music file, it will use the MusicBrainz API to look it up (including the cover art thumbail) (Fetching the details is purely for UI purposes. It has now impact of uploading to YouTube and doesn't write the results to the music file).
  • Show an upload log dialogue.
  • Show an issues log dialogue.

 

  • This application does not send any telemetry data of any kind to its source if the 'Send Diagnostic Data' checkbox is not set'
  • Valid music file formats are the same as YouTube Music: .flac, .m4a, .mp3, .oga, .wma
  • Valid music playlist file formats are: .m3u, .m3u8, .wpl, .pls, .zpl
  • Maximum number of files you can upload to YouTube Music is 100, 000
  • Maximum number of playlist items YouTube Music will allow is 5,000
  • Maximum file size YouTube Music will allow is 300 MB
  • Although you have the ability to delete from YouTube Music within the app, this application is strictly a one way synchronisation app.  

 

Reason for Creation

I used to have Google Play music and liked uploading my own content via its automatic library uploader application; I have a large library of music and you could stream your own uploaded songs from Google Play music without paying for a subscription...

Google Play music is on its way out in December and its replacement, YouTube Music doesn't currently have a library watcher application. You can only drag and drop manually into the browser for a limited number of songs... So, I decided to create one.

I got a subscription in the end, so some might consider this pointless in the world of streaming anything you want these days... So I suppose the only real benefit is the ability to:

  • Upload songs that aren't on YouTube music.
  • Backup your songs (you can't download them again from YouTube music, but you can use Google Takeout to get them).    

How it Works

Since, as far as I'm aware, YouTube Music doesn't have an official API to utilise. Therefore this application mimics the HTTP request and responses from the YouTube music site uses (F12 in Firefox is your friend).

YouTube Music uses an authentication cookie, and an authentication header consisting of a SAPISID hash from the cookie itself. Therefore, this application needs a browser so you can sign into YouTube in order to retrieve said cookie:  

N|Solid

N|Solid

N|Solid  

Technology

  • .Net 4.7.2
  • WinForms
  • SQLite    

IDE / Extensions

  • Microsoft Visual Studio 2019
  • Microsoft Visual Studio Installer Project    

Libraries

Tools

Special Thanks

  • sigma67 - Who created a Python YouTube Music API that I could reference. sigma67: Github.
  • wilsone8 - Who created a very fast Windows directory enumerator.
  • Dave Thomas - Who worked out how to get the SAPISID hash from the the YouTube Music authentication cookie on a post on StackOverflow.
  • 0xDEADBEEF - Who made a simple class to bandwidth throttle a byte stream on a post on StackOverflow.
  • avatar29A - For the MusicBrainz .Net API implementation.
  • DjSt3rios - For some WebView2 insight.
  • tmk907 - Who created a very good, easy to use, multi-type playlist reader. tmk907: Github.

Thanks for the Coffee

  • EdgeGuy13
  • Mew
  • CowtownChina
  • Someone
  • Someone
  • Stephen M
  • Brian A
  • @NourishedAIO
  • nishantranacrm
  • Oak
  • Emoniz
  • Ileach

   

ytmusicuploader's People

Contributors

jamesbrindle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.