package handlers import ( "fmt" "log" "net/http" "github.com/gorilla/mux" ) // GetVidsrcParserPlayer handles Vidsrc.to player with client-side parsing func (h *PlayersHandler) GetVidsrcParserPlayer(w http.ResponseWriter, r *http.Request) { log.Printf("GetVidsrcParserPlayer called: %s %s", r.Method, r.URL.Path) vars := mux.Vars(r) imdbId := vars["imdb_id"] mediaType := vars["media_type"] // "movie" or "tv" if imdbId == "" || mediaType == "" { http.Error(w, "imdb_id and media_type are required", http.StatusBadRequest) return } var embedURL string if mediaType == "movie" { embedURL = fmt.Sprintf("https://vidsrc.to/embed/movie/%s", imdbId) } else if mediaType == "tv" { season := r.URL.Query().Get("season") episode := r.URL.Query().Get("episode") if season == "" || episode == "" { http.Error(w, "season and episode are required for TV shows", http.StatusBadRequest) return } embedURL = fmt.Sprintf("https://vidsrc.to/embed/tv/%s/%s/%s", imdbId, season, episode) } else { http.Error(w, "Invalid media_type. Use 'movie' or 'tv'", http.StatusBadRequest) return } log.Printf("Generated Vidsrc embed URL: %s", embedURL) htmlDoc := generateClientParserHTML(embedURL, "Vidsrc Player") w.Header().Set("Content-Type", "text/html; charset=utf-8") w.Write([]byte(htmlDoc)) log.Printf("Successfully served Vidsrc parser player for %s: %s", mediaType, imdbId) } // GetVidlinkParserMoviePlayer handles Vidlink.pro parser for movies func (h *PlayersHandler) GetVidlinkParserMoviePlayer(w http.ResponseWriter, r *http.Request) { log.Printf("GetVidlinkParserMoviePlayer called: %s %s", r.Method, r.URL.Path) vars := mux.Vars(r) imdbId := vars["imdb_id"] if imdbId == "" { http.Error(w, "imdb_id is required", http.StatusBadRequest) return } embedURL := fmt.Sprintf("https://vidlink.pro/movie/%s", imdbId) log.Printf("Generated Vidlink movie embed URL: %s", embedURL) htmlDoc := generateClientParserHTML(embedURL, "Vidlink Player") w.Header().Set("Content-Type", "text/html; charset=utf-8") w.Write([]byte(htmlDoc)) log.Printf("Successfully served Vidlink parser movie player: %s", imdbId) } // GetVidlinkParserTVPlayer handles Vidlink.pro parser for TV shows func (h *PlayersHandler) GetVidlinkParserTVPlayer(w http.ResponseWriter, r *http.Request) { log.Printf("GetVidlinkParserTVPlayer called: %s %s", r.Method, r.URL.Path) vars := mux.Vars(r) tmdbId := vars["tmdb_id"] if tmdbId == "" { http.Error(w, "tmdb_id is required", http.StatusBadRequest) return } season := r.URL.Query().Get("season") episode := r.URL.Query().Get("episode") if season == "" || episode == "" { http.Error(w, "season and episode are required for TV shows", http.StatusBadRequest) return } embedURL := fmt.Sprintf("https://vidlink.pro/tv/%s/%s/%s", tmdbId, season, episode) log.Printf("Generated Vidlink TV embed URL: %s", embedURL) htmlDoc := generateClientParserHTML(embedURL, "Vidlink Player") w.Header().Set("Content-Type", "text/html; charset=utf-8") w.Write([]byte(htmlDoc)) log.Printf("Successfully served Vidlink parser TV player: %s S%sE%s", tmdbId, season, episode) } func generateClientParserHTML(embedURL, title string) string { return fmt.Sprintf(`