├── .github └── workflows │ └── main.yml ├── README.md ├── allpages.js ├── android └── main.dart ├── index.js ├── models.json ├── package.json └── veriler.json /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: AUTO DATA SCRAPER 2 | 3 | on: 4 | schedule: 5 | - cron: '*/5 * * * *' # Runs every 5 minutes 6 | workflow_dispatch: # Allows you to manually trigger the workflow 7 | 8 | jobs: 9 | scrape: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout code 13 | uses: actions/checkout@v3 14 | 15 | - name: Set up Node.js 16 | uses: actions/setup-node@v3 17 | with: 18 | node-version: '18.x' 19 | 20 | - name: Install dependencies 21 | run: npm install 22 | 23 | - name: Fetch Data and Update models.json 24 | run: | 25 | node allpages.js 26 | git config --global user.email "codermert@bk.ru" 27 | git config --global user.name "codermert" 28 | git add models.json 29 | git diff --quiet && git diff --staged --quiet || (git commit -m "🕰 Otomatik Veri Güncelleme » @codermert" && git push) 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # XiaomiROMTWRPFiles__Scrape 2 | Xiaomi Redmi Note 12 Pro/Pro+/Discovery Firmware - Redmi Note 12 Pro/Pro+/Discovery ROM TWRP Files 3 | 4 | ![image](https://github.com/codermert/XiaomiROMTWRPFiles__Scrape/assets/53333294/094841de-01d9-42b0-8c52-a0d86770db34) 5 | ![image](https://github.com/codermert/XiaomiROMTWRPFiles__Scrape/assets/53333294/146615d1-a154-4606-aa6e-288a570b5fe4) 6 | -------------------------------------------------------------------------------- /allpages.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const cheerio = require('cheerio'); 3 | const fs = require('fs'); 4 | 5 | const mainUrl = 'https://mifirm.net/'; 6 | 7 | // Tarayıcı benzeri headers oluştur 8 | const headers = { 9 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', 10 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8', 11 | 'Accept-Language': 'tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7', 12 | 'Accept-Encoding': 'gzip, deflate, br', 13 | 'Connection': 'keep-alive', 14 | 'Referer': 'https://mifirm.net/', 15 | 'Sec-Ch-Ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"', 16 | 'Sec-Ch-Ua-Mobile': '?0', 17 | 'Sec-Ch-Ua-Platform': '"Windows"', 18 | 'Sec-Fetch-Dest': 'document', 19 | 'Sec-Fetch-Mode': 'navigate', 20 | 'Sec-Fetch-Site': 'same-origin', 21 | 'Upgrade-Insecure-Requests': '1' 22 | }; 23 | 24 | axios.get(mainUrl, { headers }) 25 | .then(response => { 26 | const html = response.data; 27 | const $ = cheerio.load(html); 28 | 29 | const models = []; 30 | 31 | $('.newgrid').each((index, element) => { 32 | const modelInfo = $(element).find('h5').text().trim(); 33 | const modelCode = $(element).find('.mini-model-code').text().trim(); 34 | const fwTypes = []; 35 | const modelImage = $(element).find('img').attr('src'); 36 | const modelPageLink = $(element).find('a').attr('href'); 37 | 38 | $(element).find('.fw-type span.has').each((index, typeElement) => { 39 | const type = $(typeElement).text().trim(); 40 | fwTypes.push(type); 41 | }); 42 | 43 | models.push({ 44 | modelInfo, 45 | modelCode, 46 | fwTypes, 47 | modelImage, 48 | modelPageLink 49 | }); 50 | }); 51 | 52 | // Modellerin her birinin sayfasını çekip içeriği çıkaralım 53 | const scrapeModelPages = models.map(model => { 54 | // Her sayfa için 1 saniye bekle 55 | return new Promise(resolve => setTimeout(resolve, 1000)) 56 | .then(() => axios.get(model.modelPageLink, { headers })) 57 | .then(response => { 58 | const modelHtml = response.data; 59 | const model$ = cheerio.load(modelHtml); 60 | 61 | const innerData = []; 62 | 63 | model$('tbody tr').each((index, element) => { 64 | const miuiVersion = model$(element).find('td:nth-child(1)').text().trim(); 65 | const androidVersion = model$(element).find('td:nth-child(2)').text().trim(); 66 | const fileSize = model$(element).find('td:nth-child(3)').text().trim(); 67 | const updateAt = model$(element).find('td:nth-child(4)').text().trim(); 68 | const downloaded = model$(element).find('td:nth-child(5)').text().trim(); 69 | const downloadLink = model$(element).find('td:nth-child(6) a').attr('href'); 70 | 71 | const rowData = { 72 | miuiVersion, 73 | androidVersion, 74 | fileSize, 75 | updateAt, 76 | downloaded, 77 | downloadLink 78 | }; 79 | 80 | innerData.push(rowData); 81 | }); 82 | 83 | return { 84 | ...model, 85 | innerData 86 | }; 87 | }) 88 | .catch(error => { 89 | console.error(`Hata (${model.modelPageLink}):`, error.message); 90 | return model; 91 | }); 92 | }); 93 | 94 | Promise.all(scrapeModelPages) 95 | .then(updatedModels => { 96 | const data = { 97 | models: updatedModels 98 | }; 99 | 100 | fs.writeFile('models.json', JSON.stringify(data, null, 2), (error) => { 101 | if (error) { 102 | console.error('Dosya yazma hatası:', error); 103 | } else { 104 | console.log('Veriler "models.json" dosyasına kaydedildi.'); 105 | } 106 | }); 107 | }) 108 | .catch(error => { 109 | console.error('Hata:', error); 110 | }); 111 | }) 112 | .catch(error => { 113 | console.error('Ana sayfa hatası:', error.message); 114 | if (error.response) { 115 | console.error('Durum kodu:', error.response.status); 116 | console.error('Yanıt başlıkları:', error.response.headers); 117 | } 118 | }); 119 | -------------------------------------------------------------------------------- /android/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:chip_list/chip_list.dart'; 3 | import 'package:http/http.dart' as http; 4 | import 'dart:convert'; 5 | 6 | void main() { 7 | runApp(MyApp()); 8 | } 9 | 10 | class MyApp extends StatelessWidget { 11 | @override 12 | Widget build(BuildContext context) { 13 | return MaterialApp( 14 | title: 'Xiaomi ROM Verileri', 15 | theme: ThemeData( 16 | primarySwatch: Colors.blue, 17 | ), 18 | home: MyHomePage(), 19 | ); 20 | } 21 | } 22 | 23 | class MyHomePage extends StatefulWidget { 24 | @override 25 | _MyHomePageState createState() => _MyHomePageState(); 26 | } 27 | 28 | class _MyHomePageState extends State { 29 | late List> models; 30 | late List> filteredModels = []; 31 | bool isLoading = true; // Durumu yükleme olarak başlat 32 | 33 | @override 34 | void initState() { 35 | super.initState(); 36 | fetchModels(); 37 | } 38 | 39 | Future fetchModels() async { 40 | final response = await http.get( 41 | Uri.parse( 42 | 'https://raw.githubusercontent.com/codermert/XiaomiROMTWRPFiles__Scrape/main/models.json', 43 | ), 44 | ); 45 | 46 | if (response.statusCode == 200) { 47 | final jsonData = json.decode(response.body); 48 | setState(() { 49 | models = List>.from(jsonData['models']); 50 | filteredModels = models; 51 | isLoading = false; // Yükleme tamamlandı 52 | }); 53 | } else { 54 | throw Exception('Failed to load models'); 55 | } 56 | } 57 | 58 | void filterModels(String keyword) { 59 | setState(() { 60 | filteredModels = models 61 | .where((model) => 62 | model['modelInfo'] 63 | .toLowerCase() 64 | .contains(keyword.toLowerCase()) || 65 | model['fwTypes'] 66 | .toString() 67 | .toLowerCase() 68 | .contains(keyword.toLowerCase())) 69 | .toList(); 70 | }); 71 | } 72 | 73 | @override 74 | Widget build(BuildContext context) { 75 | return Scaffold( 76 | appBar: AppBar( 77 | title: Text('Xiaomi ROM Modelleri'), 78 | elevation: 0, // Remove the shadow 79 | shape: RoundedRectangleBorder( 80 | borderRadius: BorderRadius.vertical( 81 | bottom: Radius.circular(30), 82 | ), 83 | ), 84 | flexibleSpace: Container( 85 | decoration: BoxDecoration( 86 | borderRadius: BorderRadius.vertical( 87 | bottom: Radius.circular(30), 88 | ), 89 | gradient: LinearGradient( 90 | colors: [Colors.yellow[700]!, Colors.redAccent], 91 | begin: Alignment.topLeft, 92 | end: Alignment.bottomRight, 93 | ), 94 | ), 95 | ), 96 | actions: [ 97 | IconButton( 98 | icon: Icon(Icons.info), 99 | onPressed: () { 100 | showModalBottomSheet( 101 | context: context, 102 | builder: (BuildContext context) { 103 | return Container( 104 | padding: EdgeInsets.all(20.0), 105 | child: Column( 106 | mainAxisSize: MainAxisSize.min, 107 | children: [ 108 | Text( 109 | 'Yazılım Geliştirici', 110 | style: TextStyle( 111 | fontSize: 18.0, 112 | fontWeight: FontWeight.bold, 113 | ), 114 | ), 115 | SizedBox(height: 10.0), 116 | Text( 117 | 'Coder Mert', 118 | textAlign: TextAlign.center, 119 | ), 120 | ], 121 | ), 122 | ); 123 | }, 124 | ); 125 | }, 126 | ), 127 | ], 128 | ), 129 | 130 | body: Column( 131 | children: [ 132 | Padding( 133 | padding: EdgeInsets.all(10.0), 134 | child: TextField( 135 | onChanged: (value) => filterModels(value), 136 | decoration: InputDecoration( 137 | labelText: 'Ara...', 138 | prefixIcon: Icon(Icons.search), 139 | border: OutlineInputBorder( 140 | borderRadius: BorderRadius.circular(10.0), 141 | ), 142 | ), 143 | ), 144 | ), 145 | Text( 146 | 'Toplam Model Sayısı: ${filteredModels.length}', 147 | style: TextStyle( 148 | fontSize: 16.0, 149 | fontWeight: FontWeight.bold, 150 | ), 151 | ), 152 | Expanded( 153 | child: isLoading // isLoading durumunu kontrol et 154 | ? Center( 155 | child: CircularProgressIndicator(), // Yüklenirken dönme animasyonu göster 156 | ) 157 | : ListView.builder( 158 | itemCount: filteredModels.length, 159 | itemBuilder: (context, index) { 160 | final modelInfo = filteredModels[index]['modelInfo']; 161 | final modelTitle = modelInfo.split('\n')[0]; 162 | 163 | return InkWell( 164 | onTap: () { 165 | Navigator.push( 166 | context, 167 | MaterialPageRoute( 168 | builder: (context) => 169 | ModelDetailPage(model: filteredModels[index]), 170 | ), 171 | ); 172 | }, 173 | child: Container( 174 | margin: EdgeInsets.symmetric(horizontal: 10.0, vertical: 5.0), 175 | padding: EdgeInsets.all(10.0), 176 | decoration: BoxDecoration( 177 | borderRadius: BorderRadius.circular(20.0), 178 | gradient: LinearGradient( 179 | colors: [Colors.yellow[700]!, Colors.redAccent], 180 | begin: Alignment.centerLeft, 181 | end: Alignment.centerRight, 182 | tileMode: TileMode.clamp, 183 | ), 184 | ), 185 | child: Row( 186 | crossAxisAlignment: CrossAxisAlignment.center, 187 | children: [ 188 | Image.network( 189 | filteredModels[index]['modelImage'], 190 | width: 50.0, 191 | height: 50.0, 192 | ), 193 | SizedBox(width: 10.0), 194 | Expanded( 195 | child: Column( 196 | crossAxisAlignment: CrossAxisAlignment.start, 197 | mainAxisAlignment: MainAxisAlignment.center, 198 | children: [ 199 | Text( 200 | modelTitle, 201 | style: TextStyle( 202 | fontSize: 20.0, 203 | color: Colors.white70, 204 | fontWeight: FontWeight.bold, 205 | ), 206 | overflow: TextOverflow.ellipsis, 207 | ), 208 | SizedBox(height: 4.0), 209 | Wrap( 210 | spacing: 4.0, 211 | runSpacing: 4.0, 212 | children: filteredModels[index]['fwTypes'] 213 | .map((fwType) { 214 | return Chip( 215 | label: Text(fwType), 216 | labelStyle: TextStyle( 217 | color: Colors.black, 218 | fontSize: 12.0, 219 | ), 220 | backgroundColor: Colors.transparent, 221 | shape: RoundedRectangleBorder( 222 | side: BorderSide( 223 | color: Colors.white, 224 | width: 1, 225 | ), 226 | borderRadius: BorderRadius.circular(15), 227 | ), 228 | ); 229 | }).toList(), 230 | ), 231 | ], 232 | ), 233 | ), 234 | Icon( 235 | Icons.bolt, 236 | color: Colors.white70, 237 | size: 30.0, 238 | ), 239 | ], 240 | ), 241 | ), 242 | ); 243 | }, 244 | ), 245 | ), 246 | ], 247 | ), 248 | ); 249 | } 250 | } 251 | 252 | class ModelDetailPage extends StatelessWidget { 253 | final Map model; 254 | 255 | ModelDetailPage({required this.model}); 256 | 257 | @override 258 | Widget build(BuildContext context) { 259 | final innerDataList = List>.from(model['innerData']); 260 | 261 | return Scaffold( 262 | appBar: AppBar( 263 | title: Text(model['modelInfo']), 264 | shape: RoundedRectangleBorder( 265 | borderRadius: BorderRadius.vertical( 266 | bottom: Radius.circular(30), 267 | ), 268 | ), 269 | flexibleSpace: Container( 270 | decoration: BoxDecoration( 271 | borderRadius: BorderRadius.vertical( 272 | bottom: Radius.circular(30), 273 | ), 274 | gradient: LinearGradient( 275 | colors: [Colors.yellow[700]!, Colors.redAccent], 276 | begin: Alignment.topLeft, 277 | end: Alignment.bottomRight, 278 | ), 279 | ), 280 | ), 281 | actions: [ 282 | IconButton( 283 | icon: Icon(Icons.adb), 284 | onPressed: () { 285 | showModalBottomSheet( 286 | context: context, 287 | builder: (BuildContext context) { 288 | return Container( 289 | padding: EdgeInsets.all(16.0), 290 | decoration: BoxDecoration( 291 | borderRadius: BorderRadius.circular(20.0), 292 | gradient: LinearGradient( 293 | colors: [Colors.yellow[700]!, Colors.redAccent], 294 | begin: Alignment.centerLeft, 295 | end: Alignment.centerRight, 296 | tileMode: TileMode.clamp, 297 | ), 298 | ), 299 | child: Column( 300 | crossAxisAlignment: CrossAxisAlignment.start, 301 | children: [ 302 | Text( 303 | 'Flaşlama Talimatları (#codermert)', 304 | style: TextStyle( 305 | fontSize: 18.0, 306 | fontWeight: FontWeight.bold, 307 | ), 308 | ), 309 | SizedBox(height: 10.0), 310 | Text( 311 | '1. Firmware hızlı önyükleme yazılımı ise, .tgz formatında olmalıdır. Değilse, .gz uzantısını .tgz olarak yeniden adlandırın ve WinRAR kullanarak açın.', 312 | ), 313 | Text( 314 | '2. Hızlı önyükleme yazılımı için, en son XiaomiFlash\'ı indirin. İndirildikten sonra aracı ayıklayın.', 315 | ), 316 | Text( 317 | '3. XiaoMiFlash.exe\'yi açın. Gerekirse sürücüyü yükleyin. Seç\'e tıklayın ve flash_all.bat içeren firmware/ROM klasörünü seçin.', 318 | ), 319 | Text( 320 | '4. Cihazınızın önyükleme kilidi açık olduğundan emin olun veya telefonunuzu EDL moduna (9008) almak için yanıp sönmesini sağlayın.', 321 | ), 322 | Text( 323 | '5. Telefonu Hızlı önyükleme moduna almak için Güç ve Ses düğmelerini 5-10 saniye basılı tutun. Hızlı önyükleme görüntülendiğinde düğmeleri bırakın.', 324 | ), 325 | Text( 326 | '6. Telefonunuzu bilgisayara bağlayın. Cihazı taramak için Yenile\'ye tıklayın. Bir cihaz OK olarak görünüyorsa, devam edin.', 327 | ), 328 | Text( 329 | '7. Tümünü temizle seçeneğini işaretleyin (çok önemli). İşaretlenmezse, flaşlama işlemi tamamlandıktan sonra cihazınız KİLİTLİ ÖNYÜKLEYİCİ durumunda kalacaktır.', 330 | ), 331 | Text( 332 | '8. Flaş\'a tıklayın ve başarılı veya herhangi bir hata görülene kadar bekleyin.', 333 | ), 334 | ], 335 | ), 336 | ); 337 | }, 338 | ); 339 | }, 340 | ), 341 | ], 342 | ), 343 | body: Column( 344 | children: [ 345 | SizedBox(height: 20.0), 346 | Image.network(model['modelImage']), 347 | SizedBox(height: 20.0), 348 | Wrap( 349 | spacing: 8.0, 350 | children: model['fwTypes'].map((fwType) { 351 | return Chip( 352 | label: Text(fwType), 353 | labelStyle: TextStyle( 354 | color: Colors.black, 355 | fontSize: 12.0, 356 | ), 357 | backgroundColor: Colors.transparent, 358 | shape: RoundedRectangleBorder( 359 | side: BorderSide( 360 | color: Colors.black, 361 | width: 1, 362 | ), 363 | borderRadius: BorderRadius.circular(15), 364 | ), 365 | ); 366 | }).toList(), 367 | ), 368 | Expanded( 369 | child: ListView.builder( 370 | itemCount: innerDataList.length, 371 | itemBuilder: (context, index) { 372 | final innerData = innerDataList[index]; 373 | 374 | // Format date using intl package 375 | 376 | return Container( 377 | margin: EdgeInsets.symmetric(vertical: 5.0, horizontal: 10.0), 378 | padding: EdgeInsets.all(10.0), 379 | decoration: BoxDecoration( 380 | borderRadius: BorderRadius.circular(20.0), 381 | gradient: LinearGradient( 382 | colors: [Colors.yellow[700]!, Colors.redAccent], 383 | begin: Alignment.centerLeft, 384 | end: Alignment.centerRight, 385 | tileMode: TileMode.clamp, 386 | ), 387 | ), 388 | child: ListTile( 389 | title: Text('MIUI Version: ${innerData['miuiVersion']}'), 390 | subtitle: Column( 391 | crossAxisAlignment: CrossAxisAlignment.start, 392 | children: [ 393 | Text('Android Version: ${innerData['androidVersion']}'), 394 | Padding( 395 | padding: EdgeInsets.only(top: 24.0, bottom: 10.0), 396 | child: Row( 397 | children: [ 398 | Icon(Icons.download, size: 20.0, color: Colors.white), 399 | SizedBox(width: 4.0), 400 | Text('Toplam indirme: ${innerData['downloaded']}'), 401 | ], 402 | ), 403 | ), 404 | Row( 405 | children: [ 406 | Icon(Icons.update, size: 20.0, color: Colors.white), 407 | SizedBox(width: 4.0), 408 | Text('Son Güncelleme: ${innerData['updateAt']}'), 409 | ], 410 | ), 411 | ], 412 | ), 413 | trailing: Icon(Icons.arrow_forward, color: Colors.white70, size: 30.0), 414 | onTap: () { 415 | // Handle inner data item tap if needed 416 | }, 417 | ), 418 | ); 419 | }, 420 | ), 421 | ), 422 | ], 423 | ), 424 | ); 425 | } 426 | } 427 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const cheerio = require('cheerio'); // Cheerio kütüphanesini kullanarak HTML analizi yapacağız 3 | const fs = require('fs'); 4 | 5 | const url = 'https://mifirm.net/model/ruby.ttt'; // Hedef URL 6 | 7 | axios.get(url) 8 | .then(response => { 9 | const html = response.data; 10 | const $ = cheerio.load(html); // Sayfanın HTML yapısını analiz etmek için Cheerio kullanıyoruz 11 | 12 | const data = []; 13 | 14 | // Tablodaki her satırı dolaşarak verileri çıkarıyoruz 15 | $('tbody tr').each((index, element) => { 16 | const miuiVersion = $(element).find('td:nth-child(1)').text().trim(); 17 | const androidVersion = $(element).find('td:nth-child(2)').text().trim(); 18 | const fileSize = $(element).find('td:nth-child(3)').text().trim(); 19 | const updateAt = $(element).find('td:nth-child(4)').text().trim(); 20 | const downloaded = $(element).find('td:nth-child(5)').text().trim(); 21 | const downloadLink = $(element).find('td:nth-child(6) a').attr('href'); 22 | 23 | // Verileri obje olarak topluyoruz 24 | const rowData = { 25 | miuiVersion, 26 | androidVersion, 27 | fileSize, 28 | updateAt, 29 | downloaded, 30 | downloadLink 31 | }; 32 | 33 | data.push(rowData); 34 | }); 35 | 36 | // JSON formatında verileri dosyaya yazma 37 | fs.writeFile('veriler.json', JSON.stringify(data, null, 2), (error) => { 38 | if (error) { 39 | console.error('Dosya yazma hatası:', error); 40 | } else { 41 | // Elde edilen verileri JSON formatında yazdırıyoruz 42 | console.log(JSON.stringify(data, null, 2)); 43 | console.log('Veriler "veriler.json" dosyasına kaydedildi.'); 44 | } 45 | }); 46 | }) 47 | .catch(error => { 48 | console.error('Hata:', error); 49 | }); 50 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Xiaomi", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "allpages.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "axios": "^1.4.0", 13 | "user-agents": "^1.0.1444", 14 | "cheerio": "^1.0.0-rc.12" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /veriler.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "miuiVersion": "V14.0.4.0.SMOCNXM", 4 | "androidVersion": "12.0", 5 | "fileSize": "6.2G", 6 | "updateAt": "2023-05-24 00:42:03", 7 | "downloaded": "1224", 8 | "downloadLink": " https://mifirm.net/download/9860" 9 | }, 10 | { 11 | "miuiVersion": "V14.0.4.0.SMOCNXM", 12 | "androidVersion": "12.0", 13 | "fileSize": "6.22 GB", 14 | "updateAt": "2023-05-24 22:24:23", 15 | "downloaded": "45", 16 | "downloadLink": " https://mifirm.net/download/9873" 17 | }, 18 | { 19 | "miuiVersion": "V14.0.3.0.SMOCNXM", 20 | "androidVersion": "12.0", 21 | "fileSize": "6.3 GB", 22 | "updateAt": "2023-03-15 01:24:22", 23 | "downloaded": "1012", 24 | "downloadLink": " https://mifirm.net/download/9264" 25 | }, 26 | { 27 | "miuiVersion": "V14.0.3.0.TMOCNXM", 28 | "androidVersion": "13.0", 29 | "fileSize": "6.3 GB", 30 | "updateAt": "2023-08-01 03:00:25", 31 | "downloaded": "30", 32 | "downloadLink": " https://mifirm.net/download/10353" 33 | }, 34 | { 35 | "miuiVersion": "V14.0.2.0.TMOCNXM", 36 | "androidVersion": "13.0", 37 | "fileSize": "6.28 GB", 38 | "updateAt": "2023-07-14 13:12:25", 39 | "downloaded": "78", 40 | "downloadLink": " https://mifirm.net/download/10212" 41 | }, 42 | { 43 | "miuiVersion": "V13.0.11.0.SMOCNXM", 44 | "androidVersion": "12.0", 45 | "fileSize": "6.2G", 46 | "updateAt": "2023-02-15 11:30:02", 47 | "downloaded": "754", 48 | "downloadLink": " https://mifirm.net/download/9021" 49 | }, 50 | { 51 | "miuiVersion": "V13.0.11.0.SMOCNXM", 52 | "androidVersion": "12.0", 53 | "fileSize": "6.17 GB", 54 | "updateAt": "2023-02-17 04:18:16", 55 | "downloaded": "64", 56 | "downloadLink": " https://mifirm.net/download/9048" 57 | }, 58 | { 59 | "miuiVersion": "V13.0.9.0.SMOCNXM", 60 | "androidVersion": "12.0", 61 | "fileSize": "6.1G", 62 | "updateAt": "2022-12-29 12:42:03", 63 | "downloaded": "450", 64 | "downloadLink": " https://mifirm.net/download/8744" 65 | }, 66 | { 67 | "miuiVersion": "V13.0.9.0.SMOCNXM", 68 | "androidVersion": "12.0", 69 | "fileSize": "6.11 GB", 70 | "updateAt": "2023-02-17 04:18:16", 71 | "downloaded": "51", 72 | "downloadLink": " https://mifirm.net/download/9049" 73 | }, 74 | { 75 | "miuiVersion": "V13.0.8.0.SMOCNXM", 76 | "androidVersion": "12.0", 77 | "fileSize": "6.12 GB", 78 | "updateAt": "2023-02-17 04:18:16", 79 | "downloaded": "37", 80 | "downloadLink": " https://mifirm.net/download/9050" 81 | }, 82 | { 83 | "miuiVersion": "V13.0.8.0.SMOCNXM", 84 | "androidVersion": "12.0", 85 | "fileSize": "6.1G", 86 | "updateAt": "2022-12-02 01:12:03", 87 | "downloaded": "155", 88 | "downloadLink": " https://mifirm.net/download/8585" 89 | }, 90 | { 91 | "miuiVersion": "V13.0.6.0.SMOCNXM", 92 | "androidVersion": "12.0", 93 | "fileSize": "6.03 GB", 94 | "updateAt": "2023-02-17 04:18:16", 95 | "downloaded": "50", 96 | "downloadLink": " https://mifirm.net/download/9051" 97 | }, 98 | { 99 | "miuiVersion": "V13.0.6.0.SMOCNXM", 100 | "androidVersion": "12.0", 101 | "fileSize": "6.0G", 102 | "updateAt": "2022-11-02 20:54:02", 103 | "downloaded": "471", 104 | "downloadLink": " https://mifirm.net/download/8391" 105 | }, 106 | { 107 | "miuiVersion": "V13.0.4.0.SMOCNXM", 108 | "androidVersion": "12.0", 109 | "fileSize": "6.03 GB", 110 | "updateAt": "2023-02-17 04:18:17", 111 | "downloaded": "621", 112 | "downloadLink": " https://mifirm.net/download/9052" 113 | }, 114 | { 115 | "miuiVersion": "V14.0.4.0.SMOCNXM", 116 | "androidVersion": "12.0", 117 | "fileSize": "4.9G", 118 | "updateAt": "2023-05-19 11:42:14", 119 | "downloaded": "47", 120 | "downloadLink": "https://mifirm.net/downloadzip/13714" 121 | }, 122 | { 123 | "miuiVersion": "V14.0.3.0.TMOCNXM", 124 | "androidVersion": "13.0", 125 | "fileSize": "4.9G", 126 | "updateAt": "2023-07-25 15:42:14", 127 | "downloaded": "11", 128 | "downloadLink": "https://mifirm.net/downloadzip/14180" 129 | }, 130 | { 131 | "miuiVersion": "V14.0.3.0.SMOCNXM", 132 | "androidVersion": "12.0", 133 | "fileSize": "4.9G", 134 | "updateAt": "2023-03-06 10:30:15", 135 | "downloaded": "85", 136 | "downloadLink": "https://mifirm.net/downloadzip/13044" 137 | }, 138 | { 139 | "miuiVersion": "V14.0.2.0.TMOCNXM", 140 | "androidVersion": "13.0", 141 | "fileSize": "5.0G", 142 | "updateAt": "2023-07-08 23:18:14", 143 | "downloaded": "18", 144 | "downloadLink": "https://mifirm.net/downloadzip/14055" 145 | }, 146 | { 147 | "miuiVersion": "V14.0.1.0.TMOCNXM", 148 | "androidVersion": "13.0", 149 | "fileSize": "4.97 GB", 150 | "updateAt": "2023-07-01 13:42:26", 151 | "downloaded": "8", 152 | "downloadLink": "https://mifirm.net/downloadzip/14015" 153 | }, 154 | { 155 | "miuiVersion": "V13.0.11.0.SMOCNXM", 156 | "androidVersion": "12.0", 157 | "fileSize": "4.8G", 158 | "updateAt": "2023-02-06 21:12:13", 159 | "downloaded": "38", 160 | "downloadLink": "https://mifirm.net/downloadzip/12676" 161 | }, 162 | { 163 | "miuiVersion": "V13.0.9.0.SMOCNXM", 164 | "androidVersion": "12.0", 165 | "fileSize": "4.8G", 166 | "updateAt": "2022-12-24 12:06:13", 167 | "downloaded": "23", 168 | "downloadLink": "https://mifirm.net/downloadzip/12435" 169 | }, 170 | { 171 | "miuiVersion": "V13.0.8.0.SMOCNXM", 172 | "androidVersion": "12.0", 173 | "fileSize": "4.8G", 174 | "updateAt": "2022-11-26 00:36:13", 175 | "downloaded": "24", 176 | "downloadLink": "https://mifirm.net/downloadzip/12257" 177 | }, 178 | { 179 | "miuiVersion": "V13.0.6.0.SMOCNXM", 180 | "androidVersion": "12.0", 181 | "fileSize": "4.7G", 182 | "updateAt": "2022-11-02 20:54:08", 183 | "downloaded": "60", 184 | "downloadLink": "https://mifirm.net/downloadzip/12093" 185 | }, 186 | { 187 | "miuiVersion": "V13.0.4.0.SMOCNXM", 188 | "androidVersion": "12.0", 189 | "fileSize": "4.72 GB", 190 | "updateAt": "2023-02-17 04:18:17", 191 | "downloaded": "11", 192 | "downloadLink": "https://mifirm.net/downloadzip/12746" 193 | }, 194 | { 195 | "miuiVersion": "V13.0.2.0.SMOCNXM", 196 | "androidVersion": "12.0", 197 | "fileSize": "4.71 GB", 198 | "updateAt": "2023-02-17 04:18:17", 199 | "downloaded": "18", 200 | "downloadLink": "https://mifirm.net/downloadzip/12747" 201 | }, 202 | { 203 | "miuiVersion": "V14.0.6.0.SMOMIXM", 204 | "androidVersion": "12.0", 205 | "fileSize": "6.5G", 206 | "updateAt": "2023-05-24 00:42:02", 207 | "downloaded": "2813", 208 | "downloadLink": " https://mifirm.net/download/9859" 209 | }, 210 | { 211 | "miuiVersion": "V14.0.3.0.SMOMIXM", 212 | "androidVersion": "12.0", 213 | "fileSize": "6.3G", 214 | "updateAt": "2023-03-22 19:48:01", 215 | "downloaded": "4633", 216 | "downloadLink": " https://mifirm.net/download/9322" 217 | }, 218 | { 219 | "miuiVersion": "V14.0.1.0.TMOMIXM", 220 | "androidVersion": "13.0", 221 | "fileSize": "6.9G", 222 | "updateAt": "2023-08-01 03:06:02", 223 | "downloaded": "277", 224 | "downloadLink": " https://mifirm.net/download/10354" 225 | }, 226 | { 227 | "miuiVersion": "V14.0.6.0.SMOMIXM", 228 | "androidVersion": "12.0", 229 | "fileSize": "3.9G", 230 | "updateAt": "2023-05-17 16:18:15", 231 | "downloaded": "110", 232 | "downloadLink": "https://mifirm.net/downloadzip/13704" 233 | }, 234 | { 235 | "miuiVersion": "V14.0.3.0.SMOMIXM", 236 | "androidVersion": "12.0", 237 | "fileSize": "3.9G", 238 | "updateAt": "2023-03-22 19:48:15", 239 | "downloaded": "106", 240 | "downloadLink": "https://mifirm.net/downloadzip/13182" 241 | }, 242 | { 243 | "miuiVersion": "V14.0.1.0.TMOMIXM", 244 | "androidVersion": "13.0", 245 | "fileSize": "4.2G", 246 | "updateAt": "2023-08-01 03:06:15", 247 | "downloaded": "38", 248 | "downloadLink": "https://mifirm.net/downloadzip/14232" 249 | }, 250 | { 251 | "miuiVersion": "V14.0.3.0.TMOINXM", 252 | "androidVersion": "13.0", 253 | "fileSize": "5.6G", 254 | "updateAt": "2023-07-29 08:30:07", 255 | "downloaded": "209", 256 | "downloadLink": " https://mifirm.net/download/10332" 257 | }, 258 | { 259 | "miuiVersion": "V14.0.3.0.SMOINXM", 260 | "androidVersion": "12.0", 261 | "fileSize": "5.2G", 262 | "updateAt": "2023-06-02 03:42:06", 263 | "downloaded": "603", 264 | "downloadLink": " https://mifirm.net/download/9941" 265 | }, 266 | { 267 | "miuiVersion": "V14.0.2.0.SMOINXM", 268 | "androidVersion": "12.0", 269 | "fileSize": "5.2G", 270 | "updateAt": "2023-04-18 22:54:07", 271 | "downloaded": "596", 272 | "downloadLink": " https://mifirm.net/download/9582" 273 | }, 274 | { 275 | "miuiVersion": "V13.0.6.0.SMOINXM", 276 | "androidVersion": "12.0", 277 | "fileSize": "4.9G", 278 | "updateAt": "2023-03-09 21:18:07", 279 | "downloaded": "1326", 280 | "downloadLink": " https://mifirm.net/download/9229" 281 | }, 282 | { 283 | "miuiVersion": "V13.0.4.0.SMOINXM", 284 | "androidVersion": "12.0", 285 | "fileSize": "4.7G", 286 | "updateAt": "2023-01-11 06:30:09", 287 | "downloaded": "3629", 288 | "downloadLink": " https://mifirm.net/download/8817" 289 | }, 290 | { 291 | "miuiVersion": "V14.0.3.0.TMOINXM", 292 | "androidVersion": "13.0", 293 | "fileSize": "4.1G", 294 | "updateAt": "2023-07-26 13:54:27", 295 | "downloaded": "14", 296 | "downloadLink": "https://mifirm.net/downloadzip/14191" 297 | }, 298 | { 299 | "miuiVersion": "V14.0.3.0.SMOINXM", 300 | "androidVersion": "12.0", 301 | "fileSize": "3.8G", 302 | "updateAt": "2023-05-31 07:42:20", 303 | "downloaded": "17", 304 | "downloadLink": "https://mifirm.net/downloadzip/13813" 305 | }, 306 | { 307 | "miuiVersion": "V14.0.2.0.SMOINXM", 308 | "androidVersion": "12.0", 309 | "fileSize": "3.8G", 310 | "updateAt": "2023-04-18 22:54:18", 311 | "downloaded": "9", 312 | "downloadLink": "https://mifirm.net/downloadzip/13467" 313 | }, 314 | { 315 | "miuiVersion": "V13.0.4.0.SMOINXM", 316 | "androidVersion": "12.0", 317 | "fileSize": "3.7G", 318 | "updateAt": "2023-01-12 03:06:15", 319 | "downloaded": "76", 320 | "downloadLink": "https://mifirm.net/downloadzip/12540" 321 | }, 322 | { 323 | "miuiVersion": "V14.0.5.0.SMORUXM", 324 | "androidVersion": "12.0", 325 | "fileSize": "5.8G", 326 | "updateAt": "2023-03-22 19:48:03", 327 | "downloaded": "169", 328 | "downloadLink": " https://mifirm.net/download/9323" 329 | }, 330 | { 331 | "miuiVersion": "V14.0.5.0.SMORUXM", 332 | "androidVersion": "12.0", 333 | "fileSize": "3.8G", 334 | "updateAt": "2023-03-23 16:30:16", 335 | "downloaded": "31", 336 | "downloadLink": "https://mifirm.net/downloadzip/13189" 337 | }, 338 | { 339 | "miuiVersion": "V14.0.3.0.SMOIDXM", 340 | "androidVersion": "12.0", 341 | "fileSize": "6.0G", 342 | "updateAt": "2023-04-08 08:48:05", 343 | "downloaded": "1266", 344 | "downloadLink": " https://mifirm.net/download/9481" 345 | }, 346 | { 347 | "miuiVersion": "V14.0.2.0.SMOIDXM", 348 | "androidVersion": "12.0", 349 | "fileSize": "5.7G", 350 | "updateAt": "2023-03-22 19:48:05", 351 | "downloaded": "429", 352 | "downloadLink": " https://mifirm.net/download/9324" 353 | }, 354 | { 355 | "miuiVersion": "V14.0.3.0.SMOIDXM", 356 | "androidVersion": "12.0", 357 | "fileSize": "3.8G", 358 | "updateAt": "2023-04-08 08:48:18", 359 | "downloaded": "41", 360 | "downloadLink": "https://mifirm.net/downloadzip/13368" 361 | }, 362 | { 363 | "miuiVersion": "V14.0.2.0.SMOIDXM", 364 | "androidVersion": "12.0", 365 | "fileSize": "3.8G", 366 | "updateAt": "2023-03-23 16:30:18", 367 | "downloaded": "11", 368 | "downloadLink": "https://mifirm.net/downloadzip/13190" 369 | }, 370 | { 371 | "miuiVersion": "V14.0.10.0.SMOEUXM", 372 | "androidVersion": "12.0", 373 | "fileSize": "6.3G", 374 | "updateAt": "2023-05-14 23:12:08", 375 | "downloaded": "275", 376 | "downloadLink": " https://mifirm.net/download/9808" 377 | }, 378 | { 379 | "miuiVersion": "V14.0.8.0.SMOEUXM", 380 | "androidVersion": "12.0", 381 | "fileSize": "6.3G", 382 | "updateAt": "2023-03-22 19:48:09", 383 | "downloaded": "244", 384 | "downloadLink": " https://mifirm.net/download/9325" 385 | }, 386 | { 387 | "miuiVersion": "V14.0.3.0.TMOEUXM", 388 | "androidVersion": "13.0", 389 | "fileSize": "6.6G", 390 | "updateAt": "2023-07-27 12:06:08", 391 | "downloaded": "37", 392 | "downloadLink": " https://mifirm.net/download/10300" 393 | }, 394 | { 395 | "miuiVersion": "V14.0.10.0.SMOEUXM", 396 | "androidVersion": "12.0", 397 | "fileSize": "4.0G", 398 | "updateAt": "2023-05-11 08:24:21", 399 | "downloaded": "28", 400 | "downloadLink": "https://mifirm.net/downloadzip/13651" 401 | }, 402 | { 403 | "miuiVersion": "V14.0.8.0.SMOEUXM", 404 | "androidVersion": "12.0", 405 | "fileSize": "4.0G", 406 | "updateAt": "2023-03-23 16:30:21", 407 | "downloaded": "16", 408 | "downloadLink": "https://mifirm.net/downloadzip/13191" 409 | }, 410 | { 411 | "miuiVersion": "V14.0.3.0.TMOEUXM", 412 | "androidVersion": "13.0", 413 | "fileSize": "4.3G", 414 | "updateAt": "2023-07-25 15:42:24", 415 | "downloaded": "16", 416 | "downloadLink": "https://mifirm.net/downloadzip/14181" 417 | }, 418 | { 419 | "miuiVersion": "V14.0.2.0.SMOTWXM", 420 | "androidVersion": "12.0", 421 | "fileSize": "5.3G", 422 | "updateAt": "2023-03-22 19:48:09", 423 | "downloaded": "752", 424 | "downloadLink": " https://mifirm.net/download/9326" 425 | }, 426 | { 427 | "miuiVersion": "V14.0.2.0.SMOTWXM", 428 | "androidVersion": "12.0", 429 | "fileSize": "3.8G", 430 | "updateAt": "2023-03-23 16:30:22", 431 | "downloaded": "20", 432 | "downloadLink": "https://mifirm.net/downloadzip/13192" 433 | }, 434 | { 435 | "miuiVersion": "V14.0.2.0.SMOTRXM", 436 | "androidVersion": "12.0", 437 | "fileSize": "5.8G", 438 | "updateAt": "2023-04-08 08:48:11", 439 | "downloaded": "239", 440 | "downloadLink": " https://mifirm.net/download/9482" 441 | }, 442 | { 443 | "miuiVersion": "V14.0.2.0.SMOTRXM", 444 | "androidVersion": "12.0", 445 | "fileSize": "3.8G", 446 | "updateAt": "2023-04-09 05:54:25", 447 | "downloaded": "9", 448 | "downloadLink": "https://mifirm.net/downloadzip/13376" 449 | } 450 | ] 451 | --------------------------------------------------------------------------------