DOWNLOAD IBO TMDB

Byron130

Well-known member
VIP Member
Joined
Jan 16, 2023
Messages
299
Awards
3
Offline
This is a very good no nonsense version of IBO done by a good friend late last year :)
View attachment 8783View attachment 8784View attachment 8785

you can have a bit of fun with this as hard work has already been done :)_
You are the man of designs. Nobody invests more time in it than you do. Can you create something that's easy to transparent? Put 4D first in every hex code? I have no patience for that. Maybe you’ll share a G-man design with us. I would be happy
 

G-man

Well-known member
Joined
Apr 16, 2021
Messages
1,940
Awards
4
Offline
Hello.
Thank you for sharing
I would like to know how can I remove the Sports Guide button
Ok this method works for a lot of things the android comand makes things visable or invisable most IBO versions will have the same location to edit , look in RES/LAYOUT/ then look for a file called activity_home.xml (apps with multi layouts will have activity_home)2.xml etc)
to explain this , this is the file that displays everything on the main screen you can go through this file and use the method i will show you to hide the sports button or to hide other items as well.

Be aware that this code was written before apps had sports buttons so you will not find anything called sports button instead the app uses the code for ACCOUNT i know its confussing but bear with me , ok so you need to find the line that says :-
android:id="@id/ly_account"
I will not go through everything that is in this file for the account/sports button but this is the code pertaining to it:-
(normally around line (145) but could be different on version.

<androidx.constraintlayout.widget.ConstraintLayout
android:id="@id/ly_account"
android:background="@drawable/home_item_bg"
android:focusable="true"
android:nextFocusLeft="@id/ly_live"
android:nextFocusRight="@id/ly_change"
android:nextFocusUp="@id/ly_movie"
android:nextFocusDown="@id/ly_account"
android:clickable="true"
android:layout_width="@dimen/_70sdp"
android:layout_height="@dimen/_55sdp"
app:layout_constraintBottom_toBottomOf="@id/ly_live"
app:layout_constraintStart_toStartOf="@id/ly_movie">
<ImageView
android:id="@id/image_account"
android:layout_width="@dimen/_40sdp"
android:layout_height="@dimen/_40sdp"
android:src="@drawable/account_icon"
android:scaleType="fitCenter"
app:layout_constraintBottom_toTopOf="@id/txt_account"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:textSize="@dimen/txt_small_font"
android:textColor="@color/white"
android:gravity="center"
android:id="@id/txt_account"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/image_account" />
</androidx.constraintlayout.widget.ConstraintLayout>

Now this may look daunting to start with but you want to know about these things ? its not in all reality
you notice account/sports has three sets of instruction , one for the background tile ,one for the icon , and one for the text.
all we are going to do is add one little line of code to each of the three sections ,background ,icon and text.

this is the line
android:visibility="gone" (learn this line off by heart)

it does exactly what you expect it to do it disables the item (does not hide it disables)

So where to add this line ?
I normally add it after the background ,scr and id="@id/txt_account"

so the code above when finished will look like this :--

<androidx.constraintlayout.widget.ConstraintLayout
android:id="@id/ly_account"
android:background="@drawable/home_item_bg"
android:visibility="gone"
android:focusable="true"
android:nextFocusLeft="@id/ly_live"
android:nextFocusRight="@id/ly_change"
android:nextFocusUp="@id/ly_movie"
android:nextFocusDown="@id/ly_account"
android:clickable="true"
android:layout_width="@dimen/_70sdp"
android:layout_height="@dimen/_55sdp"
app:layout_constraintBottom_toBottomOf="@id/ly_live"
app:layout_constraintStart_toStartOf="@id/ly_movie">
<ImageView
android:id="@id/image_account"
android:layout_width="@dimen/_40sdp"
android:layout_height="@dimen/_40sdp"
android:src="@drawable/account_icon"
android:visibility="gone"
android:scaleType="fitCenter"
app:layout_constraintBottom_toTopOf="@id/txt_account"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:textSize="@dimen/txt_small_font"
android:textColor="@color/white"
android:gravity="center"
android:id="@id/txt_account"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/image_account" />
</androidx.constraintlayout.widget.ConstraintLayout>

Save out and test , this has to be done using MT Manager dont even attempt it if you dont have this editting tool which is on these forums.
Hope this helps you and a few others , the key is to try and understand what these three sections do as do nearly all info displayed on the main screen has these three settings.
background = placement etc and what happens if you press left,right,up and down etc. size.
the icon = the actual icon that is to be displayed and its size and placement
and of course the text.
 

jhonatan15

Well-known member
VIP Member
Joined
Aug 28, 2021
Messages
206
Awards
3
Offline
Hello friends, I have tried to put the tmbd in Spanish but it doesn't work, I have already tried but it doesn't change, does anyone know what the command is like, I already googled it and I haven't been able to do it
 

G-man

Well-known member
Joined
Apr 16, 2021
Messages
1,940
Awards
4
Offline
Hello friends, I have tried to put the tmbd in Spanish but it doesn't work, I have already tried but it doesn't change, does anyone know what the command is like, I already googled it and I haven't been able to do it
its there my friend try looking in adview.php near the top , but if you say you tried changing from English to Spanish and it didnt work .....
 

jhonatan15

Well-known member
VIP Member
Joined
Aug 28, 2021
Messages
206
Awards
3
Offline
I have done it in movies.php but it doesn't work, I don't know if it's wrong



<?php
// Connect to the SQLite database
$db = new SQLite3('./.bet_tmdb.db');

// Query to retrieve the API key from the 'api_key' table
$query = "SELECT key FROM api_key LIMIT 1";
$result = $db->querySingle($query);

// Close the database connection
$db->close();

// Check if the API key was retrieved successfully
if ($result) {
$api_key = $result;
}
// Common API parameters
$language = "es-ES";

// Define the cache folder and file path
$cache_folder = 'cache/';
$cache_file = $cache_folder . 'combined_cache.json';

// Create the cache folder if it doesn't exist
if (!file_exists($cache_folder)) {
mkdir($cache_folder, 0777, true);
}

// Cache validity duration (12 hours in seconds)
$cache_duration = 12 * 60 * 60;

// Check if cached data is still valid
if (file_exists($cache_file) && time() - filemtime($cache_file) < $cache_duration) {
// Use cached data
$cached_data = file_get_contents($cache_file);
$combined_data = json_decode($cached_data, true);
} else {
// Fetch movies data using cURL
$movies_url = "https://api.themoviedb.org/3/trending/movie/week?api_key=$api_key&language=$es-ES";
$movies_curl = curl_init($movies_url);
curl_setopt($movies_curl, CURLOPT_RETURNTRANSFER, true);
$movies_response = curl_exec($movies_curl);
curl_close($movies_curl);

$movies_data = json_decode($movies_response, true);

// Fetch shows data using cURL
$shows_url = "https://api.themoviedb.org/3/trending/tv/week?api_key=$api_key&language=$es-ES";
$shows_curl = curl_init($shows_url);
curl_setopt($shows_curl, CURLOPT_RETURNTRANSFER, true);
$shows_response = curl_exec($shows_curl);
curl_close($shows_curl);

$shows_data = json_decode($shows_response, true);

// Initialize combined data array
$combined_data = [];

// Alternate between adding one record from movies and one from shows
$numMovies = count($movies_data['results']);
$numShows = count($shows_data['results']);
$maxCount = max($numMovies, $numShows);

for ($i = 0; $i < $maxCount; $i++) {
if ($i < $numMovies) {
$movie = $movies_data['results'][$i];
$backdrop_path = 'https://image.tmdb.org/t/p/original' . $movie['backdrop_path'];
$poster_path = 'https://image.tmdb.org/t/p/original' . $movie['poster_path'];
$title = $movie['title'];
$subtitle = $movie['overview'];
$url = 'https://www.themoviedb.org/movie/' . $movie['id'];

$combined_data[] = array(
"image" => $backdrop_path,
"artWork" => $poster_path,
"title" => $title,
"subtitle" => $subtitle,
"url" => $url
);
}

if ($i < $numShows) {
$show = $shows_data['results'][$i];
$backdrop_path = 'https://image.tmdb.org/t/p/original' . $show['backdrop_path'];
$poster_path = 'https://image.tmdb.org/t/p/original' . $show['poster_path'];
$title = $show['name'];
$subtitle = $show['overview'];
$url = 'https://www.themoviedb.org/movie/' . $show['id'];

$combined_data[] = array(
"image" => $backdrop_path,
"artWork" => $poster_path,
"title" => $title,
"subtitle" => $subtitle,
"url" => $url
);
}
}

// Encode and store the combined data in the cache file without escaping slashes
$encoded_data = json_encode($combined_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
file_put_contents($cache_file, $encoded_data);
}

// Set the appropriate header and echo the combined data as JSON
header("Content-Type: application/json");
echo json_encode($combined_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
?>
 

G-man

Well-known member
Joined
Apr 16, 2021
Messages
1,940
Awards
4
Offline
I have done it in movies.php but it doesn't work, I don't know if it's wrong



<?php
// Connect to the SQLite database
$db = new SQLite3('./.bet_tmdb.db');

// Query to retrieve the API key from the 'api_key' table
$query = "SELECT key FROM api_key LIMIT 1";
$result = $db->querySingle($query);

// Close the database connection
$db->close();

// Check if the API key was retrieved successfully
if ($result) {
$api_key = $result;
}
// Common API parameters
$language = "es-ES";

// Define the cache folder and file path
$cache_folder = 'cache/';
$cache_file = $cache_folder . 'combined_cache.json';

// Create the cache folder if it doesn't exist
if (!file_exists($cache_folder)) {
mkdir($cache_folder, 0777, true);
}

// Cache validity duration (12 hours in seconds)
$cache_duration = 12 * 60 * 60;

// Check if cached data is still valid
if (file_exists($cache_file) && time() - filemtime($cache_file) < $cache_duration) {
// Use cached data
$cached_data = file_get_contents($cache_file);
$combined_data = json_decode($cached_data, true);
} else {
// Fetch movies data using cURL
$movies_url = "https://api.themoviedb.org/3/trending/movie/week?api_key=$api_key&language=$es-ES";
$movies_curl = curl_init($movies_url);
curl_setopt($movies_curl, CURLOPT_RETURNTRANSFER, true);
$movies_response = curl_exec($movies_curl);
curl_close($movies_curl);

$movies_data = json_decode($movies_response, true);

// Fetch shows data using cURL
$shows_url = "https://api.themoviedb.org/3/trending/tv/week?api_key=$api_key&language=$es-ES";
$shows_curl = curl_init($shows_url);
curl_setopt($shows_curl, CURLOPT_RETURNTRANSFER, true);
$shows_response = curl_exec($shows_curl);
curl_close($shows_curl);

$shows_data = json_decode($shows_response, true);

// Initialize combined data array
$combined_data = [];

// Alternate between adding one record from movies and one from shows
$numMovies = count($movies_data['results']);
$numShows = count($shows_data['results']);
$maxCount = max($numMovies, $numShows);

for ($i = 0; $i < $maxCount; $i++) {
if ($i < $numMovies) {
$movie = $movies_data['results'][$i];
$backdrop_path = 'https://image.tmdb.org/t/p/original' . $movie['backdrop_path'];
$poster_path = 'https://image.tmdb.org/t/p/original' . $movie['poster_path'];
$title = $movie['title'];
$subtitle = $movie['overview'];
$url = 'https://www.themoviedb.org/movie/' . $movie['id'];

$combined_data[] = array(
"image" => $backdrop_path,
"artWork" => $poster_path,
"title" => $title,
"subtitle" => $subtitle,
"url" => $url
);
}

if ($i < $numShows) {
$show = $shows_data['results'][$i];
$backdrop_path = 'https://image.tmdb.org/t/p/original' . $show['backdrop_path'];
$poster_path = 'https://image.tmdb.org/t/p/original' . $show['poster_path'];
$title = $show['name'];
$subtitle = $show['overview'];
$url = 'https://www.themoviedb.org/movie/' . $show['id'];

$combined_data[] = array(
"image" => $backdrop_path,
"artWork" => $poster_path,
"title" => $title,
"subtitle" => $subtitle,
"url" => $url
);
}
}

// Encode and store the combined data in the cache file without escaping slashes
$encoded_data = json_encode($combined_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
file_put_contents($cache_file, $encoded_data);
}

// Set the appropriate header and echo the combined data as JSON
header("Content-Type: application/json");
echo json_encode($combined_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
?>
I think i know what your doing
the language is being defined in this bit of code near the top :-
// Common API parameters
$language = "es-ES";

because $language is now defined as spanish there is no need to difine it again further down the file like you have here :-
$movies_url = "https://api.themoviedb.org/3/trending/movie/week?api_key=$api_key&language=$es-ES";
$es is not a string $language is the string so the line should read like this :-
$movies_url = "https://api.themoviedb.org/3/trending/movie/week?api_key=$api_key&language=$language";
you have already told the code that the string is spanish above

Well in theory anyway :)
Screenshot 2024-03-03 232405.jpg
as you can see it changes to spanish one point to note if your still seeing english then you need to go into API/cache/ and delete combined_cache.json it will then display in spanish
 
Last edited:

alian87

New member
Joined
Jul 18, 2021
Messages
9
Offline
Ok this method works for a lot of things the android comand makes things visable or invisable most IBO versions will have the same location to edit , look in RES/LAYOUT/ then look for a file called activity_home.xml (apps with multi layouts will have activity_home)2.xml etc)
to explain this , this is the file that displays everything on the main screen you can go through this file and use the method i will show you to hide the sports button or to hide other items as well.

Be aware that this code was written before apps had sports buttons so you will not find anything called sports button instead the app uses the code for ACCOUNT i know its confussing but bear with me , ok so you need to find the line that says :-
android:id="@id/ly_account"
I will not go through everything that is in this file for the account/sports button but this is the code pertaining to it:-
(normally around line (145) but could be different on version.

<androidx.constraintlayout.widget.ConstraintLayout
android:id="@id/ly_account"
android:background="@drawable/home_item_bg"
android:focusable="true"
android:nextFocusLeft="@id/ly_live"
android:nextFocusRight="@id/ly_change"
android:nextFocusUp="@id/ly_movie"
android:nextFocusDown="@id/ly_account"
android:clickable="true"
android:layout_width="@dimen/_70sdp"
android:layout_height="@dimen/_55sdp"
app:layout_constraintBottom_toBottomOf="@id/ly_live"
app:layout_constraintStart_toStartOf="@id/ly_movie">
<ImageView
android:id="@id/image_account"
android:layout_width="@dimen/_40sdp"
android:layout_height="@dimen/_40sdp"
android:src="@drawable/account_icon"
android:scaleType="fitCenter"
app:layout_constraintBottom_toTopOf="@id/txt_account"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:textSize="@dimen/txt_small_font"
android:textColor="@color/white"
android:gravity="center"
android:id="@id/txt_account"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/image_account" />
</androidx.constraintlayout.widget.ConstraintLayout>

Now this may look daunting to start with but you want to know about these things ? its not in all reality
you notice account/sports has three sets of instruction , one for the background tile ,one for the icon , and one for the text.
all we are going to do is add one little line of code to each of the three sections ,background ,icon and text.

this is the line
android:visibility="gone" (learn this line off by heart)

it does exactly what you expect it to do it disables the item (does not hide it disables)

So where to add this line ?
I normally add it after the background ,scr and id="@id/txt_account"

so the code above when finished will look like this :--

<androidx.constraintlayout.widget.ConstraintLayout
android:id="@id/ly_account"
android:background="@drawable/home_item_bg"
android:visibility="gone"
android:focusable="true"
android:nextFocusLeft="@id/ly_live"
android:nextFocusRight="@id/ly_change"
android:nextFocusUp="@id/ly_movie"
android:nextFocusDown="@id/ly_account"
android:clickable="true"
android:layout_width="@dimen/_70sdp"
android:layout_height="@dimen/_55sdp"
app:layout_constraintBottom_toBottomOf="@id/ly_live"
app:layout_constraintStart_toStartOf="@id/ly_movie">
<ImageView
android:id="@id/image_account"
android:layout_width="@dimen/_40sdp"
android:layout_height="@dimen/_40sdp"
android:src="@drawable/account_icon"
android:visibility="gone"
android:scaleType="fitCenter"
app:layout_constraintBottom_toTopOf="@id/txt_account"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:textSize="@dimen/txt_small_font"
android:textColor="@color/white"
android:gravity="center"
android:id="@id/txt_account"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/image_account" />
</androidx.constraintlayout.widget.ConstraintLayout>

Save out and test , this has to be done using MT Manager dont even attempt it if you dont have this editting tool which is on these forums.
Hope this helps you and a few others , the key is to try and understand what these three sections do as do nearly all info displayed on the main screen has these three settings.
background = placement etc and what happens if you press left,right,up and down etc. size.
the icon = the actual icon that is to be displayed and its size and placement
and of course the text.

Thank you very much.
My knowledge in editing applications is more basic, I just change images and change links in applications that have a web panel.

You took your time making this beautiful tutorial and you were spot on here.
I am extremely grateful.
 

jhonatan15

Well-known member
VIP Member
Joined
Aug 28, 2021
Messages
206
Awards
3
Offline
I think i know what your doing
the language is being defined in this bit of code near the top :-
// Common API parameters
$language = "es-ES";

because $language is now defined as spanish there is no need to difine it again further down the file like you have here :-
$movies_url = "https://api.themoviedb.org/3/trending/movie/week?api_key=$api_key&language=$es-ES";
$es is not a string $language is the string so the line should read like this :-
$movies_url = "https://api.themoviedb.org/3/trending/movie/week?api_key=$api_key&language=$language";
you have already told the code that the string is spanish above

Well in theory anyway :)
View attachment 9073
as you can see it changes to spanish one point to note if your still seeing english then you need to go into API/cache/ and delete combined_cache.json it will then display in spanish
thank you very much friend you are a CRACK!! I will take it into account for future modifications
 

Bustauk

New member
VIP Member
Joined
Nov 14, 2021
Messages
11
Offline
When setting up DNS on panel with IBO app i can sign in to the account but when i restart app its asking to put user and pass back in
Is there somthing i can do for it to save the user info
 

John8

Member
VIP Member
Joined
Oct 9, 2022
Messages
49
Awards
1
Offline
When setting up DNS on panel with IBO app i can sign in to the account but when i restart app its asking to put user and pass back in
Is there somthing i can do for it to save the user info
same to me .
 

TheOne

Well-known member
VIP Member
Top Poster Of Month
Joined
Aug 21, 2022
Messages
359
Awards
3
Offline
I install Ibo on the phone and log in with user and password. I delete the Ibo app because I want something else. As soon as I reinstall the app, I am automatically logged in and am on the main screen. Where is IBO stored? I want a fresh install.
 

G-man

Well-known member
Joined
Apr 16, 2021
Messages
1,940
Awards
4
Offline
I install Ibo on the phone and log in with user and password. I delete the Ibo app because I want something else. As soon as I reinstall the app, I am automatically logged in and am on the main screen. Where is IBO stored? I want a fresh install.
it retains your login details the same as most vpns do it will be in your files somewhere on your device
look in the root directory of your device for a folder named com.flextv.livestore this is normally where info is stored , delete that folder and then try to load up app again it should now revert tol ogin screen
 

TheOne

Well-known member
VIP Member
Top Poster Of Month
Joined
Aug 21, 2022
Messages
359
Awards
3
Offline
I've already got everything

flextv.livestore

Searched and deleted it manually. I must have missed something somewhere. 😕
 

TheOne

Well-known member
VIP Member
Top Poster Of Month
Joined
Aug 21, 2022
Messages
359
Awards
3
Offline
I changed many colors in the app, but unfortunately I can't find this color. Can someone please help me and tell me where I can find this color?

Screenshot_20240312_064348.jpg
 

atomant247

Active member
VIP Member
Joined
Apr 25, 2021
Messages
287
Awards
2
Offline
I changed many colors in the app, but unfortunately I can't find this color. Can someone please help me and tell me where I can find this color?

View attachment 9153
Install emulator on PC (ldplayer) install app. Screenshot app. Use color picker to pick hex code. Search app for code. Easy
 

TheOne

Well-known member
VIP Member
Top Poster Of Month
Joined
Aug 21, 2022
Messages
359
Awards
3
Offline
Install emulator on PC (ldplayer) install app. Screenshot app. Use color picker to pick hex code. Search app for code. Easy
Yes, I know this trick and I use it too. But I can't find that color with it.
 

atomant247

Active member
VIP Member
Joined
Apr 25, 2021
Messages
287
Awards
2
Offline
Yes, I know this trick and I use it too. But I can't find that color with it.
Not sure why. I've changed it on many occasions using that method. I'm not home so can't check where in app it is.
 

TheOne

Well-known member
VIP Member
Top Poster Of Month
Joined
Aug 21, 2022
Messages
359
Awards
3
Offline
I would be very grateful if you could help me.

Hex Code: 543a67

Screenshot_20240312_072234_edit_98321800092808.jpg
 
Last edited:
Top