• This repository has been archived on 16/Apr/2019
  • Stars
    star
    154
  • Rank 242,095 (Top 5 %)
  • Language
    Python
  • Created almost 12 years ago
  • Updated about 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A FUSE filesystem for Google Music

GMusicFS

This is a FUSE filesystem for Google Music written in Python. It utilizes the unofficial gmusicapi written by Simon Weber.

This creates a filesystem that does the following:

  • Creates a directory of artists/<name of artist>/<albums>/<tracks>.
  • Access the cover image for each album as cover.jpg in the album directory.
  • Stream each track as an mp3 directly from the filesystem.

What this is useful for:

  • Copying a few tracks from Google Music directly to your hard drive (using a file manager or cp directly.)
  • Streaming music with mplayer or another simple music player.

What this is NOT useful for (yet..):

  • Importing all your music into iTunes, banshee, amarok etc. These big media players will attempt to read all the ID3 information from the files and not knowing that all the files are on a remote server. It might work, but it's going to be extremely inefficient and this might bring down the banhammer from Google..
  • Importing new music. The filesystem is read-only (this might change in a new version.)
  • Random-access within the mp3 files. You cannot seek() inside the mp3 files, they will only stream from the beginning of the file.

GMusicFS doesn't implement any caching. Copying a file should always work, because latency doesn't matter, but if you're streaming the music, you may want to turn on your player's caching system (eg. mplayer -cache 200.) You may notice a few blips in the sound during the first few seconds of each song without it. If you're on a low latency connection this might not affect you.

Installation

Installing GMusicFS requires two dependencies which currently cannot be resolved automatically:

Neither of these are able to be installed via setuptools at the current time. fusepy due to this bug and we currently require the development version of gmusicapi which is not on PyPI yet. No worries, we can install the dependencies manually:

pip install https://github.com/terencehonles/fusepy/tarball/master
pip install https://github.com/simon-weber/Unofficial-Google-Music-API/tarball/develop

Then install GMusicFS:

pip install https://github.com/EnigmaCurry/GMusicFS/tarball/master

Usage

Create a config file in ~/.gmusicfs:

[credentials]
username = [email protected]
password = your_password
deviceId = your_mobile_id

If you use 2-factor authentication, make sure you use an application specific password.

To find the device id, you may run gmusicfs with the parameter --deviceid after providing login informations.

gmusicfs --deviceid

Secure the configuration file so that no one else can read it (GMusicFS will complain about this if you forget):

chmod 600 ~/.gmusicfs

Command line parameters:

usage: gmusicfs [-h] [-f] [-v] [-vv] [-t] mountpoint

GMusicFS

positional arguments:
  mountpoint          The location to mount to

optional arguments:
  -h, --help          show this help message and exit
  -f, --foreground    Don't daemonize, run in the foreground.
  -v, --verbose       Be a little verbose
  -vv, --veryverbose  Be very verbose
  -t, --truefilesize  Report true filesizes (slower directory reads)
  --nolibrary         Don't scan the library at launch
  --deviceid          Get the mobile device ids bounded to your account

Example

Mount your music:

mkdir -p $HOME/google_music
gmusicfs $HOME/google_music

Unmount your music:

fusermount -u $HOME/google_music

More Repositories

1

blogofile

A static website compiler and blog engine written in Python.
Python
338
star
2

emacs

My GNU Emacs configuration
Emacs Lisp
137
star
3

arch-ppa

Create and maintain personal Arch linux package repositories
Shell
83
star
4

d.rymcg.tech

A collection of self-hosted docker-compose projects with Traefik reverse proxy, integrated auth, and administrative Makefiles for easy maintainance
Shell
47
star
5

blogofile_blog

A Blogofile blog plugin
Python
26
star
6

curlbomb

A personal HTTP(s) server for serving one-time-use shell scripts
Python
25
star
7

lazy-distro-mirrors

Squid reverse caching proxy for distro mirrors - dockerized
Mako
24
star
8

Single-JAR-Jython-Example

Example to show how to package a Jython application, along with 3rd party dependencies, as a single executable jar file
Java
22
star
9

Vaporfile

A tool to upload and synchronize static websites to the Amazon S3 cloud.
Python
22
star
10

SAP

A very simple computer written in Verilog, with a Python test bench
Verilog
17
star
11

archiso-ssh-remix

Remaster arch iso to start sshd by default, authorized_keys, wpa_supplicant.conf etc.
Shell
10
star
12

cycle-deepstream

Cycle.js driver for deepstream.io
TypeScript
10
star
13

blogofile.com

Python
9
star
14

blog.rymcg.tech

Shell
9
star
15

kick-ascii

mobile-first responsive asciinema-player
CSS
8
star
16

Arduino-Pro-Mini-Weather

Arduino Pro Mini Weather
C++
7
star
17

jython-shell-server

Embeds a network reachable, interactive, jython shell into any java application
Python
7
star
18

player_piano

HTML
6
star
19

terraform-serverless-spa

AWS terraformed serverless stack for a VueJS single page app.
HCL
5
star
20

ECSniff

The EnigmaCurry Network Sniffer
Python
4
star
21

midi-livecode

A MIDI live-coding environment for composition using isobar and Ableton Link
Python
4
star
22

news

CSS
4
star
23

nose-test-select

.gitignore style test selection for nose (file and method name globbing)
Python
3
star
24

enigmacurry.com

Vue
3
star
25

SpotMetal

An OpenOffice.org Calc extension to retrieve the current spot price of precious metals (gold, silver, platinum etc)
Python
3
star
26

archivebox-api-gateway

API wrapper service for ArchiveBox
Python
3
star
27

audacious-plugins

A few plugins for the Audacious media player
Python
3
star
28

site_pass.py

A password utility that generates unique per-domain passwords from a master password
Python
2
star
29

enigmacurry.github.com

EnigmaCurry GitHubPage
2
star
30

deepstream-test

TypeScript
2
star
31

k3s-wireguard-proxy

wireguard powered ngrok alternative with k3s
2
star
32

Sparkfun-LCD

A simple Python wrapper for the Sparkfun Graphic LCD Serial Backpack (LCD-09352)
Python
2
star
33

Steam-GameFAQs

An enhanced GameFAQs browser for the Steam in-game browser
Python
2
star
34

textile-py3k

Python3 version of textile
Python
2
star
35

blogofile_example_plugin

An example plugin for Blogofile - creates a minimal photo gallery
Python
2
star
36

python-markdown-py3k

A Python 3 version of markdown
Python
2
star
37

dotfiles

Shell
1
star
38

deepstream.io-storage-cassandra

Cassandra storage connector for deepstream.io
JavaScript
1
star
39

d.rymcg.tech_homepage-template

Dashboard template for d.rymcg.tech
1
star
40

docker-configurator

Python
1
star
41

barrel.rymcg.tech

1
star
42

tetromino-gdx

A Tetris clone written with libgdx
Java
1
star
43

gplus-mute-person

Mute People on Google+
JavaScript
1
star
44

rss2email-docker

Shell
1
star
45

ubuntu-notifications

Just a test of ubuntu notifcations.. not much here.
Python
1
star
46

sqlalchemy-magic

Just testing some sql alchemy magic
Python
1
star
47

cassandra-playground

Learning Cassandra
JavaScript
1
star
48

s3scrot

screenshot tool that uploads to Amazon S3 and copies URL to the clipboard
Python
1
star
49

EnigmaCurry-vcv-pack

EnigmaCurry's VCV Rack modules and patches
C++
1
star
50

JavaEE-playground

JavaScript
1
star
51

flask-template

Python
1
star
52

quake-dev

Makefile
1
star
53

nifty-filter

a template and configuration tool for netfilter / nftables
Rust
1
star