Files
iptv-tools/core/fmm.go
2024-08-02 14:19:57 +08:00

93 lines
2.4 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package core
import (
"fmt"
"net/http"
"time"
)
func UpdateFmmIpv6M3u() {
filename := "./ipv6.m3u"
// 确保文件存在
if exists, err := EnsureFileExists(filename); err != nil {
fmt.Printf("检查或创建文件ipv6.m3u失败%s\n", err.Error())
return
} else if !exists {
fmt.Printf("缓存文件ipv6.m3u不存在\n")
return
}
URL := "https://mirror.ghproxy.com/https://raw.githubusercontent.com/fanmingming/live/main/tv/m3u/ipv6.m3u"
statusCode, responseBody, err := FetchURL(URL, 10*time.Second)
if err != nil {
fmt.Printf("HTTP请求失败%s\n", err.Error())
return
}
if statusCode != http.StatusOK {
fmt.Printf("HTTP状态码为%d\n", statusCode)
return
}
fileContent, err := ReadFile(filename)
if err != nil {
fmt.Printf("读取本地文件ipv6.m3u失败%s\n", err.Error())
return
}
if Md5(fileContent) != Md5(responseBody) {
file, err := WriteFile(filename, responseBody)
if err != nil {
fmt.Printf("写入文件ipv6.m3u失败%s\n", err.Error())
return
}
if !file {
fmt.Printf("写入文件ipv6.m3u失败\n")
return
}
fmt.Printf("ipv6.m3u本地更新云端数据成功\n")
} else {
fmt.Printf("ipv6.m3u本地与云端数据一致无需同步\n")
}
}
func UpdateFmmIpv6ToTxtM3u() {
ipv6TxtFilename := "./ipv6-txt.m3u"
if exists, err := EnsureFileExists(ipv6TxtFilename); err != nil {
fmt.Printf("检查或创建ipv6-txt.m3u文件失败%s\n", err.Error())
return
} else if !exists {
fmt.Printf("缓存文件ipv6-txt.m3u不存在\n")
return
}
URL := "https://fanmingming.com/txt?url=http://82.156.99.49:6677"
statusCode, responseBody, err := FetchURL(URL+"/ipv6-iptv.m3u", 10*time.Second)
if err != nil {
fmt.Printf("HTTP请求失败%s\n", err.Error())
return
}
if statusCode != http.StatusOK {
fmt.Printf("HTTP状态码为%d\n", statusCode)
return
}
fileContent, err := ReadFile(ipv6TxtFilename)
if err != nil {
fmt.Printf("读取本地文件ipv6-txt.m3u失败%s\n", err.Error())
return
}
if Md5(fileContent) != Md5(responseBody) {
file, err := WriteFile(ipv6TxtFilename, responseBody)
if err != nil {
fmt.Printf("写入文件ipv6-txt.m3u失败%s\n", err.Error())
return
}
if !file {
fmt.Printf("写入文件ipv6-txt.m3u失败\n")
return
}
fmt.Printf("ipv6-txt.m3u本地更新云端数据成功\n")
} else {
fmt.Printf("ipv6-txt.m3u本地与云端数据一致无需同步\n")
}
}