mirror of
				https://git.sr.ht/~cadence/bibliogram
				synced 2025-10-30 11:05:37 +00:00 
			
		
		
		
	Blocked by Instagram.
This commit is contained in:
		
							parent
							
								
									a5ab771969
								
							
						
					
					
						commit
						e2fba3bbd0
					
				| @ -55,7 +55,7 @@ class TtlCache { | ||||
| 	 */ | ||||
| 	getTtl(key, factor = 1) { | ||||
| 		if (this.has(key)) { | ||||
| 			return Math.max((Math.floor(Date.now() - this.cache.get(key).time) / factor), 0) | ||||
| 			return Math.max(Math.ceil((this.cache.get(key).time + this.ttl - Date.now()) / factor), 0) | ||||
| 		} else { | ||||
| 			return null | ||||
| 		} | ||||
|  | ||||
| @ -11,7 +11,8 @@ const timelineEntryCache = new TtlCache(constants.caching.resource_cache_time) | ||||
| function fetchUser(username) { | ||||
| 	return requestCache.getOrFetch("user/"+username, () => { | ||||
| 		return request(`https://www.instagram.com/${username}/`).then(res => { | ||||
| 			if (res.status === 404) throw constants.symbols.NOT_FOUND | ||||
| 			if (res.status === 302) throw constants.symbols.INSTAGRAM_DEMANDS_LOGIN | ||||
| 			else if (res.status === 404) throw constants.symbols.NOT_FOUND | ||||
| 			else return res.text().then(text => { | ||||
| 				// require down here or have to deal with require loop. require cache will take care of it anyway.
 | ||||
| 				// User -> Timeline -> TimelineImage -> collectors -/> User
 | ||||
|  | ||||
| @ -37,7 +37,8 @@ let constants = { | ||||
| 		TYPE_GALLERY_IMAGE: Symbol("TYPE_GALLERY_IMAGE"), | ||||
| 		TYPE_GALLERY_VIDEO: Symbol("TYPE_GALLERY_VIDEO"), | ||||
| 		NOT_FOUND: Symbol("NOT_FOUND"), | ||||
| 		NO_SHARED_DATA: Symbol("NO_SHARED_DATA") | ||||
| 		NO_SHARED_DATA: Symbol("NO_SHARED_DATA"), | ||||
| 		INSTAGRAM_DEMANDS_LOGIN: Symbol("INSTAGRAM_DEMANDS_LOGIN") | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -5,7 +5,8 @@ function request(url) { | ||||
| 	return fetch(url, { | ||||
| 		headers: { | ||||
| 			"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" | ||||
| 		} | ||||
| 		}, | ||||
| 		redirect: "manual" | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| const constants = require("../../lib/constants") | ||||
| const {fetchUser, getOrFetchShortcode} = require("../../lib/collectors") | ||||
| const {fetchUser, getOrFetchShortcode, requestCache} = require("../../lib/collectors") | ||||
| const {render, redirect} = require("pinski/plugins") | ||||
| const {pugCache} = require("../passthrough") | ||||
| 
 | ||||
| module.exports = [ | ||||
| 	{ | ||||
| @ -37,6 +38,17 @@ module.exports = [ | ||||
| 						title: "Not found", | ||||
| 						message: "This user doesn't exist." | ||||
| 					}) | ||||
| 				} else if (error === constants.symbols.INSTAGRAM_DEMANDS_LOGIN) { | ||||
| 					return { | ||||
| 						statusCode: 503, | ||||
| 						contentType: "text/html", | ||||
| 						headers: { | ||||
| 							"Retry-After": requestCache.getTtl("user/"+fill[0], 1000) | ||||
| 						}, | ||||
| 						content: pugCache.get("pug/blocked.pug").web({ | ||||
| 							expiresMinutes: requestCache.getTtl("user/"+fill[0], 1000*60) | ||||
| 						}) | ||||
| 					} | ||||
| 				} else { | ||||
| 					throw error | ||||
| 				} | ||||
|  | ||||
							
								
								
									
										19
									
								
								src/site/pug/blocked.pug
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/site/pug/blocked.pug
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| //- Needs expiresMinutes, instancesURL | ||||
| 
 | ||||
| include includes/error.pug | ||||
| 
 | ||||
| - const numberFormat = new Intl.NumberFormat().format | ||||
| 
 | ||||
| doctype html | ||||
| html | ||||
| 	head | ||||
| 		meta(charset="utf-8") | ||||
| 		meta(name="viewport" content="width=device-width, initial-scale=1") | ||||
| 		title= `Blocked | Bibliogram` | ||||
| 		link(rel="stylesheet" type="text/css" href="/static/css/main.css") | ||||
| 	body.error-page | ||||
| 		+error(503, "Blocked by Instagram") | ||||
| 			| Instagram is refusing to provide data to this server. Try again later to see if the block has been lifted. | ||||
| 			| This error has been cached. The internal cache will expire in #{expiresMinutes} minutes. | ||||
| 			| | ||||
| 			a(href="https://github.com/cloudrac3r/bibliogram/wiki/Instances") You could try browsing Bibliogram on another instance. | ||||
| @ -1,7 +1,6 @@ | ||||
| //- Needs title, message, statusCode | ||||
| //- Needs title, message, statusCode ?explanation | ||||
| 
 | ||||
| include includes/timeline_page.pug | ||||
| include includes/next_page_button.pug | ||||
| include includes/error.pug | ||||
| 
 | ||||
| - const numberFormat = new Intl.NumberFormat().format | ||||
| 
 | ||||
| @ -13,8 +12,6 @@ html | ||||
| 		title= `${title} | Bibliogram` | ||||
| 		link(rel="stylesheet" type="text/css" href="/static/css/main.css") | ||||
| 	body.error-page | ||||
| 		h1.code= statusCode | ||||
| 		p.message= message | ||||
| 		if explanation | ||||
| 			p.explanation= explanation | ||||
| 		a(href="javascript:history.back()").back ← Go back? | ||||
| 		+error(statusCode, message) | ||||
| 			if explanation | ||||
| 				=explanation | ||||
|  | ||||
							
								
								
									
										7
									
								
								src/site/pug/includes/error.pug
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/site/pug/includes/error.pug
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| mixin error(statusCode, message) | ||||
| 	h1.code= statusCode | ||||
| 	p.message= message | ||||
| 	if block | ||||
| 		p.explanation | ||||
| 			block | ||||
| 	a(href="javascript:history.back()").back ← Go back? | ||||
| @ -295,6 +295,9 @@ body | ||||
| 	justify-content: center | ||||
| 	align-items: center | ||||
| 
 | ||||
| 	a, a:visited | ||||
| 		color: #4a93d2 | ||||
| 
 | ||||
| 	.code, .message, .explanation, .back-link | ||||
| 		line-height: 1.2 | ||||
| 		margin: 0px | ||||
| @ -309,13 +312,14 @@ body | ||||
| 		color: #ccc | ||||
| 
 | ||||
| 	.explanation | ||||
| 		line-height: 1.3 | ||||
| 		margin-top: 10px | ||||
| 		font-size: 20px | ||||
| 		color: #bbb | ||||
| 		white-space: pre-line | ||||
| 
 | ||||
| 	.back | ||||
| 		margin-top: 15vh | ||||
| 		color: #4a93d2 | ||||
| 		font-size: 25px | ||||
| 
 | ||||
| .homepage | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user