diff --git a/scripts/conf.py b/scripts/conf.py
index 9b79107..e256729 100644
--- a/scripts/conf.py
+++ b/scripts/conf.py
@@ -9,6 +9,7 @@ OFFICIAL_PARTICIPANTS_FILE = STATIC_PATH + '.official_participants'
WEBRING_CSV_FILE = 'webring-participants.csv'
LOCAL_DIR = '' # Assign on script startup
+LOCAL_INSTANCE = '' # Assign on script startup
PROXIES = {
'http': 'socks5h://127.0.0.1:9050',
diff --git a/scripts/lantern.py b/scripts/lantern.py
index b8c80a3..845e187 100644
--- a/scripts/lantern.py
+++ b/scripts/lantern.py
@@ -153,7 +153,7 @@ def main():
if 'Blacklisted' not in webpdf.columns:
webpdf['Blacklisted'] = 'NO'
- webpdf.to_csv(webpcsvfile)
+ save_dataframe(webpdf, webpcsvfile)
##### CHECK IF ARGUMENTS ARE PASSED TO ENTER PROMPT-LESS MODE #####
if len(sys.argv) == 2 and sys.argv[1] == "4":
diff --git a/scripts/logic/lantern_logic.py b/scripts/logic/lantern_logic.py
index f3174a7..68387d0 100644
--- a/scripts/logic/lantern_logic.py
+++ b/scripts/logic/lantern_logic.py
@@ -69,6 +69,8 @@ def clean_csv(df, blacklist):
try:
if not df.empty:
+ df = utils.sort_instances(df, 'Instance', conf.LOCAL_INSTANCE)
+
df = utils.remove_duplications(df)
df = df[~df.apply(lambda row: any(word in str(value) for word in blacklist for value in row), axis=1)]
diff --git a/scripts/logic/options.py b/scripts/logic/options.py
index 9cd3be5..4b4c05b 100644
--- a/scripts/logic/options.py
+++ b/scripts/logic/options.py
@@ -15,10 +15,8 @@ def run_option_4():
utils.print_colors("4) Synchronize new links from new or existing webring participants, into your local csv files")
utils.print_colors('[+] Syncing official webrings to local webrings')
-
- webring_df = utils.get_local_webring_participants()
- current_instance = utils.get_current_instance()
+ webring_df = utils.get_local_webring_participants(conf.LOCAL_INSTANCE)
utils.print_colors('[+] Reading local blacklist and sensitive words')
local_blacklist_df = utils.get_local_blacklist()
@@ -27,13 +25,9 @@ def run_option_4():
utils.print_colors('[+] Reading local verified and unverified')
local_verified_df, local_unverified_df = utils.get_local_verified_and_unverified()
- #Remove all rows
- local_unverified_df = local_unverified_df[0:0]
- local_verified_df = local_verified_df[0:0]
-
for participant in webring_df.itertuples(index=False, name='columns'):
# Check if the participant is my instance
- if current_instance in participant:
+ if conf.LOCAL_INSTANCE in participant:
continue
if participant.Blacklisted == 'YES':
diff --git a/scripts/utils.py b/scripts/utils.py
index 790be16..f0d7f53 100644
--- a/scripts/utils.py
+++ b/scripts/utils.py
@@ -36,7 +36,8 @@ def get_current_instance():
return ""
#Set the local dir on script run
-conf.LOCAL_DIR = conf.PARTICIPANT_DIR + get_current_instance() + '/'
+conf.LOCAL_INSTANCE = get_current_instance()
+conf.LOCAL_DIR = conf.PARTICIPANT_DIR + conf.LOCAL_INSTANCE + '/'
###################### Validations ######################
@@ -305,6 +306,26 @@ def is_row_valid(row):
###################### General ######################
+def renew_csv(df, participant_url):
+ """
+ Removes all rows that are not generated by the local instance
+
+ Parameters
+ ----------
+ df : pd.DataFrame
+ Dataframe we want to renew
+ participant_url : str
+ the instance url
+
+ Returns:
+ --------
+ pd.DataFrame
+ The renewed dataframe
+ """
+
+ return df[df['Instance'] == participant_url]
+
+
def merge_verification_df(receiving_df, merging_df):
"""
Merges 2 dataframes of type verified or unverified (do not merge duplications by name or url)
@@ -336,6 +357,39 @@ def merge_verification_df(receiving_df, merging_df):
except Exception as err:
return receiving_df
+def sort_instances(df, sort_by, preferred=None):
+ """
+ Sorts dataframe
+
+ Parameters
+ ----------
+ df : pd.DataFrame
+ The dataframe to sort
+ sort_by : str
+ The column to sort by
+ preferred(optional) : str
+ the preferred value is if i want the column to be sorted with a preferred value at the start of the dataframe
+
+ Returns
+ -------
+ pd.DataFrame
+ The sorted dataframe
+ """
+
+ try:
+
+ if preferred:
+ df['priority'] = (df[sort_by] == preferred).astype(int)
+ df = df.sort_values(by=['priority', sort_by], ascending=[False, True]).drop(columns='priority')
+
+ else:
+ df = df.sort_values(by=sort_by)
+
+ except Exception as err:
+ print_colors('[-] Sorting failed',is_error=True)
+
+ return df
+
def remove_duplications(df):
"""
Remove url and name duplications from the dataframe
@@ -350,9 +404,10 @@ def remove_duplications(df):
pd.DataFrame
The dataframe after all duplications were removed
"""
+
try:
- df = df.drop_duplicates(subset='Name')
- df = df.drop_duplicates(subset='URL')
+ df = df.drop_duplicates(subset='Name', keep='first')
+ df = df.drop_duplicates(subset='URL', keep='first')
except Exception as err:
print_colors('[-] Removing duplication failed',is_error=True)
@@ -684,10 +739,8 @@ def get_official_participants():
"""
try:
- current_instance = get_current_instance()
-
with open(conf.OFFICIAL_PARTICIPANTS_FILE, 'r') as file:
- return [line.strip() for line in file if current_instance not in line]
+ return [line.strip() for line in file if conf.LOCAL_INSTANCE not in line]
except Exception as err:
print_colors('[-] Couldn\'t read official webring participants file',is_error=True )
@@ -775,10 +828,15 @@ def get_local_verified_and_unverified():
return pd.DataFrame(), pd.DataFrame()
-def get_local_webring_participants():
+def get_local_webring_participants(current_instance):
"""
Make sure the official participants are registered in the webring csv file
+ Parameters
+ ----------
+ current_instance : str
+ The current local instance url
+
Returns
-------
pd.DataFrame
@@ -792,7 +850,9 @@ def get_local_webring_participants():
missing_participants = set(get_official_participants()) - set(webring_df['URL'])
for participant in missing_participants:
- new_row = [{'Name': '','URL': participant,'Description': '','Trusted': 'NO','Status': '','Score': ''}]
+ if participant == current_instance:
+ continue
+ new_row = [{'Name': '','URL': participant,'Description': '','Trusted': 'NO','Status': '','Score': '', 'Blacklisted': 'NO'}]
webring_df = pd.concat([webring_df, pd.DataFrame(new_row)], ignore_index=True)
save_dataframe(webring_df, conf.LOCAL_DIR + conf.WEBRING_CSV_FILE)
diff --git a/www/header.php b/www/header.php
index 0073bf1..2d95866 100644
--- a/www/header.php
+++ b/www/header.php
@@ -181,7 +181,7 @@ function DisplayCategories($instancename, $path) {
if (strtolower($oldcatname) != strtolower($data[1])){
- echo '' . ''. $data[1] . ' ';
+ echo '' . '
'. $data[1] . ' ';
$oldcatname = strtolower($data[1]);
}
@@ -203,8 +203,6 @@ function DisplayCategories($instancename, $path) {
?>
-
-
Update Frequency: every 3 hours
diff --git a/www/index.php b/www/index.php index f147029..9e67613 100644 --- a/www/index.php +++ b/www/index.php @@ -23,6 +23,7 @@Link should be 354
@@ -90,7 +96,7 @@ if (isset($_POST['submit'])){