Unread feed filter & oauth refactoring
* Filters unread feed to not include folders (categories) in which the feed is present. To avoid get double notification * Refactores oauth process with functions to run the process according to development or production mode Refactores thread function to ensure flask server has started before opening the browseroriginal/refs/heads/develop
							parent
							
								
									760a12823f
								
							
						
					
					
						commit
						8aa7bc2dc9
					
				
							
								
								
									
										70
									
								
								ino.py
								
								
								
								
							
							
						
						
									
										70
									
								
								ino.py
								
								
								
								
							| 
						 | 
					@ -35,7 +35,7 @@ import time
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
from config import config
 | 
					from config import config
 | 
				
			||||||
from test2 import app, run_app
 | 
					from oauth import app, run_app
 | 
				
			||||||
from refresh import refresh
 | 
					from refresh import refresh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
| 
						 | 
					@ -79,7 +79,14 @@ client_id = config['client_id']
 | 
				
			||||||
client_secret = config['client_secret']
 | 
					client_secret = config['client_secret']
 | 
				
			||||||
refresh_token = config['refresh_token']
 | 
					refresh_token = config['refresh_token']
 | 
				
			||||||
summary = config['summary']
 | 
					summary = config['summary']
 | 
				
			||||||
 | 
					singular_article = config['singular_article']
 | 
				
			||||||
 | 
					plural_articles = config['plural_articles']
 | 
				
			||||||
 | 
					singular_article = config['singular_article']
 | 
				
			||||||
 | 
					plural_articles = config['plural_articles']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unreadcounts = {}
 | 
				
			||||||
 | 
					subscriptions = {}
 | 
				
			||||||
 | 
					categories = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Make a request to get unread counts
 | 
					# Make a request to get unread counts
 | 
				
			||||||
unread_response = APIrequest(unread_counts_url, bearer)
 | 
					unread_response = APIrequest(unread_counts_url, bearer)
 | 
				
			||||||
| 
						 | 
					@ -129,49 +136,42 @@ print(feeds_list_data)
 | 
				
			||||||
print('\n\n')
 | 
					print('\n\n')
 | 
				
			||||||
print(unread_data)
 | 
					print(unread_data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for item in unread_data['unreadcounts']:
 | 
					for unread in unread_data['unreadcounts']:
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	# Get the count of unread items
 | 
						unread['count'] = int(unread['count'])
 | 
				
			||||||
	count = int(item['count'])
 | 
						if unread['count'] > 0:
 | 
				
			||||||
 | 
							unreadcounts[unread['id']] = unread['count']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	# If there are unread items
 | 
					for subscribed in feeds_list_data['subscriptions']:
 | 
				
			||||||
	# get the ID of the items
 | 
					 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	if count > 0:
 | 
						if subscribed['categories']:
 | 
				
			||||||
		ID = item['id']
 | 
							if subscribed['categories'][0]['id'] not in categories:
 | 
				
			||||||
 | 
								categories.append(subscribed['categories'][0]['id'])
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
		"""
 | 
						subscriptions[subscribed['id']] = subscribed['title']
 | 
				
			||||||
			Loop through the feeds subscriptions.
 | 
					 | 
				
			||||||
			If the ID of unread feed is found in
 | 
					 | 
				
			||||||
			subscriptions (feeds), update ID with
 | 
					 | 
				
			||||||
			the feed title. Otherwise, extract the
 | 
					 | 
				
			||||||
			last part of the ID.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
			This is because Inoreader feeds IDs are not
 | 
					for unread_id, count in unreadcounts.items():
 | 
				
			||||||
			human friendly labels.
 | 
					 | 
				
			||||||
		"""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		for item in feeds_list_data['subscriptions']:
 | 
					 | 
				
			||||||
			if ID in item['id']:
 | 
					 | 
				
			||||||
				ID = item['title']
 | 
					 | 
				
			||||||
			else:
 | 
					 | 
				
			||||||
				ID = ID.split("/")[-1]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		"""
 | 
					 | 
				
			||||||
			Use singular or plural forms
 | 
					 | 
				
			||||||
			depending on number of unread
 | 
					 | 
				
			||||||
			articles.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			Convert count to string and
 | 
					 | 
				
			||||||
			format the message.
 | 
					 | 
				
			||||||
		"""
 | 
					 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	if count == 1:
 | 
						if count == 1:
 | 
				
			||||||
			new_articles = config['singular_article']
 | 
							new_articles = singular_article
 | 
				
			||||||
	else:
 | 
						else:
 | 
				
			||||||
			new_articles = config['plural_articles']
 | 
							new_articles = plural_articles
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	count = str(count)
 | 
						count = str(count)
 | 
				
			||||||
		message = message + count + " " + new_articles + " " + ID + "\n"
 | 
						
 | 
				
			||||||
 | 
						if not unread_id in categories:
 | 
				
			||||||
 | 
							if unread_id.split("/")[-1] == "reading-list":
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
								pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							else:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if unread_id in (k for k,v in subscriptions.items()):
 | 
				
			||||||
 | 
									title = next(v for k, v in subscriptions.items() if k == unread_id) 
 | 
				
			||||||
 | 
								else:
 | 
				
			||||||
 | 
									title = unread_id.split("/")[-1]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								message = message + count + " " + new_articles + " " + title + "\n"
 | 
				
			||||||
	else:
 | 
						else:
 | 
				
			||||||
		pass
 | 
							pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								oauth.py
								
								
								
								
							
							
						
						
									
										18
									
								
								oauth.py
								
								
								
								
							| 
						 | 
					@ -118,11 +118,12 @@ def shutdown():
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    serve(app, host=host, port=port)'''
 | 
					    serve(app, host=host, port=port)'''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def run_prod():
 | 
					 | 
				
			||||||
# Function to start the Flask server
 | 
					# Function to start the Flask server
 | 
				
			||||||
def start_server():
 | 
					def start_server():
 | 
				
			||||||
    serve(app, host=host, port=port)
 | 
					    serve(app, host=host, port=port)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def run_prod():
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Create a new thread for the Flask server
 | 
					    # Create a new thread for the Flask server
 | 
				
			||||||
    server_thread = threading.Thread(target=start_server)
 | 
					    server_thread = threading.Thread(target=start_server)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -138,7 +139,19 @@ def run_prod():
 | 
				
			||||||
    # Launch Firefox with the new profile and open the URL
 | 
					    # Launch Firefox with the new profile and open the URL
 | 
				
			||||||
    subprocess.run([browser_path, "-P", "new_profile", "-no-remote", home_url])
 | 
					    subprocess.run([browser_path, "-P", "new_profile", "-no-remote", home_url])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def run_dev():
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Create a new thread for the Flask server
 | 
				
			||||||
 | 
					    server_thread = threading.Thread(target=start_server)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Start the Flask server thread
 | 
				
			||||||
 | 
					    server_thread.start()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Wait for the Flask server to start (adjust the delay as needed)
 | 
				
			||||||
 | 
					    time.sleep(2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    webbrowser.open(home_url)
 | 
				
			||||||
 | 
					    app.run()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def run_app():
 | 
					def run_app():
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -147,8 +160,7 @@ def run_app():
 | 
				
			||||||
        run_prod()
 | 
					        run_prod()
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        print(prod_status)
 | 
					        print(prod_status)
 | 
				
			||||||
        webbrowser.open(home_url)
 | 
					        run_dev()
 | 
				
			||||||
        app.run()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == '__main__':
 | 
					if __name__ == '__main__':
 | 
				
			||||||
    #app.run()
 | 
					    #app.run()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue