-
Notifications
You must be signed in to change notification settings - Fork 8
/
facebook.go
47 lines (42 loc) · 1.02 KB
/
facebook.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package extractors
import (
"fmt"
"github.com/iawia002/annie/downloader"
"github.com/iawia002/annie/request"
"github.com/iawia002/annie/utils"
)
// Facebook download function
func Facebook(url string) downloader.VideoData {
html := request.Get(url, url)
title := utils.MatchOneOf(html, `<title id="pageTitle">(.+)</title>`)[1]
format := map[string]downloader.FormatData{}
var tag string
for _, quality := range []string{"sd", "hd"} {
tag = quality
u := utils.MatchOneOf(
html, fmt.Sprintf(`%s_src_no_ratelimit:"(.+?)"`, quality),
)[1]
size := request.Size(u, url)
urlData := downloader.URLData{
URL: u,
Size: size,
Ext: "mp4",
}
if quality == "hd" {
tag = "default"
}
format[tag] = downloader.FormatData{
URLs: []downloader.URLData{urlData},
Size: size,
Quality: quality,
}
}
extractedData := downloader.VideoData{
Site: "Facebook facebook.com",
Title: utils.FileName(title),
Type: "video",
Formats: format,
}
extractedData.Download(url)
return extractedData
}