Browse Source

support http header "range" (needed for videos in safari)

master
Nicolas Massé 6 years ago
parent
commit
f079a64a56
  1. 6
      README.md
  2. 5
      http.go
  3. 15
      media_store.go

6
README.md

@ -96,7 +96,13 @@ service photo-bot enable
service photo-bot start
```
## Useful notes
Video autoplay is tricky:
- On Firefox, you have to interact with the page first (click somewhere in the page)
- On Safari, you have to [explicitly enable auto-play for this website](https://support.apple.com/fr-fr/guide/safari/ibrw29c6ecf8/mac)
- On Chrome, it seems to be enabled out-of-the-box
## Documentation

5
http.go

@ -2,7 +2,6 @@ package main
import (
"html/template"
"io"
"io/ioutil"
"log"
"net/http"
@ -200,14 +199,14 @@ func (bot *PhotoBot) HandleGetMedia(w http.ResponseWriter, r *http.Request, albu
albumName = ""
}
fd, err := bot.MediaStore.OpenFile(albumName, mediaFilename)
fd, modtime, err := bot.MediaStore.OpenFile(albumName, mediaFilename)
if err != nil {
log.Printf("MediaStore.OpenFile: %s", err)
bot.HandleError(w, r)
return
}
defer fd.Close()
io.Copy(w, fd) // Best effort
http.ServeContent(w, r, mediaFilename, modtime, fd)
}
func (bot *PhotoBot) ServeHTTP(w http.ResponseWriter, r *http.Request) {

15
media_store.go

@ -122,12 +122,23 @@ func (store *MediaStore) ListAlbums() (AlbumList, error) {
return albums, nil
}
func (store *MediaStore) OpenFile(albumName string, filename string) (*os.File, error) {
func (store *MediaStore) OpenFile(albumName string, filename string) (*os.File, time.Time, error) {
if albumName == "" {
albumName = ".current"
}
return os.OpenFile(filepath.Join(store.StoreLocation, albumName, filename), os.O_RDONLY, 0600)
path := filepath.Join(store.StoreLocation, albumName, filename)
stat, err := os.Stat(path)
if err != nil {
return nil, time.Time{}, err
}
fd, err := os.OpenFile(path, os.O_RDONLY, 0600)
if err != nil {
return nil, time.Time{}, err
}
return fd, stat.ModTime(), nil
}
func (store *MediaStore) GetAlbum(name string, metadataOnly bool) (*Album, error) {

Loading…
Cancel
Save