mirror of
				https://git.sr.ht/~cadence/bibliogram
				synced 2025-10-30 19:15:37 +00:00 
			
		
		
		
	Use block status to inform future request policy
This commit is contained in:
		
							parent
							
								
									d66d12e7da
								
							
						
					
					
						commit
						3adb0d0ac6
					
				| @ -87,6 +87,14 @@ async function fetchUser(username, context) { | ||||
|  */ | ||||
| function fetchUserFromHTML(username) { | ||||
| 	return userRequestCache.getOrFetch("user/"+username, false, true, () => { | ||||
| 		if (constants.caching.self_blocked_status.enabled) { | ||||
| 			if (history.store.has("user")) { | ||||
| 				const entry = history.store.get("user") | ||||
| 				if (!entry.lastRequestSuccessful && Date.now() < entry.lastRequestAt + constants.caching.self_blocked_status.time) { | ||||
| 					return Promise.reject(constants.symbols.RATE_LIMITED) | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		return switcher.request("user_html", `https://www.instagram.com/${username}/`, async res => { | ||||
| 			if (res.status === 301) throw constants.symbols.ENDPOINT_OVERRIDDEN | ||||
| 			if (res.status === 302) throw constants.symbols.INSTAGRAM_DEMANDS_LOGIN | ||||
| @ -110,7 +118,7 @@ function fetchUserFromHTML(username) { | ||||
| 						const existing = db.prepare("SELECT created, updated_version FROM Users WHERE username = ?").get(user.data.username) | ||||
| 						db.prepare( | ||||
| 							"REPLACE INTO Users (username,  user_id,  created,  updated,  updated_version,  biography,  post_count,  following_count,  followed_by_count,  external_url,  full_name,  is_private,  is_verified,  profile_pic_url) VALUES " | ||||
| 												+"(@username, @user_id, @created, @updated, @updated_version, @biography, @post_count, @following_count, @followed_by_count, @external_url, @full_name, @is_private, @is_verified, @profile_pic_url)" | ||||
| 							                 +"(@username, @user_id, @created, @updated, @updated_version, @biography, @post_count, @following_count, @followed_by_count, @external_url, @full_name, @is_private, @is_verified, @profile_pic_url)" | ||||
| 						).run({ | ||||
| 							username: user.data.username, | ||||
| 							user_id: user.data.id, | ||||
|  | ||||
| @ -63,6 +63,10 @@ let constants = { | ||||
| 		instance_list_cache_time: 3*60*1000, | ||||
| 		updater_cache_time: 2*60*1000, | ||||
| 		cache_sweep_interval: 3*60*1000, | ||||
| 		self_blocked_status: { | ||||
| 			enabled: false, | ||||
| 			time: 2*60*60*1000, | ||||
| 		}, | ||||
| 		db_user_id: true, | ||||
| 		db_post_n3: true, | ||||
| 		db_request_history: false | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user