Browse Source

feat: remove YouTube video page subscription finder because `meta[itemprop="channelId"]` no longer exists

Frédéric Guillot 1 year ago
parent
commit
cb97d4a1a8
2 changed files with 0 additions and 64 deletions
  1. 0 42
      internal/reader/subscription/finder.go
  2. 0 22
      internal/reader/subscription/finder_test.go

+ 0 - 42
internal/reader/subscription/finder.go

@@ -29,7 +29,6 @@ type youtubeKind string
 
 const (
 	youtubeIDKindChannel  youtubeKind = "channel"
-	youtubeIDKindVideo    youtubeKind = "video"
 	youtubeIDKindPlaylist youtubeKind = "playlist"
 )
 
@@ -102,12 +101,6 @@ func (f *SubscriptionFinder) FindSubscriptions(websiteURL, rssBridgeURL string)
 			if localizedError != nil {
 				return nil, localizedError
 			}
-		case youtubeIDKindVideo:
-			slog.Debug("Try to detect feeds from YouTube video page", slog.String("website_url", websiteURL))
-			subscriptions, localizedError = f.FindSubscriptionsFromYouTubeVideoPage(websiteURL)
-			if localizedError != nil {
-				return nil, localizedError
-			}
 		case youtubeIDKindPlaylist:
 			slog.Debug("Try to detect feeds from YouTube playlist page", slog.String("website_url", websiteURL))
 			subscriptions, localizedError = f.FindSubscriptionsFromYouTubePlaylistPage(websiteURL)
@@ -319,37 +312,6 @@ func (f *SubscriptionFinder) FindSubscriptionsFromYouTubeChannelPage(websiteURL
 	return nil, nil
 }
 
-func (f *SubscriptionFinder) FindSubscriptionsFromYouTubeVideoPage(websiteURL string) (Subscriptions, *locale.LocalizedErrorWrapper) {
-	kind, _, err := youtubeURLIDExtractor(websiteURL)
-	if err != nil {
-		slog.Debug("Could not parse url", slog.String("website_url", websiteURL))
-	}
-
-	if kind != youtubeIDKindVideo {
-		slog.Debug("This website is not a YouTube video page, the regex doesn't match", slog.String("website_url", websiteURL))
-		return nil, nil
-	}
-
-	responseHandler := fetcher.NewResponseHandler(f.requestBuilder.ExecuteRequest(websiteURL))
-	defer responseHandler.Close()
-
-	if localizedError := responseHandler.LocalizedError(); localizedError != nil {
-		return nil, localizedError
-	}
-
-	doc, docErr := goquery.NewDocumentFromReader(responseHandler.Body(config.Opts.HTTPClientMaxBodySize()))
-	if docErr != nil {
-		return nil, locale.NewLocalizedErrorWrapper(docErr, "error.unable_to_parse_html_document", docErr)
-	}
-
-	if channelID, exists := doc.Find(`meta[itemprop="channelId"]`).First().Attr("content"); exists {
-		feedURL := fmt.Sprintf(`https://www.youtube.com/feeds/videos.xml?channel_id=%s`, channelID)
-		return Subscriptions{NewSubscription(websiteURL, feedURL, parser.FormatAtom)}, nil
-	}
-
-	return nil, nil
-}
-
 func (f *SubscriptionFinder) FindSubscriptionsFromYouTubePlaylistPage(websiteURL string) (Subscriptions, *locale.LocalizedErrorWrapper) {
 	kind, id, _ := youtubeURLIDExtractor(websiteURL)
 
@@ -385,10 +347,6 @@ func youtubeURLIDExtractor(websiteURL string) (idKind youtubeKind, id string, er
 		idKind = youtubeIDKindPlaylist
 		id = decodedUrl.Query().Get("list")
 		return
-	case strings.HasPrefix(decodedUrl.Path, "/watch"):
-		idKind = youtubeIDKindVideo
-		id = decodedUrl.Query().Get("v")
-		return
 	case strings.HasPrefix(decodedUrl.Path, "/playlist"):
 		idKind = youtubeIDKindPlaylist
 		id = decodedUrl.Query().Get("list")

+ 0 - 22
internal/reader/subscription/finder_test.go

@@ -32,13 +32,6 @@ func TestFindYoutubePlaylistFeed(t *testing.T) {
 	}
 }
 
-func TestItDoesNotConsiderPlaylistWatchPageAsVideoWatchPage(t *testing.T) {
-	_, localizedError := NewSubscriptionFinder(nil).FindSubscriptionsFromYouTubeVideoPage("https://www.youtube.com/watch?v=dQw4w9WgXcQ&list=PLOOwEPgFWm_N42HlCLhqyJ0ZBWr5K1QDM")
-	if localizedError != nil {
-		t.Fatalf(`Should not consider a playlist watch page as a video watch page`)
-	}
-}
-
 func TestYoutubeIdExtractor(t *testing.T) {
 	type testResult struct {
 		ID    string
@@ -46,21 +39,6 @@ func TestYoutubeIdExtractor(t *testing.T) {
 		error error
 	}
 	urls := map[string]testResult{
-		"https://www.youtube.com/watch?v=dQw4w9WgXcQ": {
-			ID:    "dQw4w9WgXcQ",
-			Kind:  youtubeIDKindVideo,
-			error: nil,
-		},
-		"https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=1": {
-			ID:    "dQw4w9WgXcQ",
-			Kind:  youtubeIDKindVideo,
-			error: nil,
-		},
-		"https://www.youtube.com/watch?t=1&v=dQw4w9WgXcQ": {
-			ID:    "dQw4w9WgXcQ",
-			Kind:  youtubeIDKindVideo,
-			error: nil,
-		},
 		"https://www.youtube.com/watch?v=dQw4w9WgXcQ&list=PLOOwEPgFWm_N42HlCLhqyJ0ZBWr5K1QDM": {
 			ID:    "PLOOwEPgFWm_N42HlCLhqyJ0ZBWr5K1QDM",
 			Kind:  youtubeIDKindPlaylist,