@@ -676,6 +676,16 @@ func (c *AllAnimeClient) processSourceURLsConcurrent(sourceURLs []string, qualit
676676
677677 for i , sourceURL := range sourceURLs {
678678 go func (idx int , url string ) {
679+ if c .isDirectProviderURL (url ) {
680+ results <- result {
681+ index : idx ,
682+ sourceURL : url ,
683+ links : map [string ]string {
684+ "direct" : url ,
685+ },
686+ }
687+ return
688+ }
679689
680690 links , err := c .getLinks (url )
681691 if err != nil {
@@ -778,6 +788,10 @@ func (c *AllAnimeClient) getPriorityScore(url string) int {
778788 return 0
779789}
780790
791+ func (c * AllAnimeClient ) isDirectProviderURL (sourceURL string ) bool {
792+ return strings .Contains (sourceURL , "tools.fast4speed.rsvp" )
793+ }
794+
781795// extractSourceURLs extracts source URLs from the API response
782796func (c * AllAnimeClient ) extractSourceURLs (response string ) []string {
783797 // Check if the response contains a "tobeparsed" blob (AES-encrypted source URLs).
@@ -905,8 +919,8 @@ func (c *AllAnimeClient) getLinks(sourceURL string) (map[string]string, error) {
905919 return nil , fmt .Errorf ("failed to create request: %w" , err )
906920 }
907921
908- // Use the same headers as Curd for better compatibility
909- req .Header .Set ("Referer" , "https://allanime.to" )
922+ // Match ani-cli: AllAnime's current providers expect the allmanga referer.
923+ req .Header .Set ("Referer" , c . referer )
910924 req .Header .Set ("User-Agent" , "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/121.0" )
911925
912926 resp , err := c .client .Do (req ) // #nosec G704
@@ -1079,6 +1093,13 @@ func (c *AllAnimeClient) selectQuality(links map[string]string, requestedQuality
10791093 return url , metadata
10801094 }
10811095
1096+ if url , exists := links ["direct" ]; exists {
1097+ metadata ["quality" ] = "direct"
1098+ metadata ["type" ] = "direct"
1099+ metadata ["referer" ] = c .referer
1100+ return url , metadata
1101+ }
1102+
10821103 // Return first priority link available
10831104 for quality , url := range links {
10841105 if before , ok := strings .CutSuffix (quality , "_priority" ); ok {
0 commit comments