foo_httpcontrol 0.97.29 21 April 2024

https://bitbucket.org/oblikoamorale/foo_httpcontrol/wiki/Home

Licensed under New BSD License.

Warning/disclaimer: this software comes without any warranties at all. It is still in the very early development stage, and so on, and so forth, blah-blah-blah. Component can be very dangerous to your music collection when blindly exposed to Internet without any additional protection. Remember, it is intended for private, non-public use only!

This foobar2000 1.5+ component is developed as replacement for Media Player Classic web control interface, which I used quite a lot, but still didn't like it, as it missed quite a number of features I'd like to have. Also I felt it's a shame such great player as foobar2000 couldn't be remotely controlled over http nowadays. So, erm, I went ahead and somehow developed component featuring functions I use by myself on everyday basis.

It provides the following features via http requests:

Default interface template is written using synchronious document model (with basic CSS and JS), and has been tested and proved itself working on any modern browser: Opera, Firefox, Chrome, Safari.

Installation

Extract foo_httpcontrol.dll to foobar2000 components directory (%APPDATA%\foobar2000\user-components\foo_httpcontrol\). Alternatively you can use foobar2000 own installer: foobar2000/Preferences/Components/Install... and point it to foo_httpcontrol zip archive.

Download at least one template (http://www.hydrogenaudio.org/forums/index.php?showtopic=62218, https://bitbucket.org/oblikoamorale/foo_httpcontrol/wiki/Home) and follow bundled instructions to install it where it belongs.

Start foobar2000 and modify component settings according to your taste in preferences (foobar2000/Preferences/Tools/HTTP Control). Nothing prevents you from customizing any template you are using, or even writing your very own one.

Default configuration allows you to access foo_httpcontrol at least on http://127.0.0.1:8888/ address.

Well, that's all, try to have fun! Just in case: I'm preventively sorry for all possible frustration.

Preferences

foo_httpcontrol preferences
  1. Specifies the IP address and port used for listening to incoming connections. Both IP address and port must be valid, make sure specified port is not used by another program.
  2. Check or uncheck to enable or disable listening for incoming connections.
  3. Opens component page in default browser. Button is inactive if server/listener isn't started.
  4. Limit access to component by setting the allowed IP address. Connections initiated from other addresses will be discarded. Setting this to 0.0.0.0 allows all connections.
  5. Limit access to component by defining a login/password pair. Untick to disable passwords.
  6. Built-in file browser can be limited to certain paths of your file system. It is useful to simplify the browsing process or hide your secret files from prying eyes. For example, setting Allowed paths to d:\music|c:\temp\music|e:\ permits browsing only in these three file system branches. To additionally access Microsoft Network, add 'Network:' and '\\' (without quotes) to allowed paths.
  7. You can specify additional file extensions to be treated as playable files by built-in file browser. It is required for opening archives containing playable files.
  8. Ignore files with specific extensions in file browser.
  9. Urls of specified protocols are allowed to be enqueued by Browse command. Enables enqueueing of urls handled by 3rd party components like foo_youtube (3dydfy protocol).
    Suggested value: http|https
  10. Removes all files which foobar2000 core considers unplayable from built-in file browser.
  11. Specifies path where component will look for template files. Pressing Open opens specified or default directory in Explorer. If not sure, leave it blank.
  12. Enables gzip compression of component output. Enabling it is usually harmless and quite beneficial as component generates a lot of text which is very compressible. Disable if you are using some funky browser and having unexpected problems.
  13. Enables logging of component access data to foobar2000 console. Useful for debugging etc.
  14. Adds "Stop after queue" item in Playback menu. It works exactly as it's named, stops playback when end of playback queue is reached.
Don't forget to press Apply or your changes won't have any effect until fb2k is restarted.

Troubleshooting

Discussion thread (please post all your questions and suggestions here): http://www.hydrogenaudio.org/forums/index.php?showtopic=62218

Changes history 2024

v0.97.29 21 Apr

Changes history 2023

v0.97.28 21 May

v0.97.27 12 May

v0.97.26 09 May

v0.97.25 25 Mar

v0.97.24 15 Feb

v0.97.23 11 Feb

v0.97.22 23 Jan

v0.97.21 16 Jan

Changes history 2022

v0.97.20 03 Dec

v0.97.19 30 Sep

v0.97.18 09 Sep

Changes history 2016

v0.97.17 14 Jan

v0.97.16 13 Jan

Changes history 2014

v0.97.15 02 Mar

v0.97.14 02 Mar

Changes history 2013

v0.97.13 21 Jan

Changes history 2011

v0.97.12 14 Aug

v0.97.11 20 Jul

v0.97.9 04 Jul

v0.97.8 14 May

v0.97.7 7 Mar

v0.97.6 24 Jan

v0.97.5 22 Jan

Changes history 2010

v0.97.4 21 Dec

v0.97.3 15 Nov

v0.97.2 31 Oct

v0.97 24 Sep

v0.96.16 23 Sep

v0.96.15 13 Sep

v0.96.14 08 Aug

v0.96.13.1 04 May

v0.96.13 03 May

v0.96.12.1 19 Apr

v0.96.12 17 Apr

v0.96.11 10 Apr

v0.96.10 04 Apr

v0.96.9 30 Mar

v0.96.8 22 Mar

v0.96.7 21 Mar

v0.96.6 15 Mar

v0.96.5 22 Feb

v0.96.4 23 Jan

v0.96.3 06 Jan

v0.96.2 05 Jan

Changes history 2009

v0.96.1 29 Dec

Appendix #1

Bundled foobar2000 icon (c) 2007 Florian Trendelenburg

foo_httpcontrol is developed using:

Appendix #2

Command syntax: http://>ip<[:<port>]/<?cmd=Command[&param1=param 1[&param2=param 2]][&param3=param 3]>

Supported commands:

Appendix #3

Template macro substitutions:

Appendix 4

Sample template config file. Config file should be named config and put to template directory root.

; default template configuration file
;
[foo_httpcontrol]
; base url of template. for example, if template is invoked as http://ip:port/template/, put / here.
url=/
; defines formatting of a playlist row using foobar2000 titleformatting.
playlist_row=<td>%album artist% - %album% - %tracknumber% - %title% - %length%
; defines formatting of a helper macros using foobar2000 titleformatting.
helper1=%album artist% - %title%
helper2=[%title% - ]
helper3=%codec% %bitrate%kbps %samplerate%Hz %channels%
; specifies wildcards where we should look for albumart files, separated by |. foobar2000 titleformatting is available there as well.
; if embedded art is preferred, embeddded front cover art is returned instead.
albumart=$directory_path(%path%)\folder.jpg|$directory_path(%path%)\*.jpg
; specifies path of a picture to show when albumart is not found.
albumart_not_found=default/nocover.jpg
; specifies path of a picture to show when albumart is requested but not currently available (no playing track).
albumart_not_available=default/nocover.jpg
; specifies wildcards where we should look for discart files, separated by |. foobar2000 titleformatting is available there as well.
; if embedded art is preferred, embedded disc art is returned instead.
discart=$directory_path(%path%)\cd*.png|$directory_path(%path%)\vinyl*.png|$directory_path(%path%)\cd*.jpg|$directory_path(%path%)\disc*.jpg
; specifies path of a picture to show when discart is not found.
discart_not_found=default/nocover.jpg
; specifies path of a picture to show when discart is requested but not currently available (no playing track).
discart_not_available=default/nocover.jpg
; limits maximum albumart size to download, in bytes. default is 0 - no limit.
albumart_limit_size=0
; setting to 1 favors embedded albumart over external. default is 0.
albumart_prefer_embedded=0
; controls size of a playlist 'page'. setting to 0 completely disables playlist generation. default is 30.
playlist_items_per_page=30
; controls maximum size of playlist 'page'. setting it to 0 removes restriction. playlist_items_per_page_max=100