## Enabling
Enable via preferences (show all). When logging in from a browser, leave the user field blank and just enter the password.
You can specify the port and password via the `--http-port` and `--http-password` arguments.
## Default http port
Windows: in `%appdata%/vlc` edit `vlcrc`, if necessary uncomment the `http-port` line and set it accordingly:
```
http-port=7999
```
## Convenience scripts
### Php and Chrome
For convenience,
I setup a 'search engine' in Chrome so that `vl hostname/port` expands to `http://my-pi/vlc/host/port` which,
in turn, is serviced by the following php:
```php
"localhost", "t" => "randomturnip", "b" => "bumblesnarf" ]; # shorthands for common host names
if( preg_match("@^/vlc/($hostre)/(\d+)$@",$a,$m) ) {
$host = get_host($m[1]);
$port = get_port($m[2]);
vlc_redirect($host,$port);
} else if( preg_match("@^/vlc/(\d+)$@",$a,$m) ) {
$host = "localhost";
$port = get_port($m[1]);
#echo "$host $port";
vlc_redirect($host,$port);
} else if(preg_match("@^/($hostre)/(\d+)$@",$a,$m)) {
$host = get_host($m[1]);
$port = get_port($m[2]);
vlc_redirect($host,$port);
} else {
echo "invalid port: use http://my-pi/\$vlc_host/\$port_no
or http://my-pi/vlc/\$vlc_host/\$port_no\n";
exit();
}
```
and the following `.htaccess`
```plaintext
RewriteEngine On
RewriteBase /
RewriteRule ^vlc/.* vlc_host_login.php [L]
```
### Telnet and Expect
I have [Cygwin](/aw/os/windows/CygWin) installed, and [expect](https://en.wikipedia.org/wiki/Expect) installed. Then I have the following `expect` and [Python](/aw/lang/python) scripts.
Use via `tvlc hostname portoffset` e.g. `tvlc t410 3` for e.g. port 7003 (I put all my vlc instances in the range 7000...7199).
```expect
#!/usr/bin/expect
set timeout 5
set host "[lindex $argv 0]"
set tport "[lindex $argv 1]"
puts "tport '$tport'"
if { $tport == "" } {
set tport 0
}
set port "[expr 7000 + $tport]"
set password "tree"
spawn telnet $host $port
expect "Password:"
send "$password\r"
expect "Welcome, Master"
interact
```
Use via `tvlcmd hostname portoffset "command 1 with args" "command 2 with args"` where each argument is one line of input for the telnet session.
```python
#!/usr/bin/python
from subprocess import run, Popen, PIPE
import sys
import os
import time
import tempfile
import platform
if platform.system() == "Darwin":
telnet = "gtelnet"
else:
telnet = "telnet"
a = r"""set timeout 5
set host "[lindex $argv 0]"
set tport "[lindex $argv 1]"
puts "tport '$tport'"
if { $tport == "" } {
set tport 0
}
set port "[expr 7000 + $tport]"
set password "tree"
spawn TELNET $host $port
expect {
timeout { puts "timeout pw" ; exit 1 }
"Password:"
}
send "$password\r"
expect {
timeout { puts "timeout welcome" ; exit 1 }
"Welcome, Master"
}
expect {
timeout { puts "timeout prompt" ; exit 1 }
"> "
}
""".replace("TELNET",telnet)
b="""
expect {
timeout { puts "timeout prompt" ; exit 1 }
"> "
}
"""
# shorthands so we can write e.g. "tvlcmd b 10 pause" rather than "tvlcmd boink 10 pause"
d = {
".": "localhost",
"lh": "localhost",
"b": "boink",
"s": "snarf",
"f2": "frodo2",
"f3": "frodo3"
}
args = sys.argv[1:]
try:
if len(args) == 1:
host = os.getenv('vlc_host',os.getenv('host','localhost'))
port = int(os.getenv('rp',os.getenv('port',0)))
elif len(args) == 2:
host = os.getenv('vlc_host',os.getenv('host','localhost'))
port, *args = args
elif len(args) == 0:
raise ValueError()
else:
host, port, *args = args
except ValueError:
print(f"{sys.argv[0]} [...]")
for k,v in d.items():
print(f" {k} => {v}")
exit(1)
if host in d:
host = d[host]
# shorthands so that we can type e.g. "tvlcmd . 10 p" instead of "tvlcmd localhost 10 play"
argm = """
p play
pa pause
pl play
pls playlist
s status
""".strip()
argd = { # shorthands
k:v for k,v in [x.split(" ",1) for x in argm.splitlines()]
}
def sh(x):
y=x
if x[0] == 'v' and x[1:].isnumeric():
x = 'volume '+x[1:]
elif x[:3] == 'vol' and x[3:].isnumeric():
x = 'volume '+x[3:]
elif x[:2] == "vx" and x[2:].isnumeric():
a = int(x[2:])*(2550/100.0)
a = int(a)
x = f'volume {a}'
elif x[0] == 'g' and x[1:].strip().isnumeric():
x = 'goto '+x[1:].strip()
elif x in argd:
x = argd[x]
print(f"{y} => {x}")
return x
args = [sh(arg.replace('"','\"')) for arg in args]
args = [(f"send \"{arg}\\r\"\n"+b if not arg.startswith("sleep ") else arg) for arg in args]
scr="\n".join([a]+args+['puts ""'])
with Popen(["expect","-f","-",host,str(port)],stdin=PIPE) as proc:
proc.communicate(input=scr.encode())
```