Advertisement
Guest User

googlemaps_abuse

a guest
Aug 28th, 2023
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 2.99 KB | Help | 0 0
  1. fn read_file(filepath: &str) -> Result<BufReader<File>, Box<dyn std::error::Error>> {
  2.     let file = File::open(filepath)?;
  3.     let reader = BufReader::new(file);
  4.     Ok(reader)
  5. }
  6.  
  7. fn dict_processing(file:BufReader<File>) -> Result<HashMap<String,String>,Box<dyn std::error::Error>>{
  8.     let mut dictionary: HashMap<String, String> = HashMap::new();
  9.     let mut file_w = File::create("streetlinks.txt")?;
  10.     for line in file.lines(){
  11.         let street = line?.trim().to_string();
  12.         if !dictionary.contains_key(&street){
  13.             dictionary.insert(street.clone(), format!("{} 23, Lisboa", &street));
  14.             file_w.write(format!("https://www.google.com/maps/place/{}+23,Lisboa\n", street.replace(" ","+")).as_bytes())?;
  15.         }
  16.         }
  17.     Ok(dictionary)
  18. }
  19.  
  20. fn browser_look()  -> Result<(),Box<dyn std::error::Error>>{
  21.     let file = read_file("streetlinks.txt").expect("E,FNF");
  22.     let mut link = file.lines();
  23.  
  24.     for iter in 0..50{
  25.       webbrowser::open(&link.next().expect("Returned None").expect("Returned Error")).unwrap();
  26.     //    println!("{:?}",link.next()) ;
  27.     }
  28.     Ok(())
  29. }
  30.  
  31.  
  32. #[tokio::main]
  33. async fn main() -> color_eyre::Result<()> {
  34.     // The use of color_eyre gives much nicer error reports, including making
  35.     // it much easier to locate where the error occurred.
  36.     let filepath: &str = r"C:\Users\Gurman\Documents\Rust\geoint_76\media\streets.txt";
  37.     let reader = read_file(filepath).expect("Error occured");
  38.     let mapa = dict_processing(reader).unwrap();
  39.     let steetlinks = "streetlinks.txt";
  40.     println!("{}",mapa.len());
  41.  
  42.     color_eyre::install()?;
  43.  
  44.     let user_agent = "Custom";
  45.  
  46.     // Set user agent via Firefox preferences.
  47.     let mut prefs = FirefoxPreferences::new();
  48.     prefs.set_user_agent(user_agent.to_string())?;
  49.  
  50.     let mut caps = FirefoxCapabilities::new();
  51.     caps.set_preferences(prefs)?;
  52.  
  53.     let driver = WebDriver::new("http://localhost:4444", caps).await?;
  54.     let file = read_file(steetlinks).expect("E,FNF");
  55.     let mut link = file.lines();
  56.     for iter in mapa.values(){
  57.         println!("{}",&iter);
  58.         driver.goto(&link.next().expect("Returned None").expect("Returned Error")).await?;
  59.         std::thread::sleep(std::time::Duration::from_secs(2));//Прогрузка страницы
  60.         let mut  html = driver.source().await?;
  61.  
  62.         let re = Regex::new(r"https://streetviewpixels-pa\.googleapis\.com/v1/thumbnail\?panoid=.+?100").unwrap();
  63.    
  64.         let dates: Vec<String> = re.find_iter(&html).map(|m| m.as_str().to_string()).collect();
  65.         for s in dates {
  66.             let sn = s.replace("amp;", "");
  67.          //   println!("{sn}{iter}");
  68.             let response = reqwest::get(sn).await.unwrap()
  69.             .bytes().await?;
  70.             let image = image::load_from_memory(&response)?;
  71.             let name = format!("images/a{iter}a.jpg");
  72.             let output  =  File::create(&name)?;
  73.             image.save(name).unwrap();
  74.            
  75.         }
  76.     }
  77.     Ok(())
  78. }
Tags: sosint
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement