From 67a3502a8addeb96960d34bdeb5771f8a9729bfb Mon Sep 17 00:00:00 2001
From: Dung Truong
Date: Tue, 19 Jan 2021 22:02:53 -0800
Subject: [PATCH] regenerate report of broken and not yet updated links
---
code/CheckLinks.py | 35 ++++--
link_report.txt | 278 ++++++++-------------------------------------
2 files changed, 72 insertions(+), 241 deletions(-)
diff --git a/code/CheckLinks.py b/code/CheckLinks.py
index 3f640bb9..8d909918 100644
--- a/code/CheckLinks.py
+++ b/code/CheckLinks.py
@@ -3,23 +3,30 @@
import urllib.request as urllib
import re
from os import listdir
-from os.path import isfile, join
+from os.path import isfile, isdir, join
input_path = "/Users/dtyoung/Documents/EEGLAB/sccn.github.io/_site"
-host = "https://sccn.github.io"
+host = "https://eeglab.org"
def getHTMLFiles(path, prefix=""):
- return [prefix + file for file in listdir(path) if re.search(".*\.html$",file)]
+ files = [join(prefix, file) for file in listdir(path) if re.search(".*\.html$",file)]
+ for folder in [f for f in listdir(path) if isdir(join(path, f))]:
+ files.extend(getHTMLFiles(join(path, folder), join(prefix, folder)))
+ return files
files = getHTMLFiles(input_path)
files.extend(getHTMLFiles(input_path + "/workshops", "workshops/"))
-files.extend(getHTMLFiles(input_path + "/tutorials", "tutorials/"))
+files = getHTMLFiles(input_path + "/tutorials", "tutorials/")
+files.extend(getHTMLFiles(input_path + "/download", "download/"))
+files.extend(getHTMLFiles(input_path + "/news", "news/"))
+files.extend(getHTMLFiles(input_path + "/others", "others/"))
+files.extend(getHTMLFiles(input_path + "/support", "support/"))
files = list(set(files))
files.sort()
print(files)
with open('link_report.txt', "w") as w:
- w.write("BROKEN LINKS\n")
+ w.write("BROKEN or NOT UPDATED LINKS\n")
for file in files:
# print(join(input_path, file))
# with open(join(input_path, file), "r") as f:
@@ -32,9 +39,15 @@ def getHTMLFiles(path, prefix=""):
soup = BeautifulSoup(page.content, 'html.parser')
urls = soup.find_all('a')
for link in urls:
- href = link['href']
- if href.startswith('/'):
- # print(host+href)
- response = requests.get(host + href)
- if response.status_code == 404:
- w.write("\t-" + link.string + ": " + href + "\n")
+ try:
+ href = link['href']
+ if href.startswith('/'):
+ # print(host+href)
+ response = requests.get(host + href)
+ if href.startswith("http://sccn.ucsd.edu/wiki") or response.status_code == 404:
+ w.write("\t-" + link.string + ": " + href + "\n")
+ elif href.startswith("http://sccn.ucsd.edu/wiki"):
+ w.write("\t-" + link.string + ": " + href + "\n")
+ except Exception:
+ print(link)
+
diff --git a/link_report.txt b/link_report.txt
index d2a9da52..9fa89e5f 100644
--- a/link_report.txt
+++ b/link_report.txt
@@ -1,235 +1,53 @@
-BROKEN LINKS
-404.html
-Broken page: images.html
+BROKEN or NOT UPDATED LINKS
index.html
- -right|400px: /Image:Eeglab_small.jpg
- -EEGLAB hardware and software recommendations: /EEGLAB_hardware_and_software_recommendations
-Download EEGLAB from GIT: /How_to_download_EEGLAB
- -Download a compiled version of EEGLAB: /A13:_Compiled_EEGLAB
- -EEGLAB extensions/plugins: /EEGLAB_Extensions
- -EEGLAB revision history: /EEGLAB_revision_history
- -Bugs and Suggestions: /EEGLAB_Bugs
- -EEGLAB News and Discussion email lists: /EEGLAB_mailing_lists
- -EEGLAB reference articles - Please cite: /EEGLAB_References
- -Using EEGLAB vs. Commercial EEG Software: /EEGLAB_vs._Commercial_EEG_Software
- -Working with EEGLAB and Fieldtrip: /EEGLAB_and_Fieldtrip
- -Running EEGLAB on open source Octave: /Running_EEGLAB_on_Octave
- -EEGLAB on MATLAB versus Python: /EEGLAB_and_python
- -NEW Running EEGLAB on high performance computing resources - The Open EEGLAB Portal: /EEGLAB_and_high_performance_computing
- -NEW Reading 3D electrode locations from an inexpensive 3D photo scan - get_chanlocs: /Get_chanlocs
- -Using EEGLAB to process MEG data: /EEGLAB_and_MEG_data
- -List of functions called by the EEGLAB menu: /MenuFunctions
- -EEGLAB History: The first decade of 2001-2011: /The_first_decade_of_EEGLAB
- -EEGLAB and MEX functions to recompile: /Mex_EEGLAB
- -EEGLAB filtering FAQ: /Firfilt_FAQ
- -(requires subscription here): /EEGLAB_mailing_lists
- -Other TIPS and FAQ: /TIPS_and_FAQ
- -EEGLAB extensions and plugins: /EEGLAB_Extensions_and_plugins
- -ERICA - Experimental Real-time Interactive Control and Analysis framework: /ERICA
- -Channel Location Files download: /Channel_Location_Files
- -Binary version of the runica() infomax ICA decomposition function: /binica
- -Download EEGLAB test scripts: /EEGLAB_test_cases
- -300px|thumb|right|upright=3|Mugs from the 17th EEGLAB workshop: /File:EEGLAB-mug-shot.png
- -The Online EEGLAB Workshop: /Online_EEGLAB_Workshop
- -Future EEGLAB workshops: /Future_workshops
- -Thirty-first EEGLAB Workshop: /EEGLAB_2020_Lublin
- -Twenty-ninth EEGLAB Workshop: /EEGLAB_2019_Aspet
- -Twenty-eighth EEGLAB Workshop: /EEGLAB_2018_at_UCSD
- -Twenty-seventh EEGLAB Workshop: /EEGLAB_2018_Pittsburgh
- -Twenty-sixth EEGLAB Workshop: /EEGLAB_2017_Israel
- -Twenty-fifth EEGLAB Workshop: /EEGLAB_2017_Japan
- -Twenty-fourth EEGLAB Workshop: /EEGLAB_2017_Aspet
- -Twenty-third EEGLAB Workshop: /EEGLAB_2017_Mysore
- -Twenty-second EEGLAB Workshop: /EEGLAB_2016_at_UCSD
- -Twenty-first EEGLAB Workshop: /EEGLAB_2016_Santa_Margherita_Ligure
- -Twentieth EEGLAB Workshop: /EEGLAB_2015_Sheffield
- -Nineteenth EEGLAB Workshop: /EEGLAB_2015_Aspet
- -Eighteenth EEGLAB Workshop: /EEGLAB_2014_Rio
- -Seventeenth EEGLAB Workshop: /EEGLAB_2013_UCSD
- -Sixteenth EEGLAB Workshop: /EEGLAB_2013_Aspet
- -Fifteenth EEGLAB Workshop: /EEGLAB_2012_Beijing
- -Fourteenth EEGLAB Workshop: /EEGLAB_2011_Mallorca
- -Thirteenth EEGLAB Workshop: /EEGLAB_2011_Aspet
- -Twelfth EEGLAB Workshop: /Twelfth_EEGLAB_Workshop
- -Eleventh EEGLAB Workshop: /Eleventh_EEGLAB_Workshop_Taiwan
- -Tenth EEGLAB Workshop: /Tenth_EEGLAB_Workshop
- -Ninth EEGLAB Workshop: /EEGLAB09AUS
- -Eighth EEGLAB Workshop: /EEGLAB09ASPET
- -Seventh EEGLAB Workshop: /EEGLAB09EPIC
- -Online EEGLAB Workshop: /Online_EEGLAB_Workshop
- -Quick ICA Component Rejection Tutorial: /Quick_Rejection_Tutorial
- -Getting Started: /Getting_Started
- -I. Single Subject Data Processing: /I.Single_subject_data_processing_tutorial
- -Chapter 01: Loading Data in EEGLAB: /I.1:_Loading_Data_in_EEGLAB
- -Chapter 02: Channel Locations: /Chapter_02:_Channel_Locations
- -Chapter 03: Plotting Channel Spectra and Maps: /Chapter_03:_Plotting_Channel_Spectra_and_Maps
- -Chapter 04: Preprocessing Tools: /Chapter_04:_Preprocessing_Tools
- -Chapter 05: Extracting Data Epochs: /Chapter_05:_Extracting_Data_Epochs
- -Chapter 06: Data Averaging: /Chapter_06:_Data_Averaging
- -Chapter 07: Selecting Data Epochs and Comparing: /Chapter_07:_Selecting_Data_Epochs_and_Comparing
- -Chapter 08: Plotting ERP images: /Chapter_08:_Plotting_ERP_images
- -Chapter 09: Decomposing Data Using ICA: /Chapter_09:_Decomposing_Data_Using_ICA
- -Chapter 10: Working with ICA components: /Chapter_10:_Working_with_ICA_components
- -Chapter 11: Time/Frequency decomposition: /Chapter_11:_Time/Frequency_decomposition
- -Chapter 12: Multiple Datasets: /Chapter_12:_Multiple_Datasets
- -II. Multiple Subject Processing: /II.Multiple_subject_processing_tutorial
- -Chapter 01: Multiple Subject Proccessing Overview: /Chapter_01:_Multiple_Subject_Proccessing_Overview
- -Chapter 02: STUDY Creation: /Chapter_02:_STUDY_Creation
- -Chapter 03: Working with STUDY designs: /Chapter_03:_Working_with_STUDY_designs
- -Chapter 04: STUDY Data Visualization Tools: /Chapter_04:_STUDY_Data_Visualization_Tools
- -Chapter 05: Component Clustering Tools: /Chapter_05:_Component_Clustering_Tools
- -Chapter 06: Study Statistics and Visualization Options: /Chapter_06:_Study_Statistics_and_Visualization_Options
- -Chapter 07: EEGLAB Study Data Structures: /Chapter_07:_EEGLAB_Study_Data_Structures
- -Chapter 08: Command line STUDY functions: /Chapter_08:_Command_line_STUDY_functions
- -III. Advanced Topics: /III.Advanced_Topics
- -Chapter 01: Rejecting Artifacts: /Chapter_01:_Rejecting_Artifacts
- -Chapter 02: Writing EEGLAB Scripts: /Chapter_02:_Writing_EEGLAB_Scripts
- -Chapter 03: Event Processing: /Chapter_03:_Event_Processing
- -IV. Appendix: /IV.Appendix
- -A01: Importing Continuous and Epoched Data: /A01:_Importing_Continuous_and_Epoched_Data
- -A02: Importing Event Epoch Info: /A02:_Importing_Event_Epoch_Info
- -A03: Importing Channel Locations: /A03:_Importing_Channel_Locations
- -A04: Exporting Data: /A04:_Exporting_Data
- -A05: Data Structures: /A05:_Data_Structures
- -A06: EEGLAB option menu: /A06:_EEGLAB_option_menu
- -A07: Contributing to EEGLAB: /A07:_Contributing_to_EEGLAB
- -A08: DIPFIT: /A08:_DIPFIT
- -A09: Using custom MRI from individual subjects: /A09:_Using_custom_MRI_from_individual_subjects
- -A10: MI-clust: /A10:_MI-clust
- -A11: BESA (outdated): /A11:_BESA_\(outdated\)
- -A12: Quick Tutorial on Rejection: /A12:_Quick_Tutorial_on_Rejection
- -A13: Compiled EEGLAB: /A13:_Compiled_EEGLAB
-tutorials/II.Multiple_subject_processing_tutorial.html
- -Chapter 01: Multiple Subject Proccessing Overview: /Chapter_01:_Multiple_Subject_Proccessing_Overview
- -Chapter 02: STUDY Creation: /Chapter_02:_STUDY_Creation
- -Chapter 03: Working with STUDY designs: /Chapter_03:_Working_with_STUDY_designs
- -Chapter 04: STUDY Data Visualization Tools: /Chapter_04:_STUDY_Data_Visualization_Tools
- -Chapter 05: Component Clustering Tools: /Chapter_05:_Component_Clustering_Tools
- -Chapter 06: Study Statistics and Visualization Options: /Chapter_06:_Study_Statistics_and_Visualization_Options
- -Chapter 07: EEGLAB Study Data Structures: /Chapter_07:_EEGLAB_Study_Data_Structures
- -Chapter 08: Command line STUDY functions: /Chapter_08:_Command_line_STUDY_functions
- -Category:EEGLAB: /Category:EEGLAB
-tutorials/III.Advanced_Topics.html
- -Chapter 01: Rejecting Artifacts: /Chapter_01:_Rejecting_Artifacts
- -Chapter 02: Writing EEGLAB Scripts: /Chapter_02:_Writing_EEGLAB_Scripts
- -Chapter 03: Event Processing: /Chapter_03:_Event_Processing
- -Category:EEGLAB: /Category:EEGLAB
-tutorials/IV.Appendix.html
- -A01: Importing Continuous and Epoched Data: /A01:_Importing_Continuous_and_Epoched_Data
- -A02: Importing Event Epoch Info: /A02:_Importing_Event_Epoch_Info
- -A03: Importing Channel Locations: /A03:_Importing_Channel_Locations
- -A04: Exporting Data: /A04:_Exporting_Data
- -A05: Data Structures: /A05:_Data_Structures
- -A06: EEGLAB option menu: /A06:_EEGLAB_option_menu
- -A07: Contributing to EEGLAB: /A07:_Contributing_to_EEGLAB
- -A08: DIPFIT: /A08:_DIPFIT
- -A09: Using custom MRI from individual subjects: /A09:_Using_custom_MRI_from_individual_subjects
- -A10: MI-clust: /A10:_MI-clust
- -A11: BESA (outdated): /A11:_BESA_(outdated)
- -A12: Quick Tutorial on Rejection: /A12:_Quick_Tutorial_on_Rejection
- -A13: Compiled EEGLAB: /A13:_Compiled_EEGLAB
- -Category:EEGLAB: /Category:EEGLAB
-tutorials/index.html
- -300px|thumb|right|upright=3|Mugs from the 17th EEGLAB workshop: /File:EEGLAB-mug-shot.png
- -The Online EEGLAB Workshop: /Online_EEGLAB_Workshop
- -Future EEGLAB workshops: /Future_workshops
- -Thirty-first EEGLAB Workshop: /EEGLAB_2020_Lublin
- -Twenty-ninth EEGLAB Workshop: /EEGLAB_2019_Aspet
- -Twenty-eighth EEGLAB Workshop: /EEGLAB_2018_at_UCSD
- -Twenty-seventh EEGLAB Workshop: /EEGLAB_2018_Pittsburgh
- -Twenty-sixth EEGLAB Workshop: /EEGLAB_2017_Israel
- -Twenty-fifth EEGLAB Workshop: /EEGLAB_2017_Japan
- -Twenty-fourth EEGLAB Workshop: /EEGLAB_2017_Aspet
- -Twenty-third EEGLAB Workshop: /EEGLAB_2017_Mysore
- -Twenty-second EEGLAB Workshop: /EEGLAB_2016_at_UCSD
- -Twenty-first EEGLAB Workshop: /EEGLAB_2016_Santa_Margherita_Ligure
- -Twentieth EEGLAB Workshop: /EEGLAB_2015_Sheffield
- -Nineteenth EEGLAB Workshop: /EEGLAB_2015_Aspet
- -Eighteenth EEGLAB Workshop: /EEGLAB_2014_Rio
- -Seventeenth EEGLAB Workshop: /EEGLAB_2013_UCSD
- -Sixteenth EEGLAB Workshop: /EEGLAB_2013_Aspet
- -Fifteenth EEGLAB Workshop: /EEGLAB_2012_Beijing
- -Fourteenth EEGLAB Workshop: /EEGLAB_2011_Mallorca
- -Thirteenth EEGLAB Workshop: /EEGLAB_2011_Aspet
- -Twelfth EEGLAB Workshop: /Twelfth_EEGLAB_Workshop
- -Eleventh EEGLAB Workshop: /Eleventh_EEGLAB_Workshop_Taiwan
- -Tenth EEGLAB Workshop: /Tenth_EEGLAB_Workshop
- -Ninth EEGLAB Workshop: /EEGLAB09AUS
- -Eighth EEGLAB Workshop: /EEGLAB09ASPET
- -Seventh EEGLAB Workshop: /EEGLAB09EPIC
-tutorials/single-subject.html
- -Chapter 01: Loading Data in EEGLAB: /Chapter_01:_Loading_Data_in_EEGLAB
- -Chapter 02: Channel Locations: /Chapter_02:_Channel_Locations
- -Chapter 03: Plotting Channel Spectra and Maps: /Chapter_03:_Plotting_Channel_Spectra_and_Maps
- -Chapter 04: Preprocessing Tools: /Chapter_04:_Preprocessing_Tools
- -Chapter 05: Extracting Data Epochs: /Chapter_05:_Extracting_Data_Epochs
- -Chapter 06: Data Averaging: /Chapter_06:_Data_Averaging
- -Chapter 07: Selecting Data Epochs and Comparing: /Chapter_07:_Selecting_Data_Epochs_and_Comparing
- -Chapter 08: Plotting ERP images: /Chapter_08:_Plotting_ERP_images
- -Chapter 09: Decomposing Data Using ICA: /Chapter_09:_Decomposing_Data_Using_ICA
- -Chapter 10: Working with ICA components: /Chapter_10:_Working_with_ICA_components
- -Chapter 11: Time/Frequency decomposition: /Chapter_11:_Time/Frequency_decomposition
- -Chapter 12: Multiple Datasets: /Chapter_12:_Multiple_Datasets
- -Category:EEGLAB: /Category:EEGLAB
-
-
-
-
-workshops/EEGLAB_2009_Aspet.html
- -EEGLAB wiki: /EEGLAB
-
-workshops/EEGLAB_2011_Aspet.html
- -EEGLAB wiki: /EEGLAB
+ -Download EEGLAB test cases: /EEGLAB_test_cases
+ -Other TIPS and FAQ: /FAQ/TIPS_and_FAQ
+ -EEGLAB filtering FAQ: /FAQ/Firfilt_FAQ
+others/EEGLAB_Extensions.html
+ -How to contribute to EEGLAB: /tutorials/misc/Contributing_to_EEGLAB.html
+ -PACT: http://sccn.ucsd.edu/wiki/PACT
+others/Firfilt_FAQ.html
+ -Q3: http://sccn.ucsd.edu/wiki/Firfilt_FAQ#Q._What_is_the_difference_between_the_.E2.80.9CBasic_FIR_filter_.28new.29.E2.80.9D_and_the_.E2.80.9CWindowed_sinc_FIR_filter.E2.80.9D.3F
+others/How_to_download_EEGLAB.html
+ -page: /others/Fork_the_EEGLAB_repository.html
+ -page: /tutorials/misc/Contributing_to_EEGLAB.html
+others/Running_EEGLAB_on_Octave.html
+ -this page: /others/Fork_the_EEGLAB_repository.html
+ -This other page: /tutorials/misc/Contributing_to_EEGLAB.html
+tutorials/04_Import/Importing_Continuous_and_Epoched_Data.html
+ -quickstart guide: /Tutorials/quickstart.html
+ -quickstart guide: /Tutorials/quickstart.html
+tutorials/05_Preprocess/rereferencing.html
+ -Appendix: /tutorials/IV.Appendix/rereferencing_background.html
+tutorials/06_RejectArtifacts/RunICA.html
+ -Appendix: /tutorials/IV.Appendix/ICA_background.html
+ -Appendix: /tutorials/IV.Appendix/ICA_background.html#note-on-ica-algorithms
+ -this Appendix section: /tutorials/IV.Appendix/ICA_background.html#how-many-data-points-do-i-need-to-run-an-ica
+tutorials/06_RejectArtifacts/cleanrawdata.html
+ -this section of the tutorial: /Tutorials/Rejecting_Artifacts_Legacy_Menus.html
+tutorials/10_Group_analysis/working_with_study_designs.html
+ -STUDY design structure: /tutorials/multi-subject/EEGLAB-STUDY-data-structure.html
+ -STUDY structure: /tutorials/multi-subject/EEGLAB-STUDY-data-structure.html
+tutorials/ConceptsGuide/Data_Structures.html
+ -component clustering: /tutorial/10_Group_analysis/component_clustering_tools.html
+tutorials/contribute/Contributing_to_EEGLAB.html
+ -pull requests: /others/Fork_the_EEGLAB_repository.html
+ -plugin: /tutorials/misc/Contributing_to_EEGLAB.html
+tutorials/contribute/design_plugin.html
+ -example section: /contribute/design_plugin.html#eegplugin_-function-examples
+tutorials/misc/Rejecting_Artifacts_Legacy_Menus.html
+ -section: /tutorials/RejectArtifacts/
+workshops/EEGLAB_2010_SanDiego.html
+ -Browse the EEGLAB wikitutorial: http://sccn.ucsd.edu/wiki/eeglab
+ -Browse the ERICA DataSuite wiki tutorial: http://sccn.ucsd.edu/wiki/DataSuite
+ -Browse the ERICA MatRiver wiki tutorial: http://sccn.ucsd.edu/wiki/MatRiver
+ -Browse the ERICA Enactor wiki tutorial: http://sccn.ucsd.edu/wiki/Enactor
+ -Browse the SCCN MoBI lab wiki tutorial: http://sccn.ucsd.edu/wiki/MoBI_Lab
workshops/EEGLAB_2012_Beijing.html
- -EEGLAB wiki: /EEGLAB
-workshops/EEGLAB_2013_Aspet.html
- -EEGLAB tutorial wiki: /EEGLAB
-workshops/EEGLAB_2013_UCSD.html
- -EEGLAB tutorial wiki: /EEGLAB
-workshops/EEGLAB_2014_Rio.html
- -EEGLAB tutorial wiki: /EEGLAB
-workshops/EEGLAB_2015_Aspet.html
-workshops/EEGLAB_2015_Sheffield.html
- -EEGLAB tutorial wiki: /EEGLAB
-workshops/EEGLAB_2016_SML.html
- -EEGLAB tutorial wiki: /EEGLAB
-workshops/EEGLAB_2017_Aspet.html
- -EEGLAB tutorial wiki: /EEGLAB
-workshops/EEGLAB_2017_Israel.html
- -EEGLAB tutorial wiki: /EEGLAB
-workshops/EEGLAB_2017_Japan.html
- -EEGLAB tutorial wiki: /EEGLAB
-workshops/EEGLAB_2017_Mysore.html
- -EEGLAB tutorial wiki: /EEGLAB
-workshops/EEGLAB_2018_Pittsburgh.html
- -EEGLAB tutorial wiki: /EEGLAB
-workshops/EEGLAB_2018_at_UCSD.html
- -CSP: /media:CSP.png
-workshops/EEGLAB_2019_Aspet.html
- -EEGLAB tutorial wiki: /EEGLAB
+ -this note on the importance of knowing skull conductivity: http://sccn.ucsd.edu/wiki/NFT_Appendix_C
+ -nf): /media:nft_presentation12.pdf
workshops/EEGLAB_2020_Lublin.html
- -EEGLAB tutorial wiki: /EEGLAB
-
-Missing material
-------------------
+ -here: /workshops/reading_material
workshops/Online_EEGLAB_Workshop.html
- -native support for eLoreta: /A08:_DIPFIT#DIPFIT_eLoreta
-workshops/index.html
- -Eleventh EEGLAB Workshop: /workshops/Eleventh_EEGLAB_Workshop_Taiwan
-
-To add once we have the location of tutorials:
------------------------------------------------
-
-workshops/EEGLAB_2011_Mallorca.html
- -EEGLAB wiki: /EEGLAB
- -Linear_Representations_and_Basis_Vectors: /Linear_Representations_and_Basis_Vectors
- -Random_Variables_and_Probability_Density_Functions: /Random_Variables_and_Probability_Density_Functions
- -Amica: /Amica
- -Amica_Download: /Amica_Download
-
-
-workshops/EEGLAB_2009_Bloomington.html
- -Group Research Questions (15 Mb): /Media:ProjectQuestions.doc
-
-workshops/EEGLAB_2009_Aspet.html
- -these instructions: /EEGLAB/I.Analyzing_Data_in_EEGLAB#Installing_EEGLAB_and_tutorial_files
+ -Ten lecture course on contemporary BCI design: http://sccn.ucsd.edu/wiki/Introduction_To_Modern_Brain-Computer_Interface_Design