Compare commits
	
		
			1 Commits
		
	
	
		
			d4de945df8
			...
			dd48fda99f
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| dd48fda99f | 
| @@ -1,20 +1,11 @@ | |||||||
| import 'package:anyway/constants.dart'; | import 'dart:ui'; | ||||||
|  |  | ||||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||||
| import 'package:auto_size_text/auto_size_text.dart'; | import 'package:auto_size_text/auto_size_text.dart'; | ||||||
|  |  | ||||||
| import 'package:anyway/structs/trip.dart'; | import 'package:anyway/structs/trip.dart'; | ||||||
| import 'package:anyway/pages/current_trip.dart'; | import 'package:anyway/pages/current_trip.dart'; | ||||||
|  |  | ||||||
|  |  | ||||||
| final List<String> statusTexts = [ |  | ||||||
|   'Parsing your preferences...', |  | ||||||
|   'Finding the best places...', |  | ||||||
|   'Crunching the numbers...', |  | ||||||
|   'Calculating the best route...', |  | ||||||
|   'Making sure you have a great time...', |  | ||||||
| ]; |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class CurrentTripLoadingIndicator extends StatefulWidget { | class CurrentTripLoadingIndicator extends StatefulWidget { | ||||||
|   final Trip trip; |   final Trip trip; | ||||||
|   const CurrentTripLoadingIndicator({ |   const CurrentTripLoadingIndicator({ | ||||||
| @@ -27,52 +18,14 @@ class CurrentTripLoadingIndicator extends StatefulWidget { | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| class _CurrentTripLoadingIndicatorState extends State<CurrentTripLoadingIndicator> { | Widget bottomLoadingIndicator = Container( | ||||||
|   @override |   height: 20.0, // Increase the height to take up more vertical space | ||||||
|   Widget build(BuildContext context) => Stack( |  | ||||||
|     fit: StackFit.expand, |  | ||||||
|     children: [ |  | ||||||
|       // In the very center of the panel, show the greeter which tells the user that the trip is being generated |  | ||||||
|       Center(child: loadingText(widget.trip)), |  | ||||||
|       // As a gimmick, and a way to show that the app is still working, show a few loading dots |  | ||||||
|       Align( |  | ||||||
|         alignment: Alignment.bottomCenter, |  | ||||||
|         child: statusText(), |  | ||||||
|       ) |  | ||||||
|     ], |  | ||||||
|   ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // automatically cycle through the greeter texts |  | ||||||
| class statusText extends StatefulWidget { |  | ||||||
|   const statusText({Key? key}) : super(key: key); |  | ||||||
|  |  | ||||||
|   @override |  | ||||||
|   _statusTextState createState() => _statusTextState(); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| class _statusTextState extends State<statusText> { |  | ||||||
|   int statusIndex = 0; |  | ||||||
|  |  | ||||||
|   @override |  | ||||||
|   void initState() { |  | ||||||
|     super.initState(); |  | ||||||
|     Future.delayed(Duration(seconds: 5), () { |  | ||||||
|       setState(() { |  | ||||||
|         statusIndex = (statusIndex + 1) % statusTexts.length; |  | ||||||
|       }); |  | ||||||
|     }); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   @override |  | ||||||
|   Widget build(BuildContext context) { |  | ||||||
|     return AutoSizeText( |  | ||||||
|       statusTexts[statusIndex], |  | ||||||
|       style: Theme.of(context).textTheme.labelSmall, |  | ||||||
|     ); |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |   child: ImageFiltered( | ||||||
|  |     imageFilter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0), // Apply blur effect | ||||||
|  |     child: Padding(padding: EdgeInsets.all(10), child: CircularProgressIndicator(),) | ||||||
|  |     ), | ||||||
|  | ); | ||||||
|  |  | ||||||
|  |  | ||||||
| Widget loadingText(Trip trip) => FutureBuilder( | Widget loadingText(Trip trip) => FutureBuilder( | ||||||
| @@ -82,7 +35,7 @@ Widget loadingText(Trip trip) => FutureBuilder( | |||||||
|  |  | ||||||
|     if (snapshot.hasData) { |     if (snapshot.hasData) { | ||||||
|       greeter = AnimatedGradientText( |       greeter = AnimatedGradientText( | ||||||
|         text: 'Creating your trip to ${snapshot.data}...', |         text: 'Generating your trip to ${snapshot.data}...', | ||||||
|         style: greeterStyle, |         style: greeterStyle, | ||||||
|       ); |       ); | ||||||
|     } else if (snapshot.hasError) { |     } else if (snapshot.hasError) { | ||||||
| @@ -93,7 +46,7 @@ Widget loadingText(Trip trip) => FutureBuilder( | |||||||
|       ); |       ); | ||||||
|     } else { |     } else { | ||||||
|       greeter = AnimatedGradientText( |       greeter = AnimatedGradientText( | ||||||
|         text: 'Creating your trip...', |         text: 'Generating your trip...', | ||||||
|         style: greeterStyle, |         style: greeterStyle, | ||||||
|       ); |       ); | ||||||
|     } |     } | ||||||
| @@ -141,7 +94,7 @@ class _AnimatedGradientTextState extends State<AnimatedGradientText> with Single | |||||||
|         return ShaderMask( |         return ShaderMask( | ||||||
|           shaderCallback: (bounds) { |           shaderCallback: (bounds) { | ||||||
|             return LinearGradient( |             return LinearGradient( | ||||||
|               colors: [GRADIENT_START, GRADIENT_END, GRADIENT_START], |               colors: [Colors.blue, Colors.red, Colors.blue], | ||||||
|               stops: [ |               stops: [ | ||||||
|                 _controller.value - 1.0, |                 _controller.value - 1.0, | ||||||
|                 _controller.value, |                 _controller.value, | ||||||
| @@ -160,3 +113,20 @@ class _AnimatedGradientTextState extends State<AnimatedGradientText> with Single | |||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class _CurrentTripLoadingIndicatorState extends State<CurrentTripLoadingIndicator> { | ||||||
|  |   @override | ||||||
|  |   Widget build(BuildContext context) => Stack( | ||||||
|  |     fit: StackFit.expand, | ||||||
|  |     children: [ | ||||||
|  |       Center(child: loadingText(widget.trip)), | ||||||
|  |       Align( | ||||||
|  |         alignment: Alignment.bottomCenter, | ||||||
|  |         child: bottomLoadingIndicator, | ||||||
|  |       ) | ||||||
|  |     ], | ||||||
|  |   ); | ||||||
|  |  | ||||||
|  | } | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ final Shader textGradient = APP_GRADIENT.createShader(Rect.fromLTWH(0.0, 0.0, 20 | |||||||
| TextStyle greeterStyle = TextStyle( | TextStyle greeterStyle = TextStyle( | ||||||
|   foreground: Paint()..shader = textGradient, |   foreground: Paint()..shader = textGradient, | ||||||
|   fontWeight: FontWeight.bold, |   fontWeight: FontWeight.bold, | ||||||
|   fontSize: 25 |   fontSize: 26 | ||||||
| ); | ); | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -101,10 +101,10 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: collection |       name: collection | ||||||
|       sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf |       sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "1.19.0" |     version: "1.18.0" | ||||||
|   crypto: |   crypto: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -412,18 +412,18 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: leak_tracker |       name: leak_tracker | ||||||
|       sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" |       sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "10.0.7" |     version: "10.0.5" | ||||||
|   leak_tracker_flutter_testing: |   leak_tracker_flutter_testing: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: leak_tracker_flutter_testing |       name: leak_tracker_flutter_testing | ||||||
|       sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" |       sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "3.0.8" |     version: "3.0.5" | ||||||
|   leak_tracker_testing: |   leak_tracker_testing: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -708,7 +708,7 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: flutter |     description: flutter | ||||||
|     source: sdk |     source: sdk | ||||||
|     version: "0.0.0" |     version: "0.0.99" | ||||||
|   sliding_up_panel: |   sliding_up_panel: | ||||||
|     dependency: "direct main" |     dependency: "direct main" | ||||||
|     description: |     description: | ||||||
| @@ -753,10 +753,10 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: stack_trace |       name: stack_trace | ||||||
|       sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" |       sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "1.12.0" |     version: "1.11.1" | ||||||
|   stream_channel: |   stream_channel: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -777,10 +777,10 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: string_scanner |       name: string_scanner | ||||||
|       sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" |       sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "1.3.0" |     version: "1.2.0" | ||||||
|   synchronized: |   synchronized: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -801,10 +801,10 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: test_api |       name: test_api | ||||||
|       sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" |       sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "0.7.3" |     version: "0.7.2" | ||||||
|   typed_data: |   typed_data: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
| @@ -921,10 +921,10 @@ packages: | |||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|       name: vm_service |       name: vm_service | ||||||
|       sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b |       sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" | ||||||
|       url: "https://pub.dev" |       url: "https://pub.dev" | ||||||
|     source: hosted |     source: hosted | ||||||
|     version: "14.3.0" |     version: "14.2.5" | ||||||
|   web: |   web: | ||||||
|     dependency: transitive |     dependency: transitive | ||||||
|     description: |     description: | ||||||
|   | |||||||
							
								
								
									
										50
									
								
								testing_image_query.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								testing_image_query.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | |||||||
|  | import httpx | ||||||
|  | import json | ||||||
|  |  | ||||||
|  | base_url = "https://en.wikipedia.org/w/api.php" | ||||||
|  |  | ||||||
|  | def best_page_match(title) -> int: | ||||||
|  |     params = { | ||||||
|  |         "action": "query", | ||||||
|  |         "format": "json", | ||||||
|  |         "list": "prefixsearch", | ||||||
|  |         "pssearch": title, | ||||||
|  |     } | ||||||
|  |     response = httpx.get(base_url, params=params) | ||||||
|  |     data = response.json() | ||||||
|  |     data = data.get("query", {}).get("prefixsearch", []) | ||||||
|  |     titles_and_ids = {d["title"]: d["pageid"] for d in data} | ||||||
|  |  | ||||||
|  |     for t in titles_and_ids: | ||||||
|  |         if title.lower() == t.lower(): | ||||||
|  |             print("Matched") | ||||||
|  |             return titles_and_ids[t] | ||||||
|  |  | ||||||
|  | def get_image_url(page_id) -> str: | ||||||
|  |     # https://en.wikipedia.org/w/api.php?action=query&titles=K%C3%B6lner%20Dom&prop=imageinfo&iiprop=url&format=json | ||||||
|  |     params = { | ||||||
|  |         "action": "query", | ||||||
|  |         "format": "json", | ||||||
|  |         "prop": "pageimages", | ||||||
|  |         "pageids": page_id, | ||||||
|  |         "pithumbsize": 500, | ||||||
|  |     } | ||||||
|  |     response = httpx.get(base_url, params=params) | ||||||
|  |     data = response.json() | ||||||
|  |     data = data.get("query", {}).get("pages", {}) | ||||||
|  |     data = data.get(str(page_id), {}) | ||||||
|  |     return data.get("thumbnail", {}).get("source") | ||||||
|  |  | ||||||
|  | def get_image_url_from_title(title) -> str: | ||||||
|  |     page_id = best_page_match(title) | ||||||
|  |     if page_id is None: | ||||||
|  |         return None | ||||||
|  |     return get_image_url(page_id) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | print(get_image_url_from_title("kölner dom")) | ||||||
|  | print(get_image_url_from_title("grossmünster")) | ||||||
|  | print(get_image_url_from_title("eiffel tower")) | ||||||
|  | print(get_image_url_from_title("taj mahal")) | ||||||
|  | print(get_image_url_from_title("big ben")) | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user