From 82b61c0af8553c2e355e424703223e9f4b8ac0e2 Mon Sep 17 00:00:00 2001 From: Jan-Niclas Walther Date: Sat, 4 May 2019 14:26:14 +0200 Subject: [PATCH] First commit --- foobar_yt_add.py | 55 +++++++++++++++++++++++++++++++++++++++++++++ youtube-links.xlsx | Bin 0 -> 11765 bytes 2 files changed, 55 insertions(+) create mode 100644 foobar_yt_add.py create mode 100644 youtube-links.xlsx diff --git a/foobar_yt_add.py b/foobar_yt_add.py new file mode 100644 index 0000000..5563d1d --- /dev/null +++ b/foobar_yt_add.py @@ -0,0 +1,55 @@ +from __future__ import print_function, unicode_literals +import pandas as pd +import os +import subprocess + + +def open_link_lib_in_foobar(): + if os.name == 'nt': + foo_cmd = r'"C:\Program Files (x86)\foobar2000\foobar2000.exe"'# + else: + foo_cmd = r'wine ~/.wine/drive_c/Program\ Files\ \(x86\)/foobar2000/foobar2000.exe' + + data = pd.read_excel('youtube-links.xlsx') + data = data[pd.notnull(data.active)] + data['fb2k_title'] = data.T.apply(lambda x: '{0} - [{1}] {2}'.format(*x[['fb2k_artist', 'fb2k_date', 'fb2k_album']].tolist())) + data = data.apply(lambda x: x.map(lambda y: (str(x.name)+'='+str(y)).replace(' ','%20').replace('\'','%27'))) + data.reset_index(inplace=1) + data = data[pd.notnull(data.active)].drop('active', axis=1).T.apply(lambda x: '&'.join(x)).tolist() + from pprint import pprint + pprint(data) + + subprocess.call(foo_cmd + r' /command:"New Playlist" /add ' + ' '.join(data)) + +def write_existing_links(): + links = [ + '3dydfy://www.youtube.com/watch?v=wo8aSo5Tv1E&fb2k_artist=Air&fb2k_album=Moon%20Safari&fb2k_title=Full%20Album&fb2k_date=1998&fb2k_genre=Electronica', + '3dydfy://www.youtube.com/watch?v=pmuFYVtV7d8&fb2k_artist=Baroness&fb2k_album=Blue%20Record&fb2k_title=Full%20Album&fb2k_date=2009&fb2k_genre=Metal', + '3dydfy://www.youtube.com/watch?v=B1hd5YCn9kE&fb2k_artist=Carcass&fb2k_album=Heartwork&fb2k_title=Full%20Album&fb2k_date=1993&fb2k_genre=Metal', + '3dydfy://www.youtube.com/watch?v=AFCGyucLses&fb2k_artist=Dissection&fb2k_album=The%20Somberlain&fb2k_title=Full%20Album&fb2k_date=1993&fb2k_genre=Metal', + '3dydfy://www.youtube.com/watch?v=6qoZXKHsHrs&fb2k_artist=Dragonforce&fb2k_album=Inhuman%20Rampage&fb2k_title=Full%20Album&fb2k_genre=Metal', + '3dydfy://www.youtube.com/watch?v=cCBMPdqDAS0&fb2k_artist=Focus&fb2k_album=Moving%20Waves&fb2k_title=Full%20Album&fb2k_date=1971&fb2k_genre=Rock', + '3dydfy://www.youtube.com/watch?v=xI5ARFrBqAA&fb2k_artist=Focus&fb2k_album=Hamburger%20Concerto&fb2k_title=Full%20Album&fb2k_date=1974&fb2k_genre=Rock', + '3dydfy://www.youtube.com/watch?v=MWtV4DACpVg&fb2k_artist=Jethro%20Tull&fb2k_album=A%20Passion%20Play&fb2k_title=Full%20Album&fb2k_date=1973&fb2k_genre=Rock', + '3dydfy://www.youtube.com/watch?v=FbP-RrveKjU&fb2k_artist=Mastodon&fb2k_album=Once%20More%20%27Round%20the%20Sun&fb2k_title=Full%20Album&fb2k_date=2014&fb2k_genre=Metal', + '3dydfy://www.youtube.com/watch?v=hdzJPCIAIdA&fb2k_artist=Origin&fb2k_album=Origin&fb2k_title=Full%20Album&fb2k_date=2000&fb2k_genre=Metal', + '3dydfy://www.youtube.com/watch?v=o2LKnTiUv8Q&fb2k_artist=Origin&fb2k_album=Antithesis&fb2k_title=Full%20Album&fb2k_date=2008&fb2k_genre=Metal', + '3dydfy://www.youtube.com/watch?v=dF5-yy-jopA&fb2k_artist=Pestilence&fb2k_album=Spheres&fb2k_title=Full%20Album&fb2k_date=1993&fb2k_genre=Metal', + '3dydfy://www.youtube.com/watch?v=WxXIEE-kpq8&fb2k_artist=Psycroptic&fb2k_album=The%20Scepter%20of%20the%20Ancients&fb2k_title=Full%20Album&fb2k_date=2003&fb2k_genre=Metal', + '3dydfy://www.youtube.com/watch?v=z9ZpI8Q0qkk&fb2k_artist=Riverside&fb2k_album=Rapid%20Eye%20Movement&fb2k_title=Full%20Album&fb2k_date=2007&fb2k_genre=Metal', + '3dydfy://www.youtube.com/watch?v=3zrbhzjo6O0&fb2k_artist=Riverside&fb2k_album=Anno%20Domini%20High%20Definition&fb2k_title=Full%20Album&fb2k_date=2009&fb2k_genre=Metal', + '3dydfy://www.youtube.com/watch?v=2lfBp_jBoIE&fb2k_artist=Rory%20Gallagher&fb2k_album=BBC%20Sesseions&fb2k_title=Full%20Album&fb2k_date=1999&fb2k_genre=Rock', + '3dydfy://www.youtube.com/watch?v=M7ZipHFZTaY&fb2k_artist=Spiral%20Architect&fb2k_album=A%20Sceptic%27s%20Universe&fb2k_title=Full%20Album&fb2k_date=2000&fb2k_genre=Metal', + '3dydfy://www.youtube.com/watch?v=eEsmxJvgcjU&fb2k_artist=The%20Sword&fb2k_album=Age%20of%20Winters&fb2k_title=Full%20Album&fb2k_date=2006&fb2k_genre=Metal', + ] + + links = pd.DataFrame([dict(entry.split('=') for entry in link.replace('3dydfy://','https://').replace('%20', ' ').split('&') ) for link in links ]) + links = links.rename(columns = {'https://www.youtube.com/watch?v': 'index'}) + links['index'] = links['index'].map(lambda x: 'https://www.youtube.com/watch?v='+x) + links.set_index('index', inplace=1) + del links.index.name + + links['fb2k_artist fb2k_album fb2k_title fb2k_date fb2k_genre'.split()].to_excel('links_out.xlsx') + +open_link_lib_in_foobar() +#~ write_existing_links() \ No newline at end of file diff --git a/youtube-links.xlsx b/youtube-links.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..00780b684c8ec0c40287e30152124da932ceb67e GIT binary patch literal 11765 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 F4*-MpjamQz literal 0 HcmV?d00001