Skip to content

Commit

Permalink
regenerate report of broken and not yet updated links
Browse files Browse the repository at this point in the history
  • Loading branch information
dungscout96 committed Jan 20, 2021
1 parent 03ef1b9 commit 67a3502
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 241 deletions.
35 changes: 24 additions & 11 deletions code/CheckLinks.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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)

278 changes: 48 additions & 230 deletions link_report.txt
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 67a3502

Please sign in to comment.