Hi Team, So I have been doing a flutter project and I tried to pull the trailer URL from the API. After the whole code is written without any errors, the key is being generated as null. Here is the code that I have written.
According to the code written and for any movie if the trailer button is clicked, a message with random key is being generated.
Failed to open trailer. Could not launch https:// www.youtube.com/watch?y=https:/ www.youtube.com/watch?v=TOwSzeBITAE
Could you please help me with this?
Thank you.
Future<String?> fetchTrailerUrl(int movieId) async {
try {
final response = await http.get(
Uri.parse('$baseUrl/movie/$movieId/videos?api_key=$apiKey'),
);
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
final results = data['results'] as List;
// Look for a YouTube trailer
final trailer = results.firstWhere(
(video) => video['type'] == 'Trailer' && video['site'] == 'YouTube',
orElse: () => null,
);
// Return the full YouTube URL if a trailer is found
if (trailer != null) {
return 'https://www.youtube.com/watch?v=${trailer['key']}';
}
// No trailer found
return null;
} else {
throw Exception('Failed to load trailer: ${response.reasonPhrase}');
}
} catch (e) {
print('Error in fetchTrailerUrl: $e');
return null;
}
}
class TrailerButtonWidget extends StatelessWidget {
final int movieId;
const TrailerButtonWidget({super.key, required this.movieId});
Future<void> _launchYouTube(String url) async {
final Uri uri = Uri.parse(url);
if (await canLaunchUrl(uri)) {
// Automatically redirects to YouTube app or browser
await launchUrl(uri, mode: LaunchMode.externalApplication);
} else {
throw 'Could not launch $url';
}
}
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(16.0),
child: ElevatedButton(
onPressed: () async {
try {
final trailerKey = await ApiService().fetchTrailerUrl(movieId);
if (trailerKey != null) {
final trailerUrl = 'https://www.youtube.com/watch?v=$trailerKey';
await _launchYouTube(trailerUrl);
} else {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('Trailer not available.')),
);
}
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Failed to open trailer: $e')),
);
}
},
child: const Text('Watch Trailer'),
),
);
}
}
Não consegue encontrar um certo filme ou série? Inicie sessão e adicione-o.
Deseja classificar ou adicionar este item a uma lista?
Ainda não é um membro?
Resposta de J_A_R_V_I_S
em 4 janeiro 2025 às 1:01 AM
Hello Team could you please provide any update on this?
Resposta de ticao2 🇧🇷 pt-BR
em 6 janeiro 2025 às 4:18 PM
I am not a programmer.
So I can't help you by reading your code.
But looking at your code I notice something wrong in this part.
That Youtube KEY, TOwSzeBITAE, is no longer available.
I can pass on the following information.
Trailer URL
When you make an API Request requesting Videos,
in the response you will receive something like this:
Just add the KEY in the respective URL:
For example:
Youtube: https://www.youtube.com/watch?v=6JnN1DmbqoU
Youtube: https://www.youtube.com/watch?v=hzfvYSIIgyc
Vimeo: https://vimeo.com/282875052
Vimeo: https://player.vimeo.com/video/282875052
Travis Bell said on 2020-09-19
And it still holds true today. Nothing changed.
And I don't see any plans on the To-Do list to add a new channel.
https://trello.com/b/k34aFUme/web?filter=video
Resposta de J_A_R_V_I_S
em 7 janeiro 2025 às 6:03 AM
Hi Team, I have made the update to the code in order to fetch the Trailer URL via redirection to YouTube. The trailer is being played but the video shows as the blank screen. Here is the code that I have written for the trailer button widget that renders in the user interface.
This is the code that I have written that tracks the data from the TMDB API.
Could you please help me with this?
Thank you.
Resposta de ticao2 🇧🇷 pt-BR
em 10 janeiro 2025 às 7:44 AM
Good
I did a Google search.
https://www.google.com/search?client=firefox-b-d&q=trailer+is+being+played+but+the+video+shows+as+the+blank+screen
It seems like this is a problem for a lot of people.
I found this more recent question.
Maybe it will help.
https://community.firecore.com/t/black-screen-on-trailers/48616