Merge branch 'work-in-progress' into 'master'
Update 8 files See merge request sjehuda/slixfeed!2
This commit is contained in:
commit
30c43fc6c2
75 changed files with 3397 additions and 751 deletions
1
datasets/boards/boat.csv
Normal file
1
datasets/boards/boat.csv
Normal file
|
@ -0,0 +1 @@
|
||||||
|
name, url, language, country
|
|
1
datasets/boards/rent.csv
Normal file
1
datasets/boards/rent.csv
Normal file
|
@ -0,0 +1 @@
|
||||||
|
name, url, language, country
|
|
1
datasets/boards/vacancy.csv
Normal file
1
datasets/boards/vacancy.csv
Normal file
|
@ -0,0 +1 @@
|
||||||
|
name, url, language, country
|
|
1
datasets/boards/vehicles.csv
Normal file
1
datasets/boards/vehicles.csv
Normal file
|
@ -0,0 +1 @@
|
||||||
|
name, url, language, country
|
|
2
datasets/catalogues/book.csv
Normal file
2
datasets/catalogues/book.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
New Online Books, https://onlinebooks.library.upenn.edu/newrss.xml, en-US, USA
|
|
2
datasets/catalogues/music.csv
Normal file
2
datasets/catalogues/music.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
MetaBrainz Blog, https://blog.metabrainz.org/feed/, en-US, Worldwide
|
|
17
datasets/catalogues/software.csv
Normal file
17
datasets/catalogues/software.csv
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
name, url, language, country
|
||||||
|
Arch Linux: Recent package updates, https://archlinux.org/feeds/packages/, en-US, Worldwide
|
||||||
|
Arch Linux: AUR Newest Packages, https://aur.archlinux.org/rss/, en-US, Worldwide
|
||||||
|
PyPI recent updates, https://pypi.org/rss/updates.xml, en-US, Worldwide
|
||||||
|
ctan-ann, https://www.ctan.org/ctan-ann/atom.xml, en-US, Worldwide
|
||||||
|
Recent CPAN uploads - MetaCPAN, https://metacpan.org/recent.rss, en-US, Worldwide
|
||||||
|
Announcements published via Launchpad, http://feeds.launchpad.net/announcements.atom, en-US, Worldwide
|
||||||
|
store.kde.org - Latest Products, https://store.kde.org/content.rdf, en-US, Worldwide
|
||||||
|
Parabola GNU/Linux-libre: Recent package updates, https://www.parabola.nu/feeds/packages/, en-US, Worldwide
|
||||||
|
SlackBuilds.org ChangeLog, https://slackbuilds.org/rss/ChangeLog.rss, en-US, Worldwide
|
||||||
|
OpenDesktop.org - Latest Products, https://www.opendesktop.org/content.rdf, en-US, Worldwide
|
||||||
|
Flathub – recently updated applications, https://flathub.org/api/v2/feed/recently-updated, en-US, Worldwide
|
||||||
|
https://flathub.org/api/v2/feed/new, Flathub – recently added applications, en-US, Worldwide
|
||||||
|
Latest extensions in GNOME Shell Extensions, https://extensions.gnome.org/rss/, en-US, Worldwide
|
||||||
|
DistroWatch.com: News, https://distrowatch.com/news/dw.xml, en-US, Worldwide
|
||||||
|
GreasyFork: Recently Updates Userscripts, https://greasyfork.org/en/scripts.atom?sort=updated, en-US, Worldwide
|
||||||
|
xfce-look.org - Latest Products, https://www.xfce-look.org/content.rdf, en-US, Worldwide
|
|
2
datasets/downloads/leaked_data.csv
Normal file
2
datasets/downloads/leaked_data.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
Leaked Documents - Postman, http://tracker2.postman.i2p/?view=RSS&mapset=69219, en-US, Worldwide
|
|
3
datasets/events/club.csv
Normal file
3
datasets/events/club.csv
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
name, url, language, country
|
||||||
|
DNA Lounge, https://cdn.dnalounge.com/calendar/dnalounge.rss, en-US, USA
|
||||||
|
DNA Lounge, https://www.dnalounge.com/calendar/dnalounge.rss, en-US, USA
|
|
2
datasets/forums/coding.csv
Normal file
2
datasets/forums/coding.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
SQLite, https://sqlite.org/forum/timeline.rss, en-US, Worldwide
|
|
2
datasets/forums/hacking.csv
Normal file
2
datasets/forums/hacking.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
Leak Zone - Leaking & Cracking Forum - All Forums, https://leakzone.net/syndication.php?type=atom1.0, en-US, Worldwide
|
|
36
datasets/governments/ireland.csv
Normal file
36
datasets/governments/ireland.csv
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
name, url, language, country
|
||||||
|
Agri-Food and Biosciences Institute (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/agri-food-and-biosciences-institute.atom, en-UK, United Kingdom
|
||||||
|
Arts Council of Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/arts-council-of-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Boundary Commission for Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/boundary-commission-for-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Department for Communities (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-for-communities-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Department for Infrastructure (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-for-infrastructure-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Department for the Economy (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-for-the-economy-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
"Department of Agriculture, Environment and Rural Affairs (Northern Ireland) - Activity on GOV.UK", https://www.gov.uk/government/organisations/department-of-agriculture-environment-and-rural-affairs-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Department of Education (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-of-education.atom, en-UK, United Kingdom
|
||||||
|
Department of Finance (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-of-finance-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Department of Health (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-of-health-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Department of Justice (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-of-justice-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
HSC Business Services Organisation (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/hsc-business-services-organisation-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Invest Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/invest-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Labour Relations Agency (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/labour-relations-agency.atom, en-UK, United Kingdom
|
||||||
|
Legal Services Agency (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/legal-services-agency-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Livestock and Meat Commission for Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/livestock-and-meat-commission-for-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Cancer Registry - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-cancer-registry.atom, en-UK, United Kingdom
|
||||||
|
"Northern Ireland Council for the Curriculum, Examinations and Assessment - Activity on GOV.UK", https://www.gov.uk/government/organisations/northern-ireland-council-for-the-curriculum-examinations-and-assessment.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Courts and Tribunals Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-court-service.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Executive - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-executive.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Housing Executive - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-housing-executive.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Human Rights Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-human-rights-commission.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-office.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Policing Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-policing-board.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Prison Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-prison-service.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Statistics and Research Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-statistics-and-research-agency.atom, en-UK, United Kingdom
|
||||||
|
Office of the Police Ombudsman for Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-the-police-ombudsman-for-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Parades Commission for Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/parades-commission-for-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Police Service of Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/police-service-of-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Probation Board for Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/probation-board-for-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Public Health Agency (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/public-health-agency-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Public Prosecution Service for Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/public-prosecution-service-for-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Sport Northern Ireland (Sports Council for Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/sports-council-for-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
The Executive Office (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-executive-office-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Youth Justice Agency of Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/youth-justice-agency-of-northern-ireland.atom, en-UK, United Kingdom
|
|
4
datasets/governments/luxemburg.csv
Normal file
4
datasets/governments/luxemburg.csv
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
name, url, language, country
|
||||||
|
Gouvernement - All of the news, https://gouvernement.lu/en/actualites/toutes_actualites.rss, en-UK, Luxemburg
|
||||||
|
Gouvernement - Alle Nachrichten, https://gouvernement.lu/de/actualites/toutes_actualites.rss, de-DE, Luxemburg
|
||||||
|
Gouvernement - Toutes les actualités, https://gouvernement.lu/fr/actualites/toutes_actualites.rss, fr-FR, Luxemburg
|
|
619
datasets/governments/united_Kingdom.csv
Normal file
619
datasets/governments/united_Kingdom.csv
Normal file
|
@ -0,0 +1,619 @@
|
||||||
|
name, url, language, country
|
||||||
|
Academy for Social Justice - Activity on GOV.UK, https://www.gov.uk/government/organisations/academy-for-social-justice.atom, en-UK, United Kingdom
|
||||||
|
Accelerated Capability Environment - Activity on GOV.UK, https://www.gov.uk/government/organisations/accelerated-capability-environment.atom, en-UK, United Kingdom
|
||||||
|
Active Travel England - Activity on GOV.UK, https://www.gov.uk/government/organisations/active-travel-england.atom, en-UK, United Kingdom
|
||||||
|
Administration of Radioactive Substances Advisory Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/administration-of-radioactive-substances-advisory-committee.atom, en-UK, United Kingdom
|
||||||
|
Advanced Research and Invention Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/advanced-research-and-invention-agency.atom, en-UK, United Kingdom
|
||||||
|
Advisory Committee on Animal Feedingstuffs - Activity on GOV.UK, https://www.gov.uk/government/organisations/advisory-committee-on-animal-feedingstuffs.atom, en-UK, United Kingdom
|
||||||
|
Advisory Committee on Business Appointments - Activity on GOV.UK, https://www.gov.uk/government/organisations/advisory-committee-on-business-appointments.atom, en-UK, United Kingdom
|
||||||
|
Advisory Committee on Clinical Impact Awards - Activity on GOV.UK, https://www.gov.uk/government/organisations/advisory-committee-on-clinical-impact-awards.atom, en-UK, United Kingdom
|
||||||
|
Advisory Committee on Conscientious Objectors - Activity on GOV.UK, https://www.gov.uk/government/organisations/advisory-committee-on-conscientious-objectors.atom, en-UK, United Kingdom
|
||||||
|
Advisory Committee on Novel Foods and Processes - Activity on GOV.UK, https://www.gov.uk/government/organisations/advisory-committee-on-novel-foods-and-processes.atom, en-UK, United Kingdom
|
||||||
|
Advisory Committee on Releases to the Environment - Activity on GOV.UK, https://www.gov.uk/government/organisations/advisory-committee-on-releases-to-the-environment.atom, en-UK, United Kingdom
|
||||||
|
Advisory Committee on the Microbiological Safety of Food - Activity on GOV.UK, https://www.gov.uk/government/organisations/advisory-committee-on-the-microbiological-safety-of-food.atom, en-UK, United Kingdom
|
||||||
|
Advisory Committees on Justices of the Peace - Activity on GOV.UK, https://www.gov.uk/government/organisations/advisory-committees-on-justices-of-the-peace.atom, en-UK, United Kingdom
|
||||||
|
"Advisory, Conciliation and Arbitration Service - Activity on GOV.UK", https://www.gov.uk/government/organisations/acas.atom, en-UK, United Kingdom
|
||||||
|
Advisory Council on the Misuse of Drugs - Activity on GOV.UK, https://www.gov.uk/government/organisations/advisory-council-on-the-misuse-of-drugs.atom, en-UK, United Kingdom
|
||||||
|
Advisory Group on Military and Emergency Response Medicine - Activity on GOV.UK, https://www.gov.uk/government/organisations/advisory-group-on-military-medicine.atom, en-UK, United Kingdom
|
||||||
|
Agriculture and Horticulture Development Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/agriculture-and-horticulture-development-board.atom, en-UK, United Kingdom
|
||||||
|
Agri-Food and Biosciences Institute (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/agri-food-and-biosciences-institute.atom, en-UK, United Kingdom
|
||||||
|
Air Accidents Investigation Branch - Activity on GOV.UK, https://www.gov.uk/government/organisations/air-accidents-investigation-branch.atom, en-UK, United Kingdom
|
||||||
|
Animal and Plant Health Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/animal-and-plant-health-agency.atom, en-UK, United Kingdom
|
||||||
|
Animals in Science Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/animals-in-science-committee.atom, en-UK, United Kingdom
|
||||||
|
Architects Registration Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/architects-registration-board.atom, en-UK, United Kingdom
|
||||||
|
Armed Forces Covenant Fund Trust - Activity on GOV.UK, https://www.gov.uk/government/organisations/armed-forces-covenant-fund-trust.atom, en-UK, United Kingdom
|
||||||
|
Armed Forces' Pay Review Body - Activity on GOV.UK, https://www.gov.uk/government/organisations/armed-forces-pay-review-body.atom, en-UK, United Kingdom
|
||||||
|
Arts and Humanities Research Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/arts-and-humanities-research-council.atom, en-UK, United Kingdom
|
||||||
|
Arts Council England - Activity on GOV.UK, https://www.gov.uk/government/organisations/arts-council-england.atom, en-UK, United Kingdom
|
||||||
|
Arts Council of Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/arts-council-of-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Arts Council of Wales - Activity on GOV.UK, https://www.gov.uk/government/organisations/arts-council-of-wales.atom, en-UK, United Kingdom
|
||||||
|
Atomic Weapons Establishment - Activity on GOV.UK, https://www.gov.uk/government/organisations/atomic-weapons-establishment.atom, en-UK, United Kingdom
|
||||||
|
Attorney General's Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/attorney-generals-office.atom, en-UK, United Kingdom
|
||||||
|
Bank of England - Activity on GOV.UK, https://www.gov.uk/government/organisations/bank-of-england.atom, en-UK, United Kingdom
|
||||||
|
BBC - Activity on GOV.UK, https://www.gov.uk/government/organisations/bbc.atom, en-UK, United Kingdom
|
||||||
|
BBC World Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/bbc-world-service.atom, en-UK, United Kingdom
|
||||||
|
Biometrics and Forensics Ethics Group - Activity on GOV.UK, https://www.gov.uk/government/organisations/biometrics-and-forensics-ethics-group.atom, en-UK, United Kingdom
|
||||||
|
Biometrics and Surveillance Camera Commissioner - Activity on GOV.UK, https://www.gov.uk/government/organisations/biometrics-and-surveillance-camera-commissioner.atom, en-UK, United Kingdom
|
||||||
|
Biotechnology and Biological Sciences Research Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/biotechnology-biological-sciences-research-council.atom, en-UK, United Kingdom
|
||||||
|
Board of Trustees of the Royal Botanic Gardens Kew - Activity on GOV.UK, https://www.gov.uk/government/organisations/board-of-trustees-of-the-royal-botanic-gardens-kew.atom, en-UK, United Kingdom
|
||||||
|
Bona Vacantia - Activity on GOV.UK, https://www.gov.uk/government/organisations/bona-vacantia.atom, en-UK, United Kingdom
|
||||||
|
Border Force - Activity on GOV.UK, https://www.gov.uk/government/organisations/border-force.atom, en-UK, United Kingdom
|
||||||
|
Boundary Commission for England - Activity on GOV.UK, https://www.gov.uk/government/organisations/boundary-commission-for-england.atom, en-UK, United Kingdom
|
||||||
|
Boundary Commission for Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/boundary-commission-for-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Boundary Commission for Scotland - Activity on GOV.UK, https://www.gov.uk/government/organisations/boundary-commission-for-scotland.atom, en-UK, United Kingdom
|
||||||
|
Boundary Commission for Wales - Activity on GOV.UK, https://www.gov.uk/government/organisations/boundary-commission-for-wales.atom, en-UK, United Kingdom
|
||||||
|
British Business Bank - Activity on GOV.UK, https://www.gov.uk/government/organisations/british-business-bank.atom, en-UK, United Kingdom
|
||||||
|
British Cattle Movement Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/british-cattle-movement-service.atom, en-UK, United Kingdom
|
||||||
|
British Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/british-council.atom, en-UK, United Kingdom
|
||||||
|
British Film Institute - Activity on GOV.UK, https://www.gov.uk/government/organisations/british-film-institute.atom, en-UK, United Kingdom
|
||||||
|
British Hallmarking Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/british-hallmarking-council.atom, en-UK, United Kingdom
|
||||||
|
British Library - Activity on GOV.UK, https://www.gov.uk/government/organisations/british-library.atom, en-UK, United Kingdom
|
||||||
|
British Museum - Activity on GOV.UK, https://www.gov.uk/government/organisations/british-museum.atom, en-UK, United Kingdom
|
||||||
|
British Pharmacopoeia Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/british-pharmacopoeia.atom, en-UK, United Kingdom
|
||||||
|
British Technology Investments Ltd - Activity on GOV.UK, https://www.gov.uk/government/organisations/british-technology-investments-ltd.atom, en-UK, United Kingdom
|
||||||
|
British Transport Police Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/british-transport-police-authority.atom, en-UK, United Kingdom
|
||||||
|
British Wool - Activity on GOV.UK, https://www.gov.uk/government/organisations/british-wool.atom, en-UK, United Kingdom
|
||||||
|
Broads Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/broads-authority.atom, en-UK, United Kingdom
|
||||||
|
Building Digital UK - Activity on GOV.UK, https://www.gov.uk/government/organisations/building-digital-uk.atom, en-UK, United Kingdom
|
||||||
|
Cabinet Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/cabinet-office.atom, en-UK, United Kingdom
|
||||||
|
Cabinet Office Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/cabinet-office-board.atom, en-UK, United Kingdom
|
||||||
|
Cafcass - Activity on GOV.UK, https://www.gov.uk/government/organisations/children-and-family-court-advisory-and-support-service.atom, en-UK, United Kingdom
|
||||||
|
Careers Wales - Activity on GOV.UK, https://www.gov.uk/government/organisations/careers-wales.atom, en-UK, United Kingdom
|
||||||
|
Care Quality Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/care-quality-commission.atom, en-UK, United Kingdom
|
||||||
|
Central Advisory Committee on Compensation - Activity on GOV.UK, https://www.gov.uk/government/organisations/central-advisory-committee-on-compensation.atom, en-UK, United Kingdom
|
||||||
|
Central Arbitration Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/central-arbitration-committee.atom, en-UK, United Kingdom
|
||||||
|
Central Digital and Data Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/central-digital-and-data-office.atom, en-UK, United Kingdom
|
||||||
|
Centre for Connected and Autonomous Vehicles - Activity on GOV.UK, https://www.gov.uk/government/organisations/centre-for-connected-and-autonomous-vehicles.atom, en-UK, United Kingdom
|
||||||
|
Centre for Data Ethics and Innovation - Activity on GOV.UK, https://www.gov.uk/government/organisations/centre-for-data-ethics-and-innovation.atom, en-UK, United Kingdom
|
||||||
|
"Centre for Environment, Fisheries and Aquaculture Science - Activity on GOV.UK", https://www.gov.uk/government/organisations/centre-for-environment-fisheries-and-aquaculture-science.atom, en-UK, United Kingdom
|
||||||
|
Certification Officer - Activity on GOV.UK, https://www.gov.uk/government/organisations/certification-officer.atom, en-UK, United Kingdom
|
||||||
|
Channel 4 - Activity on GOV.UK, https://www.gov.uk/government/organisations/channel-4.atom, en-UK, United Kingdom
|
||||||
|
Chevening Scholarship Programme - Activity on GOV.UK, https://www.gov.uk/government/organisations/chevening-foundation.atom, en-UK, United Kingdom
|
||||||
|
Child Safeguarding Practice Review Panel - Activity on GOV.UK, https://www.gov.uk/government/organisations/child-safeguarding-practice-review-panel.atom, en-UK, United Kingdom
|
||||||
|
Churches Conservation Trust - Activity on GOV.UK, https://www.gov.uk/government/organisations/churches-conservation-trust.atom, en-UK, United Kingdom
|
||||||
|
Civil Aviation Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-aviation-authority.atom, en-UK, United Kingdom
|
||||||
|
Civil Justice Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-justice-council.atom, en-UK, United Kingdom
|
||||||
|
Civil Nuclear Constabulary - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-nuclear-constabulary.atom, en-UK, United Kingdom
|
||||||
|
Civil Nuclear Police Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-nuclear-police-authority.atom, en-UK, United Kingdom
|
||||||
|
Civil Procedure Rule Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-procedure-rules-committee.atom, en-UK, United Kingdom
|
||||||
|
Civil Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service.atom, en-UK, United Kingdom
|
||||||
|
Civil Service Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-board.atom, en-UK, United Kingdom
|
||||||
|
Civil Service Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-commission.atom, en-UK, United Kingdom
|
||||||
|
Civil Service Fast Stream - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-fast-stream.atom, en-UK, United Kingdom
|
||||||
|
Civil Service Group - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-group.atom, en-UK, United Kingdom
|
||||||
|
Civil Service HR - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-hr.atom, en-UK, United Kingdom
|
||||||
|
Coal Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-coal-authority.atom, en-UK, United Kingdom
|
||||||
|
College of Policing - Activity on GOV.UK, https://www.gov.uk/government/organisations/college-of-policing.atom, en-UK, United Kingdom
|
||||||
|
Commissioner for Public Appointments - Activity on GOV.UK, https://www.gov.uk/government/organisations/commissioner-for-public-appointments.atom, en-UK, United Kingdom
|
||||||
|
Commission for Countering Extremism - Activity on GOV.UK, https://www.gov.uk/government/organisations/commission-for-countering-extremism.atom, en-UK, United Kingdom
|
||||||
|
Commission on Human Medicines - Activity on GOV.UK, https://www.gov.uk/government/organisations/commission-on-human-medicines.atom, en-UK, United Kingdom
|
||||||
|
Committee on Climate Change - Activity on GOV.UK, https://www.gov.uk/government/organisations/committee-on-climate-change.atom, en-UK, United Kingdom
|
||||||
|
Committee on Fuel Poverty - Activity on GOV.UK, https://www.gov.uk/government/organisations/committee-on-fuel-poverty.atom, en-UK, United Kingdom
|
||||||
|
"Committee on Mutagenicity of Chemicals in Food, Consumer Products and the Environment - Activity on GOV.UK", https://www.gov.uk/government/organisations/committee-on-mutagenicity-of-chemicals-in-food-consumer-products-and-the-environment.atom, en-UK, United Kingdom
|
||||||
|
Committee on Radioactive Waste Management - Activity on GOV.UK, https://www.gov.uk/government/organisations/committee-on-radioactive-waste-management.atom, en-UK, United Kingdom
|
||||||
|
Committee on Standards in Public Life - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-committee-on-standards-in-public-life.atom, en-UK, United Kingdom
|
||||||
|
"Committee on Toxicity of Chemicals in Food, Consumer Products and the Environment - Activity on GOV.UK", https://www.gov.uk/government/organisations/committee-on-toxicity-of-chemicals-in-food-consumer-products-and-the-environment.atom, en-UK, United Kingdom
|
||||||
|
Commonwealth Scholarship Commission in the UK - Activity on GOV.UK, https://www.gov.uk/government/organisations/commonwealth-scholarship-commission-in-the-uk.atom, en-UK, United Kingdom
|
||||||
|
Companies House - Activity on GOV.UK, https://www.gov.uk/government/organisations/companies-house.atom, en-UK, United Kingdom
|
||||||
|
Companies House - Activity on GOV.UK, https://www.gov.uk/government/organisations/companies-house.atom, en-UK, United Kingdom
|
||||||
|
Company Names Tribunal - Activity on GOV.UK, https://www.gov.uk/government/organisations/company-names-tribunal.atom, en-UK, United Kingdom
|
||||||
|
Competition and Markets Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/competition-and-markets-authority.atom, en-UK, United Kingdom
|
||||||
|
Competition Appeal Tribunal - Activity on GOV.UK, https://www.gov.uk/government/organisations/competition-appeal-tribunal.atom, en-UK, United Kingdom
|
||||||
|
Competition Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/competition-service.atom, en-UK, United Kingdom
|
||||||
|
"Conflict, Stability and Security Fund - Activity on GOV.UK", https://www.gov.uk/government/organisations/conflict-stability-and-security-fund.atom, en-UK, United Kingdom
|
||||||
|
Construction Industry Training Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/construction-industry-training-board.atom, en-UK, United Kingdom
|
||||||
|
Consumer Council for Water - Activity on GOV.UK, https://www.gov.uk/government/organisations/consumer-council-for-water.atom, en-UK, United Kingdom
|
||||||
|
Copyright Tribunal - Activity on GOV.UK, https://www.gov.uk/government/organisations/copyright-tribunal.atom, en-UK, United Kingdom
|
||||||
|
Corporate Officers of the House of Commons - Activity on GOV.UK, https://www.gov.uk/government/organisations/corporate-officers-of-the-house-of-commons.atom, en-UK, United Kingdom
|
||||||
|
Corporate Officers of the House of Lords - Activity on GOV.UK, https://www.gov.uk/government/organisations/corporate-officers-of-the-house-of-lords.atom, en-UK, United Kingdom
|
||||||
|
Council for Science and Technology - Activity on GOV.UK, https://www.gov.uk/government/organisations/council-for-science-and-technology.atom, en-UK, United Kingdom
|
||||||
|
Covent Garden Market Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/covent-garden-market-authority.atom, en-UK, United Kingdom
|
||||||
|
Criminal Cases Review Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/criminal-cases-review-commission.atom, en-UK, United Kingdom
|
||||||
|
Criminal Injuries Compensation Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/criminal-injuries-compensation-authority.atom, en-UK, United Kingdom
|
||||||
|
Criminal Procedure Rule Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/criminal-procedure-rule-committee.atom, en-UK, United Kingdom
|
||||||
|
Crossrail International - Activity on GOV.UK, https://www.gov.uk/government/organisations/crossrail-international.atom, en-UK, United Kingdom
|
||||||
|
Crown Commercial Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/crown-commercial-service.atom, en-UK, United Kingdom
|
||||||
|
Crown Prosecution Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/crown-prosecution-service.atom, en-UK, United Kingdom
|
||||||
|
Dartmoor National Park Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/dartmoor-national-park-authority.atom, en-UK, United Kingdom
|
||||||
|
Defence Academy of the United Kingdom - Activity on GOV.UK, https://www.gov.uk/government/organisations/defence-academy.atom, en-UK, United Kingdom
|
||||||
|
Defence and Security Accelerator - Activity on GOV.UK, https://www.gov.uk/government/organisations/defence-and-security-accelerator.atom, en-UK, United Kingdom
|
||||||
|
Defence and Security Media Advisory Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/defence-and-security-media-advisory-committee.atom, en-UK, United Kingdom
|
||||||
|
Defence Equipment and Support - Activity on GOV.UK, https://www.gov.uk/government/organisations/defence-equipment-and-support.atom, en-UK, United Kingdom
|
||||||
|
Defence Infrastructure Organisation - Activity on GOV.UK, https://www.gov.uk/government/organisations/defence-infrastructure-organisation.atom, en-UK, United Kingdom
|
||||||
|
Defence Nuclear Organisation - Activity on GOV.UK, https://www.gov.uk/government/organisations/defence-nuclear-organisation.atom, en-UK, United Kingdom
|
||||||
|
Defence Nuclear Safety Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/defence-nuclear-safety-committee.atom, en-UK, United Kingdom
|
||||||
|
Defence Safety Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/defence-safety-authority.atom, en-UK, United Kingdom
|
||||||
|
Defence Science and Technology Laboratory - Activity on GOV.UK, https://www.gov.uk/government/organisations/defence-science-and-technology-laboratory.atom, en-UK, United Kingdom
|
||||||
|
Defence Sixth Form College - Activity on GOV.UK, https://www.gov.uk/government/organisations/defence-sixth-form-college.atom, en-UK, United Kingdom
|
||||||
|
Defra's Science Advisory Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/science-advisory-council.atom, en-UK, United Kingdom
|
||||||
|
Department for Business & Trade - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-for-business-and-trade.atom, en-UK, United Kingdom
|
||||||
|
Department for Communities (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-for-communities-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
"Department for Culture, Media & Sport - Activity on GOV.UK", https://www.gov.uk/government/organisations/department-for-culture-media-and-sport.atom, en-UK, United Kingdom
|
||||||
|
Department for Education - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-for-education.atom, en-UK, United Kingdom
|
||||||
|
Department for Energy Security & Net Zero - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-for-energy-security-and-net-zero.atom, en-UK, United Kingdom
|
||||||
|
Department for Environment Food & Rural Affairs - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-for-environment-food-rural-affairs.atom, en-UK, United Kingdom
|
||||||
|
Department for Infrastructure (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-for-infrastructure-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
"Department for Levelling Up, Housing & Communities - Activity on GOV.UK", https://www.gov.uk/government/organisations/department-for-levelling-up-housing-and-communities.atom, en-UK, United Kingdom
|
||||||
|
"Department for Science, Innovation & Technology - Activity on GOV.UK", https://www.gov.uk/government/organisations/department-for-science-innovation-and-technology.atom, en-UK, United Kingdom
|
||||||
|
Department for the Economy (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-for-the-economy-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Department for Transport - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-for-transport.atom, en-UK, United Kingdom
|
||||||
|
Department for Work & Pensions - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-for-work-pensions.atom, en-UK, United Kingdom
|
||||||
|
"Department of Agriculture, Environment and Rural Affairs (Northern Ireland) - Activity on GOV.UK", https://www.gov.uk/government/organisations/department-of-agriculture-environment-and-rural-affairs-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Department of Education (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-of-education.atom, en-UK, United Kingdom
|
||||||
|
Department of Finance (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-of-finance-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Department of Health (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-of-health-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Department of Health & Social Care - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-of-health-and-social-care.atom, en-UK, United Kingdom
|
||||||
|
Department of Justice (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/department-of-justice-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Departments - Activity on GOV.UK, https://www.gov.uk/government/organisations.atom, en-UK, United Kingdom
|
||||||
|
DfT OLR Holdings Limited - Activity on GOV.UK, https://www.gov.uk/government/organisations/dft-olr-holdings-limited.atom, en-UK, United Kingdom
|
||||||
|
Directly Operated Railways Limited - Activity on GOV.UK, https://www.gov.uk/government/organisations/directly-operated-railways-limited.atom, en-UK, United Kingdom
|
||||||
|
Disability Unit - Activity on GOV.UK, https://www.gov.uk/government/organisations/disability-unit.atom, en-UK, United Kingdom
|
||||||
|
Disabled People’s Employment Corporation (GB) Ltd - Activity on GOV.UK, https://www.gov.uk/government/organisations/disabled-peoples-employment-corporation.atom, en-UK, United Kingdom
|
||||||
|
Disabled Persons Transport Advisory Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/disabled-persons-transport-advisory-committee.atom, en-UK, United Kingdom
|
||||||
|
Disclosure and Barring Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/disclosure-and-barring-service.atom, en-UK, United Kingdom
|
||||||
|
District Valuer Services (DVS) - Activity on GOV.UK, https://www.gov.uk/government/organisations/district-valuer-services-dvs.atom, en-UK, United Kingdom
|
||||||
|
Driver and Vehicle Licensing Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/driver-and-vehicle-licensing-agency.atom, en-UK, United Kingdom
|
||||||
|
Driver and Vehicle Standards Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/driver-and-vehicle-standards-agency.atom, en-UK, United Kingdom
|
||||||
|
East West Railway Company Limited - Activity on GOV.UK, https://www.gov.uk/government/organisations/east-west-railway-company.atom, en-UK, United Kingdom
|
||||||
|
Ebbsfleet Development Corporation - Activity on GOV.UK, https://www.gov.uk/government/organisations/ebbsfleet-development-corporation.atom, en-UK, United Kingdom
|
||||||
|
Economic and Social Research Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/economic-and-social-research-council.atom, en-UK, United Kingdom
|
||||||
|
Education and Skills Funding Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/education-and-skills-funding-agency.atom, en-UK, United Kingdom
|
||||||
|
Electricity Settlements Company - Activity on GOV.UK, https://www.gov.uk/government/organisations/electricity-settlements-company.atom, en-UK, United Kingdom
|
||||||
|
Employment Agency Standards Inspectorate - Activity on GOV.UK, https://www.gov.uk/government/organisations/employment-agency-standards-inspectorate.atom, en-UK, United Kingdom
|
||||||
|
Engineering and Physical Sciences Research Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/engineering-and-physical-sciences-research-council.atom, en-UK, United Kingdom
|
||||||
|
Engineering Construction Industry Training Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/engineering-construction-industry-training-board.atom, en-UK, United Kingdom
|
||||||
|
English Institute of Sport - Activity on GOV.UK, https://www.gov.uk/government/organisations/english-institute-of-sport.atom, en-UK, United Kingdom
|
||||||
|
Environment Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/environment-agency.atom, en-UK, United Kingdom
|
||||||
|
Equality and Human Rights Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/equality-and-human-rights-commission.atom, en-UK, United Kingdom
|
||||||
|
Equality Hub - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-equality-hub.atom, en-UK, United Kingdom
|
||||||
|
Estyn - Activity on GOV.UK, https://www.gov.uk/government/organisations/estyn.atom, en-UK, United Kingdom
|
||||||
|
Evaluation Task Force - Activity on GOV.UK, https://www.gov.uk/government/organisations/evaluation-task-force.atom, en-UK, United Kingdom
|
||||||
|
Exmoor National Park Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/exmoor-national-park-authority.atom, en-UK, United Kingdom
|
||||||
|
Export Control Joint Unit - Activity on GOV.UK, https://www.gov.uk/government/organisations/export-control-joint-unit.atom, en-UK, United Kingdom
|
||||||
|
Export Guarantees Advisory Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/export-guarantees-advisory-council.atom, en-UK, United Kingdom
|
||||||
|
Family Justice Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/family-justice-council.atom, en-UK, United Kingdom
|
||||||
|
Family Procedure Rule Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/family-procedure-rule-committee.atom, en-UK, United Kingdom
|
||||||
|
FCDO Services - Activity on GOV.UK, https://www.gov.uk/government/organisations/fcdo-services.atom, en-UK, United Kingdom
|
||||||
|
FCDO Services - Activity on GOV.UK, https://www.gov.uk/government/organisations/fcdo-services.atom, en-UK, United Kingdom
|
||||||
|
Financial Conduct Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/financial-conduct-authority.atom, en-UK, United Kingdom
|
||||||
|
Financial Reporting Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/financial-reporting-council.atom, en-UK, United Kingdom
|
||||||
|
Fire Service College - Activity on GOV.UK, https://www.gov.uk/government/organisations/fire-service-college.atom, en-UK, United Kingdom
|
||||||
|
Fleet Air Arm Museum - Activity on GOV.UK, https://www.gov.uk/government/organisations/fleet-air-arm-museum.atom, en-UK, United Kingdom
|
||||||
|
Flood and Coastal Erosion Risk Management Research and Development Programme - Activity on GOV.UK, https://www.gov.uk/government/organisations/flood-and-coastal-erosion-risk-management-research-and-development-programme.atom, en-UK, United Kingdom
|
||||||
|
Flood Forecasting Centre - Activity on GOV.UK, https://www.gov.uk/government/organisations/flood-forecasting-centre.atom, en-UK, United Kingdom
|
||||||
|
Flood Re - Activity on GOV.UK, https://www.gov.uk/government/organisations/flood-re.atom, en-UK, United Kingdom
|
||||||
|
Food Standards Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/food-standards-agency.atom, en-UK, United Kingdom
|
||||||
|
"Foreign, Commonwealth & Development Office - Activity on GOV.UK", https://www.gov.uk/government/organisations/foreign-commonwealth-development-office.atom, en-UK, United Kingdom
|
||||||
|
Forensic Science Regulator - Activity on GOV.UK, https://www.gov.uk/government/organisations/forensic-science-regulator.atom, en-UK, United Kingdom
|
||||||
|
Forest Research - Activity on GOV.UK, https://www.gov.uk/government/organisations/forest-research.atom, en-UK, United Kingdom
|
||||||
|
Forestry Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/forestry-commission.atom, en-UK, United Kingdom
|
||||||
|
Forestry England - Activity on GOV.UK, https://www.gov.uk/government/organisations/forest-enterprise-england.atom, en-UK, United Kingdom
|
||||||
|
Further Education Commissioner - Activity on GOV.UK, https://www.gov.uk/government/organisations/further-education-commissioner.atom, en-UK, United Kingdom
|
||||||
|
Gambling Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/gambling-commission.atom, en-UK, United Kingdom
|
||||||
|
Gangmasters and Labour Abuse Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/gangmasters-and-labour-abuse-authority.atom, en-UK, United Kingdom
|
||||||
|
Geospatial Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/geospatial-commission.atom, en-UK, United Kingdom
|
||||||
|
Government Actuary's Department - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-actuarys-department.atom, en-UK, United Kingdom
|
||||||
|
Government Analysis Function - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-analysis-function.atom, en-UK, United Kingdom
|
||||||
|
Government Chemist - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-chemist.atom, en-UK, United Kingdom
|
||||||
|
Government Commercial Function - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-commercial-function.atom, en-UK, United Kingdom
|
||||||
|
Government Communication Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-government-communication-service.atom, en-UK, United Kingdom
|
||||||
|
Government Communications Headquarters - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-communications-headquarters.atom, en-UK, United Kingdom
|
||||||
|
Government Corporate Finance Profession - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-corporate-finance-profession-cfp.atom, en-UK, United Kingdom
|
||||||
|
Government Data Quality Hub - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-data-quality-hub.atom, en-UK, United Kingdom
|
||||||
|
Government Digital Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-digital-service.atom, en-UK, United Kingdom
|
||||||
|
Government Economic Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-government-economic-service.atom, en-UK, United Kingdom
|
||||||
|
Government Equalities Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-equalities-office.atom, en-UK, United Kingdom
|
||||||
|
Government Estates Management - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-estates-management.atom, en-UK, United Kingdom
|
||||||
|
Government Finance Function - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-finance-function.atom, en-UK, United Kingdom
|
||||||
|
Government Geography Profession - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-geography-profession.atom, en-UK, United Kingdom
|
||||||
|
Government Internal Audit Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-internal-audit-agency.atom, en-UK, United Kingdom
|
||||||
|
Government Knowledge & Information Management Profession - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-government-knowledge-information-management-profession.atom, en-UK, United Kingdom
|
||||||
|
Government Legal Department - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-legal-department.atom, en-UK, United Kingdom
|
||||||
|
Government Legal Profession - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-government-legal-profession.atom, en-UK, United Kingdom
|
||||||
|
Government Occupational Psychology Profession - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-government-occupational-psychology-profession.atom, en-UK, United Kingdom
|
||||||
|
Government Office for Science - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-office-for-science.atom, en-UK, United Kingdom
|
||||||
|
Government Office for Technology Transfer - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-office-for-technology-transfer.atom, en-UK, United Kingdom
|
||||||
|
Government Operational Research Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-government-operational-research-service.atom, en-UK, United Kingdom
|
||||||
|
Government Partnerships International - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-partnerships-international.atom, en-UK, United Kingdom
|
||||||
|
Government People Group - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-people-group.atom, en-UK, United Kingdom
|
||||||
|
Government Planning Inspectors - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-government-planning-inspectors.atom, en-UK, United Kingdom
|
||||||
|
Government Planning Profession - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-the-government-planning-profession.atom, en-UK, United Kingdom
|
||||||
|
Government Property Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-property-agency.atom, en-UK, United Kingdom
|
||||||
|
Government Property Function - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-property-function.atom, en-UK, United Kingdom
|
||||||
|
Government Recruitment Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-recruitment-service.atom, en-UK, United Kingdom
|
||||||
|
Government Science & Engineering Profession - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-government-science-engineering.atom, en-UK, United Kingdom
|
||||||
|
Government Security Profession - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-security-profession.atom, en-UK, United Kingdom
|
||||||
|
Government Skills and Curriculum Unit - Activity on GOV.UK, https://www.gov.uk/government/organisations/government-skills-and-curriculum-unit.atom, en-UK, United Kingdom
|
||||||
|
Government Social Research Profession - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-government-social-research-profession.atom, en-UK, United Kingdom
|
||||||
|
Government Statistical Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-government-statistical-service.atom, en-UK, United Kingdom
|
||||||
|
Government Tax Profession - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-government-tax-profession.atom, en-UK, United Kingdom
|
||||||
|
Government Veterinary Services - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-government-veterinary-services.atom, en-UK, United Kingdom
|
||||||
|
Gov Facility Services Limited - Activity on GOV.UK, https://www.gov.uk/government/organisations/gov-facility-services-limited.atom, en-UK, United Kingdom
|
||||||
|
Great Britain-China Centre - Activity on GOV.UK, https://www.gov.uk/government/organisations/great-britain-china-centre.atom, en-UK, United Kingdom
|
||||||
|
Great British Nuclear - Activity on GOV.UK, https://www.gov.uk/government/organisations/great-british-nuclear.atom, en-UK, United Kingdom
|
||||||
|
Groceries Code Adjudicator - Activity on GOV.UK, https://www.gov.uk/government/organisations/groceries-code-adjudicator.atom, en-UK, United Kingdom
|
||||||
|
Health and Safety Executive - Activity on GOV.UK, https://www.gov.uk/government/organisations/health-and-safety-executive.atom, en-UK, United Kingdom
|
||||||
|
Health Education England - Activity on GOV.UK, https://www.gov.uk/government/organisations/health-education-england.atom, en-UK, United Kingdom
|
||||||
|
Health Research Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/health-research-authority.atom, en-UK, United Kingdom
|
||||||
|
Higher Education Statistics Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/higher-education-statistical-agency.atom, en-UK, United Kingdom
|
||||||
|
High Speed Two (HS2) Limited - Activity on GOV.UK, https://www.gov.uk/government/organisations/high-speed-two-limited.atom, en-UK, United Kingdom
|
||||||
|
Historic England - Activity on GOV.UK, https://www.gov.uk/government/organisations/historic-england.atom, en-UK, United Kingdom
|
||||||
|
Historic Royal Palaces - Activity on GOV.UK, https://www.gov.uk/government/organisations/historic-royal-palaces.atom, en-UK, United Kingdom
|
||||||
|
HM Courts & Tribunals Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/hm-courts-and-tribunals-service.atom, en-UK, United Kingdom
|
||||||
|
HM Crown Prosecution Service Inspectorate - Activity on GOV.UK, https://www.gov.uk/government/organisations/hm-crown-prosecution-service-inspectorate.atom, en-UK, United Kingdom
|
||||||
|
HM Government Communications Centre - Activity on GOV.UK, https://www.gov.uk/government/organisations/hm-government-communications-centre.atom, en-UK, United Kingdom
|
||||||
|
HM Inspectorate of Constabulary and Fire & Rescue Services - Activity on GOV.UK, https://www.gov.uk/government/organisations/hm-inspectorate-of-constabulary-and-fire-rescue-services.atom, en-UK, United Kingdom
|
||||||
|
HM Inspectorate of Prisons - Activity on GOV.UK, https://www.gov.uk/government/organisations/hm-inspectorate-of-prisons.atom, en-UK, United Kingdom
|
||||||
|
HM Inspectorate of Probation - Activity on GOV.UK, https://www.gov.uk/government/organisations/hm-inspectorate-of-probation.atom, en-UK, United Kingdom
|
||||||
|
HM Land Registry - Activity on GOV.UK, https://www.gov.uk/government/organisations/land-registry.atom, en-UK, United Kingdom
|
||||||
|
HM Nautical Almanac Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/hm-nautical-almanac-office.atom, en-UK, United Kingdom
|
||||||
|
HM Passport Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/hm-passport-office.atom, en-UK, United Kingdom
|
||||||
|
HM Prison and Probation Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/hm-prison-and-probation-service.atom, en-UK, United Kingdom
|
||||||
|
HM Prison Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/hm-prison-service.atom, en-UK, United Kingdom
|
||||||
|
HM Revenue & Customs - Activity on GOV.UK, https://www.gov.uk/government/organisations/hm-revenue-customs.atom, en-UK, United Kingdom
|
||||||
|
HM Treasury - Activity on GOV.UK, https://www.gov.uk/government/organisations/hm-treasury.atom, en-UK, United Kingdom
|
||||||
|
Home Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/home-office.atom, en-UK, United Kingdom
|
||||||
|
Homes England - Activity on GOV.UK, https://www.gov.uk/government/organisations/homes-england.atom, en-UK, United Kingdom
|
||||||
|
Horniman Public Museum and Public Park Trust - Activity on GOV.UK, https://www.gov.uk/government/organisations/horniman-museum.atom, en-UK, United Kingdom
|
||||||
|
Horserace Betting Levy Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/horserace-betting-levy-board.atom, en-UK, United Kingdom
|
||||||
|
House of Lords Appointments Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/house-of-lords-appointments-commission.atom, en-UK, United Kingdom
|
||||||
|
Housing Ombudsman - Activity on GOV.UK, https://www.gov.uk/government/organisations/housing-ombudsman.atom, en-UK, United Kingdom
|
||||||
|
HSC Business Services Organisation (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/hsc-business-services-organisation-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Human Fertilisation and Embryology Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/human-fertilisation-and-embryology-authority.atom, en-UK, United Kingdom
|
||||||
|
Human Tissue Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/human-tissue-authority.atom, en-UK, United Kingdom
|
||||||
|
Immigration Enforcement - Activity on GOV.UK, https://www.gov.uk/government/organisations/immigration-enforcement.atom, en-UK, United Kingdom
|
||||||
|
Imperial War Museum - Activity on GOV.UK, https://www.gov.uk/government/organisations/imperial-war-museum.atom, en-UK, United Kingdom
|
||||||
|
Incubator for Automation and Innovation - Activity on GOV.UK, https://www.gov.uk/government/organisations/incubator-for-automation-and-innovation.atom, en-UK, United Kingdom
|
||||||
|
Independent Adviser on Ministers' Interests - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-adviser-on-ministers-interests.atom, en-UK, United Kingdom
|
||||||
|
Independent Advisory Panel on Deaths in Custody - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-advisory-panel-on-deaths-in-custody.atom, en-UK, United Kingdom
|
||||||
|
Independent Agricultural Appeals Panel - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-agricultural-appeals-panel.atom, en-UK, United Kingdom
|
||||||
|
Independent Anti-slavery Commissioner - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-anti-slavery-commissioner.atom, en-UK, United Kingdom
|
||||||
|
Independent Case Examiner - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-case-examiner.atom, en-UK, United Kingdom
|
||||||
|
Independent Chief Inspector of Borders and Immigration - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-chief-inspector-of-borders-and-immigration.atom, en-UK, United Kingdom
|
||||||
|
Independent Chief Inspector of Borders and Immigration - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-chief-inspector-of-borders-and-immigration.atom, en-UK, United Kingdom
|
||||||
|
Independent Commission for Aid Impact - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-commission-for-aid-impact.atom, en-UK, United Kingdom
|
||||||
|
Independent Commission on Freedom of Information - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-commission-on-freedom-of-information.atom, en-UK, United Kingdom
|
||||||
|
Independent Complaints Reviewer - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-complaints-reviewer.atom, en-UK, United Kingdom
|
||||||
|
Independent Dormant Assets Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/dormant-assets-commission.atom, en-UK, United Kingdom
|
||||||
|
Independent Family Returns Panel - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-family-returns-panel.atom, en-UK, United Kingdom
|
||||||
|
Independent Medical Expert Group - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-medical-expert-group.atom, en-UK, United Kingdom
|
||||||
|
Independent Monitoring Authority for the Citizens’ Rights Agreements - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-monitoring-authority-for-the-citizens-rights-agreements.atom, en-UK, United Kingdom
|
||||||
|
Independent Monitoring Boards - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-monitoring-boards-of-prisons-immigration-removal-centres-and-short-term-holding-rooms.atom, en-UK, United Kingdom
|
||||||
|
Independent Office for Police Conduct - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-office-for-police-conduct.atom, en-UK, United Kingdom
|
||||||
|
Independent Parliamentary Standards Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-parliamentary-standards-authority.atom, en-UK, United Kingdom
|
||||||
|
Independent Reconfiguration Panel - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-reconfiguration-panel.atom, en-UK, United Kingdom
|
||||||
|
Independent Reviewer of Terrorism Legislation - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-reviewer-of-terrorism-legislation.atom, en-UK, United Kingdom
|
||||||
|
Independent Review Mechanism - Activity on GOV.UK, https://www.gov.uk/government/organisations/independent-review-mechanism.atom, en-UK, United Kingdom
|
||||||
|
Industrial Development Advisory Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/industrial-development-advisory-board.atom, en-UK, United Kingdom
|
||||||
|
Industrial Injuries Advisory Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/industrial-injuries-advisory-council.atom, en-UK, United Kingdom
|
||||||
|
Information Commissioner's Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/information-commissioner-s-office.atom, en-UK, United Kingdom
|
||||||
|
Infrastructure and Projects Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/infrastructure-and-projects-authority.atom, en-UK, United Kingdom
|
||||||
|
Innovate UK - Activity on GOV.UK, https://www.gov.uk/government/organisations/innovate-uk.atom, en-UK, United Kingdom
|
||||||
|
Insolvency Rules Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/insolvency-rules-committee.atom, en-UK, United Kingdom
|
||||||
|
Institute for Apprenticeships and Technical Education - Activity on GOV.UK, https://www.gov.uk/government/organisations/institute-for-apprenticeships-and-technical-education.atom, en-UK, United Kingdom
|
||||||
|
Intellectual Property Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/intellectual-property-office.atom, en-UK, United Kingdom
|
||||||
|
Intelligence Analysis - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-intelligence-analysis-profession.atom, en-UK, United Kingdom
|
||||||
|
Internal Audit Profession - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-internal-audit-profession.atom, en-UK, United Kingdom
|
||||||
|
Investigatory Powers Commissioner's Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/investigatory-powers-commissioners-office.atom, en-UK, United Kingdom
|
||||||
|
Investigatory Powers Tribunal - Activity on GOV.UK, https://www.gov.uk/government/organisations/investigatory-powers-tribunal.atom, en-UK, United Kingdom
|
||||||
|
Invest Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/invest-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Iraq Inquiry - Activity on GOV.UK, https://www.gov.uk/government/organisations/iraq-inquiry.atom, en-UK, United Kingdom
|
||||||
|
jHub Defence Innovation - Activity on GOV.UK, https://www.gov.uk/government/organisations/jhub-defence-innovation.atom, en-UK, United Kingdom
|
||||||
|
Joint Nature Conservation Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/joint-nature-conservation-committee.atom, en-UK, United Kingdom
|
||||||
|
Judicial Appointments and Conduct Ombudsman - Activity on GOV.UK, https://www.gov.uk/government/organisations/judicial-appointments-and-conduct-ombudsman.atom, en-UK, United Kingdom
|
||||||
|
Judicial Appointments Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/judicial-appointments-commission.atom, en-UK, United Kingdom
|
||||||
|
Judicial Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/judicial-office.atom, en-UK, United Kingdom
|
||||||
|
King's Harbour Master - Activity on GOV.UK, https://www.gov.uk/government/organisations/kings-harbour-master.atom, en-UK, United Kingdom
|
||||||
|
Labour Relations Agency (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/labour-relations-agency.atom, en-UK, United Kingdom
|
||||||
|
Lake District National Park Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/lake-district-national-park-authority.atom, en-UK, United Kingdom
|
||||||
|
Lammy Review - Activity on GOV.UK, https://www.gov.uk/government/organisations/lammy-review.atom, en-UK, United Kingdom
|
||||||
|
Land Registration Rule Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/land-registration-rule-committee.atom, en-UK, United Kingdom
|
||||||
|
Law Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/law-commission.atom, en-UK, United Kingdom
|
||||||
|
Leadership College for Government - Activity on GOV.UK, https://www.gov.uk/government/organisations/leadership-college-for-government.atom, en-UK, United Kingdom
|
||||||
|
Leasehold Advisory Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/leasehold-advisory-service.atom, en-UK, United Kingdom
|
||||||
|
Legal Aid Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/legal-aid-agency.atom, en-UK, United Kingdom
|
||||||
|
Legal Services Agency (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/legal-services-agency-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Legal Services Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/legal-services-board.atom, en-UK, United Kingdom
|
||||||
|
LGBT Veterans Independent Review - Activity on GOV.UK, https://www.gov.uk/government/organisations/lgbt-veterans-independent-review.atom, en-UK, United Kingdom
|
||||||
|
Life Sciences Organisation - Activity on GOV.UK, https://www.gov.uk/government/organisations/life-sciences-organisation.atom, en-UK, United Kingdom
|
||||||
|
Livestock and Meat Commission for Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/livestock-and-meat-commission-for-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Local Government and Social Care Ombudsman - Activity on GOV.UK, https://www.gov.uk/government/organisations/local-government-ombudsman.atom, en-UK, United Kingdom
|
||||||
|
LocatED - Activity on GOV.UK, https://www.gov.uk/government/organisations/located.atom, en-UK, United Kingdom
|
||||||
|
London and Continental Railways Limited - Activity on GOV.UK, https://www.gov.uk/government/organisations/london-and-continental-railways-ltd.atom, en-UK, United Kingdom
|
||||||
|
Low Carbon Contracts Company - Activity on GOV.UK, https://www.gov.uk/government/organisations/low-carbon-contracts-company.atom, en-UK, United Kingdom
|
||||||
|
Low Pay Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/low-pay-commission.atom, en-UK, United Kingdom
|
||||||
|
Marine Accident Investigation Branch - Activity on GOV.UK, https://www.gov.uk/government/organisations/marine-accident-investigation-branch.atom, en-UK, United Kingdom
|
||||||
|
Marine Management Organisation - Activity on GOV.UK, https://www.gov.uk/government/organisations/marine-management-organisation.atom, en-UK, United Kingdom
|
||||||
|
Maritime and Coastguard Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/maritime-and-coastguard-agency.atom, en-UK, United Kingdom
|
||||||
|
Marshall Aid Commemoration Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/marshall-aid-commemoration-commission.atom, en-UK, United Kingdom
|
||||||
|
Medical Profession - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-medical-profession.atom, en-UK, United Kingdom
|
||||||
|
Medical Research Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/medical-research-council.atom, en-UK, United Kingdom
|
||||||
|
Medicines and Healthcare products Regulatory Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/medicines-and-healthcare-products-regulatory-agency.atom, en-UK, United Kingdom
|
||||||
|
Met Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/met-office.atom, en-UK, United Kingdom
|
||||||
|
Migration Advisory Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/migration-advisory-committee.atom, en-UK, United Kingdom
|
||||||
|
Military Aviation Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/military-aviation-authority.atom, en-UK, United Kingdom
|
||||||
|
Military Engineering Experimental Establishment - Activity on GOV.UK, https://www.gov.uk/government/organisations/military-engineering-experimental-establishment.atom, en-UK, United Kingdom
|
||||||
|
Ministry of Defence - Activity on GOV.UK, https://www.gov.uk/government/organisations/ministry-of-defence.atom, en-UK, United Kingdom
|
||||||
|
Ministry of Justice - Activity on GOV.UK, https://www.gov.uk/government/organisations/ministry-of-justice.atom, en-UK, United Kingdom
|
||||||
|
Modernisation and Reform - Activity on GOV.UK, https://www.gov.uk/government/organisations/modernisation-and-reform.atom, en-UK, United Kingdom
|
||||||
|
Money and Pensions Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/single-financial-guidance-body.atom, en-UK, United Kingdom
|
||||||
|
Museum of the Home - Activity on GOV.UK, https://www.gov.uk/government/organisations/geffrye-museum.atom, en-UK, United Kingdom
|
||||||
|
National Army Museum - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-army-museum.atom, en-UK, United Kingdom
|
||||||
|
National Citizen Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-citizen-service.atom, en-UK, United Kingdom
|
||||||
|
National Counter Terrorism Security Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-counter-terrorism-security-office.atom, en-UK, United Kingdom
|
||||||
|
National Crime Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-crime-agency.atom, en-UK, United Kingdom
|
||||||
|
National Crime Agency Remuneration Review Body - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-crime-agency-remuneration-review-body.atom, en-UK, United Kingdom
|
||||||
|
National Crime Agency Remuneration Review Body - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-crime-agency-remuneration-review-body.atom, en-UK, United Kingdom
|
||||||
|
National Cyber Force - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-cyber-force.atom, en-UK, United Kingdom
|
||||||
|
National Cyber Security Centre - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-cyber-security-centre.atom, en-UK, United Kingdom
|
||||||
|
National Data Guardian - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-data-guardian.atom, en-UK, United Kingdom
|
||||||
|
National Employment Savings Trust (NEST) Corporation - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-employment-savings-trust.atom, en-UK, United Kingdom
|
||||||
|
National Forest Company - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-forest-company.atom, en-UK, United Kingdom
|
||||||
|
National Gallery - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-gallery.atom, en-UK, United Kingdom
|
||||||
|
National Heritage Memorial Fund - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-heritage-memorial-fund.atom, en-UK, United Kingdom
|
||||||
|
National Highways - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-highways.atom, en-UK, United Kingdom
|
||||||
|
National Infrastructure Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-infrastructure-commission.atom, en-UK, United Kingdom
|
||||||
|
National Institute for Health and Care Excellence - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-institute-for-clinical-excellence.atom, en-UK, United Kingdom
|
||||||
|
National Lottery Heritage Fund - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-lottery-heritage-fund.atom, en-UK, United Kingdom
|
||||||
|
National Museum of the Royal Navy - Activity on GOV.UK, https://www.gov.uk/government/organisations/royal-naval-museum.atom, en-UK, United Kingdom
|
||||||
|
National Museums Liverpool - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-museums-liverpool.atom, en-UK, United Kingdom
|
||||||
|
National Nuclear Laboratory - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-nuclear-laboratory.atom, en-UK, United Kingdom
|
||||||
|
National Physical Laboratory - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-physical-laboratory.atom, en-UK, United Kingdom
|
||||||
|
National Portrait Gallery - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-portrait-gallery.atom, en-UK, United Kingdom
|
||||||
|
National Protective Security Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-protective-security-authority.atom, en-UK, United Kingdom
|
||||||
|
National security and intelligence - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-security.atom, en-UK, United Kingdom
|
||||||
|
National Security Technology and Innovation Exchange - Activity on GOV.UK, https://www.gov.uk/government/organisations/national-security-technology-and-innovation-exchange.atom, en-UK, United Kingdom
|
||||||
|
Natural England - Activity on GOV.UK, https://www.gov.uk/government/organisations/natural-england.atom, en-UK, United Kingdom
|
||||||
|
Natural Environment Research Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/natural-environment-research-council.atom, en-UK, United Kingdom
|
||||||
|
Natural History Museum - Activity on GOV.UK, https://www.gov.uk/government/organisations/natural-history-museum.atom, en-UK, United Kingdom
|
||||||
|
Natural Resources Wales - Activity on GOV.UK, https://www.gov.uk/government/organisations/natural-resources-wales.atom, en-UK, United Kingdom
|
||||||
|
Network Rail - Activity on GOV.UK, https://www.gov.uk/government/organisations/network-rail.atom, en-UK, United Kingdom
|
||||||
|
New Forest National Park Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/new-forest-national-park-authority.atom, en-UK, United Kingdom
|
||||||
|
NHS Blood and Transplant - Activity on GOV.UK, https://www.gov.uk/government/organisations/nhs-blood-and-transplant.atom, en-UK, United Kingdom
|
||||||
|
NHS Business Services Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/nhs-business-services-authority.atom, en-UK, United Kingdom
|
||||||
|
NHS Counter Fraud Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/nhs-counter-fraud-authority.atom, en-UK, United Kingdom
|
||||||
|
NHS Digital - Activity on GOV.UK, https://www.gov.uk/government/organisations/nhs-digital.atom, en-UK, United Kingdom
|
||||||
|
NHS England - Activity on GOV.UK, https://www.gov.uk/government/organisations/nhs-england.atom, en-UK, United Kingdom
|
||||||
|
NHS Pay Review Body - Activity on GOV.UK, https://www.gov.uk/government/organisations/nhs-pay-review-body.atom, en-UK, United Kingdom
|
||||||
|
NHS Resolution - Activity on GOV.UK, https://www.gov.uk/government/organisations/nhs-resolution.atom, en-UK, United Kingdom
|
||||||
|
NHS Wales Informatics Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/nhs-wales-informatics-service.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Cancer Registry - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-cancer-registry.atom, en-UK, United Kingdom
|
||||||
|
"Northern Ireland Council for the Curriculum, Examinations and Assessment - Activity on GOV.UK", https://www.gov.uk/government/organisations/northern-ireland-council-for-the-curriculum-examinations-and-assessment.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Courts and Tribunals Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-court-service.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Executive - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-executive.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Housing Executive - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-housing-executive.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Human Rights Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-human-rights-commission.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-office.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Policing Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-policing-board.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Prison Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-prison-service.atom, en-UK, United Kingdom
|
||||||
|
Northern Ireland Statistics and Research Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-ireland-statistics-and-research-agency.atom, en-UK, United Kingdom
|
||||||
|
Northern Lighthouse Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/northern-lighthouse-board.atom, en-UK, United Kingdom
|
||||||
|
North Sea Transition Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/north-sea-transition-authority.atom, en-UK, United Kingdom
|
||||||
|
Northumberland National Park Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/northumberland-national-park-authority.atom, en-UK, United Kingdom
|
||||||
|
North York Moors National Park Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/north-york-moors-national-park.atom, en-UK, United Kingdom
|
||||||
|
NS&I - Activity on GOV.UK, https://www.gov.uk/government/organisations/ns-i.atom, en-UK, United Kingdom
|
||||||
|
Nuclear Decommissioning Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/nuclear-decommissioning-authority.atom, en-UK, United Kingdom
|
||||||
|
Nuclear Liabilities Financing Assurance Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/nuclear-liabilities-financing-assurance-board.atom, en-UK, United Kingdom
|
||||||
|
Nuclear Research Advisory Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/nuclear-research-advisory-council.atom, en-UK, United Kingdom
|
||||||
|
Nuclear Restoration Services - Activity on GOV.UK, https://www.gov.uk/government/organisations/nuclear-restoration-services.atom, en-UK, United Kingdom
|
||||||
|
Nuclear Waste Services - Activity on GOV.UK, https://www.gov.uk/government/organisations/nuclear-waste-services.atom, en-UK, United Kingdom
|
||||||
|
Oak National Academy - Activity on GOV.UK, https://www.gov.uk/government/organisations/oak-national-academy.atom, en-UK, United Kingdom
|
||||||
|
Ofcom - Activity on GOV.UK, https://www.gov.uk/government/organisations/ofcom.atom, en-UK, United Kingdom
|
||||||
|
Office for Artificial Intelligence - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-artificial-intelligence.atom, en-UK, United Kingdom
|
||||||
|
Office for Budget Responsibility - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-budget-responsibility.atom, en-UK, United Kingdom
|
||||||
|
Office for Communications Data Authorisations - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-communications-data-authorisations.atom, en-UK, United Kingdom
|
||||||
|
Office for Environmental Protection - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-environmental-protection.atom, en-UK, United Kingdom
|
||||||
|
Office for Health Improvement and Disparities - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-health-improvement-and-disparities.atom, en-UK, United Kingdom
|
||||||
|
Office for Investment - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-investment.atom, en-UK, United Kingdom
|
||||||
|
Office for Life Sciences - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-life-sciences.atom, en-UK, United Kingdom
|
||||||
|
Office for Local Government - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-local-government.atom, en-UK, United Kingdom
|
||||||
|
Office for National Statistics - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-national-statistics.atom, en-UK, United Kingdom
|
||||||
|
Office for Nuclear Regulation - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-nuclear-regulation.atom, en-UK, United Kingdom
|
||||||
|
Office for Place - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-place.atom, en-UK, United Kingdom
|
||||||
|
Office for Product Safety and Standards - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-product-safety-and-standards.atom, en-UK, United Kingdom
|
||||||
|
Office for Students - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-students.atom, en-UK, United Kingdom
|
||||||
|
Office for the Independent Examiner of Complaints - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-the-independent-examiner-of-complaints.atom, en-UK, United Kingdom
|
||||||
|
Office for the Internal Market - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-the-internal-market.atom, en-UK, United Kingdom
|
||||||
|
Office for Veterans' Affairs - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-veterans-affairs.atom, en-UK, United Kingdom
|
||||||
|
Office for Zero Emission Vehicles - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-for-zero-emission-vehicles.atom, en-UK, United Kingdom
|
||||||
|
Office of Financial Sanctions Implementation - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-financial-sanctions-implementation.atom, en-UK, United Kingdom
|
||||||
|
Office of Manpower Economics - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-manpower-economics.atom, en-UK, United Kingdom
|
||||||
|
Office of Rail and Road - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-rail-and-road.atom, en-UK, United Kingdom
|
||||||
|
Office of the Advocate General for Scotland - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-the-advocate-general-for-scotland.atom, en-UK, United Kingdom
|
||||||
|
Office of the Children's Commissioner - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-the-children-s-commissioner.atom, en-UK, United Kingdom
|
||||||
|
Office of the Immigration Services Commissioner - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-the-immigration-services-commissioner.atom, en-UK, United Kingdom
|
||||||
|
Office of the Leader of the House of Commons - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-office-of-the-leader-of-the-house-of-commons.atom, en-UK, United Kingdom
|
||||||
|
Office of the Leader of the House of Lords - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-the-leader-of-the-house-of-lords.atom, en-UK, United Kingdom
|
||||||
|
Office of the Parliamentary Counsel - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-the-parliamentary-counsel.atom, en-UK, United Kingdom
|
||||||
|
Office of the Police Ombudsman for Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-the-police-ombudsman-for-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Office of the Public Guardian - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-the-public-guardian.atom, en-UK, United Kingdom
|
||||||
|
Office of the Registrar of Consultant Lobbyists - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-the-registrar-of-consultant-lobbyists.atom, en-UK, United Kingdom
|
||||||
|
Office of the Regulator of Community Interest Companies - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-the-regulator-of-community-interest-companies.atom, en-UK, United Kingdom
|
||||||
|
Office of the Schools Adjudicator - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-the-schools-adjudicator.atom, en-UK, United Kingdom
|
||||||
|
Office of the Secretary of State for Scotland - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-the-secretary-of-state-for-scotland.atom, en-UK, United Kingdom
|
||||||
|
Office of the Secretary of State for Wales - Activity on GOV.UK, https://www.gov.uk/government/organisations/office-of-the-secretary-of-state-for-wales.atom, en-UK, United Kingdom
|
||||||
|
Official Solicitor and Public Trustee - Activity on GOV.UK, https://www.gov.uk/government/organisations/official-solicitor-and-public-trustee.atom, en-UK, United Kingdom
|
||||||
|
Offshore Petroleum Regulator for Environment and Decommissioning - Activity on GOV.UK, https://www.gov.uk/government/organisations/offshore-petroleum-regulator-for-environment-and-decommissioning.atom, en-UK, United Kingdom
|
||||||
|
Ofgem - Activity on GOV.UK, https://www.gov.uk/government/organisations/ofgem.atom, en-UK, United Kingdom
|
||||||
|
Ofqual - Activity on GOV.UK, https://www.gov.uk/government/organisations/ofqual.atom, en-UK, United Kingdom
|
||||||
|
Ofsted - Activity on GOV.UK, https://www.gov.uk/government/organisations/ofsted.atom, en-UK, United Kingdom
|
||||||
|
Open Innovation Team - Activity on GOV.UK, https://www.gov.uk/government/organisations/open-innovation-team.atom, en-UK, United Kingdom
|
||||||
|
Open Public Services - Activity on GOV.UK, https://www.gov.uk/government/organisations/open-public-services.atom, en-UK, United Kingdom
|
||||||
|
Operational Delivery Profession - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-operational-delivery-profession.atom, en-UK, United Kingdom
|
||||||
|
Ordnance Survey - Activity on GOV.UK, https://www.gov.uk/government/organisations/ordnance-survey.atom, en-UK, United Kingdom
|
||||||
|
Parades Commission for Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/parades-commission-for-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Parole Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/parole-board.atom, en-UK, United Kingdom
|
||||||
|
Payment Systems Regulator - Activity on GOV.UK, https://www.gov.uk/government/organisations/payment-systems-regulator.atom, en-UK, United Kingdom
|
||||||
|
Peak District National Park Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/peak-district-national-park.atom, en-UK, United Kingdom
|
||||||
|
"Pension, Compensation and Welfare Support for Armed Forces and Veterans - Activity on GOV.UK", https://www.gov.uk/government/organisations/pension-compensation-and-welfare-support-for-armed-forces-and-veterans.atom, en-UK, United Kingdom
|
||||||
|
Pension Protection Fund - Activity on GOV.UK, https://www.gov.uk/government/organisations/pension-protection-fund.atom, en-UK, United Kingdom
|
||||||
|
Phone-paid Services Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/phone-paid-services-authority.atom, en-UK, United Kingdom
|
||||||
|
Planning Inspectorate - Activity on GOV.UK, https://www.gov.uk/government/organisations/planning-inspectorate.atom, en-UK, United Kingdom
|
||||||
|
Plant Varieties and Seeds Tribunal - Activity on GOV.UK, https://www.gov.uk/government/organisations/plant-varieties-and-seeds-tribunal.atom, en-UK, United Kingdom
|
||||||
|
Police Advisory Board for England and Wales - Activity on GOV.UK, https://www.gov.uk/government/organisations/police-advisory-board-for-england-and-wales.atom, en-UK, United Kingdom
|
||||||
|
Police Discipline Appeals Tribunal - Activity on GOV.UK, https://www.gov.uk/government/organisations/police-discipline-appeals-tribunal.atom, en-UK, United Kingdom
|
||||||
|
Police Remuneration Review Body - Activity on GOV.UK, https://www.gov.uk/government/organisations/police-remuneration-review-body.atom, en-UK, United Kingdom
|
||||||
|
Police Service of Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/police-service-of-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Policy Profession - Activity on GOV.UK, https://www.gov.uk/government/organisations/civil-service-policy-profession.atom, en-UK, United Kingdom
|
||||||
|
Porton Biopharma Limited - Activity on GOV.UK, https://www.gov.uk/government/organisations/porton-biopharma-limited.atom, en-UK, United Kingdom
|
||||||
|
Post Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/post-office.atom, en-UK, United Kingdom
|
||||||
|
Preventing Sexual Violence in Conflict Initiative - Activity on GOV.UK, https://www.gov.uk/government/organisations/preventing-sexual-violence-in-conflict-initiative.atom, en-UK, United Kingdom
|
||||||
|
"Prime Minister's Office, 10 Downing Street - Activity on GOV.UK", https://www.gov.uk/government/organisations/prime-ministers-office-10-downing-street.atom, en-UK, United Kingdom
|
||||||
|
Prisons and Probation Ombudsman - Activity on GOV.UK, https://www.gov.uk/government/organisations/prisons-and-probation-ombudsman.atom, en-UK, United Kingdom
|
||||||
|
Prison Service Pay Review Body - Activity on GOV.UK, https://www.gov.uk/government/organisations/prison-services-pay-review-body.atom, en-UK, United Kingdom
|
||||||
|
Privy Council Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/privy-council-office.atom, en-UK, United Kingdom
|
||||||
|
Probation Board for Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/probation-board-for-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Probation Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/probation-service.atom, en-UK, United Kingdom
|
||||||
|
Professional Standards Authority for Health and Social Care - Activity on GOV.UK, https://www.gov.uk/government/organisations/professional-standards-authority-for-health-and-social-care.atom, en-UK, United Kingdom
|
||||||
|
Project Delivery Function - Activity on GOV.UK, https://www.gov.uk/government/organisations/project-delivery-function.atom, en-UK, United Kingdom
|
||||||
|
Public Health Agency (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/public-health-agency-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Public Health Wales - Activity on GOV.UK, https://www.gov.uk/government/organisations/public-health-wales.atom, en-UK, United Kingdom
|
||||||
|
Public Prosecution Service for Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/public-prosecution-service-for-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Public Sector Fraud Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/public-sector-fraud-authority.atom, en-UK, United Kingdom
|
||||||
|
Public Services Ombudsman for Wales - Activity on GOV.UK, https://www.gov.uk/government/organisations/public-services-ombudsman-for-wales.atom, en-UK, United Kingdom
|
||||||
|
Pubs Code Adjudicator - Activity on GOV.UK, https://www.gov.uk/government/organisations/pubs-code-adjudicator.atom, en-UK, United Kingdom
|
||||||
|
Queen Elizabeth II Conference Centre - Activity on GOV.UK, https://www.gov.uk/government/organisations/queen-elizabeth-ii-conference-centre.atom, en-UK, United Kingdom
|
||||||
|
Race Disparity Unit - Activity on GOV.UK, https://www.gov.uk/government/organisations/race-disparity-unit.atom, en-UK, United Kingdom
|
||||||
|
Rail Accident Investigation Branch - Activity on GOV.UK, https://www.gov.uk/government/organisations/rail-accident-investigation-branch.atom, en-UK, United Kingdom
|
||||||
|
Rail Safety and Standards Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/rail-safety-and-standards-board.atom, en-UK, United Kingdom
|
||||||
|
Reclaim Fund Ltd - Activity on GOV.UK, https://www.gov.uk/government/organisations/reclaim-fund-ltd.atom, en-UK, United Kingdom
|
||||||
|
Regional Department for Education (DfE) Directors - Activity on GOV.UK, https://www.gov.uk/government/organisations/regional-department-for-education-dfe-directors.atom, en-UK, United Kingdom
|
||||||
|
Regulator of Social Housing - Activity on GOV.UK, https://www.gov.uk/government/organisations/regulator-of-social-housing.atom, en-UK, United Kingdom
|
||||||
|
Regulatory Policy Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/regulatory-policy-committee.atom, en-UK, United Kingdom
|
||||||
|
Remploy Pension Scheme Trustees Ltd - Activity on GOV.UK, https://www.gov.uk/government/organisations/remploy-pension-scheme-trustees-ltd.atom, en-UK, United Kingdom
|
||||||
|
Remploy Pension Scheme Trustees Ltd - Activity on GOV.UK, https://www.gov.uk/government/organisations/remploy-pension-scheme-trustees-ltd.atom, en-UK, United Kingdom
|
||||||
|
Research Collaboration Advice Team - Activity on GOV.UK, https://www.gov.uk/government/organisations/research-collaboration-advice-team.atom, en-UK, United Kingdom
|
||||||
|
Reserve Forces' and Cadets' Associations (RFCA) - Activity on GOV.UK, https://www.gov.uk/government/organisations/reserve-forces-and-cadets-associations.atom, en-UK, United Kingdom
|
||||||
|
Review Body on Doctors' and Dentists' Remuneration - Activity on GOV.UK, https://www.gov.uk/government/organisations/review-body-on-doctors-and-dentists-remuneration.atom, en-UK, United Kingdom
|
||||||
|
Royal Air Force Museum - Activity on GOV.UK, https://www.gov.uk/government/organisations/royal-air-force-museum.atom, en-UK, United Kingdom
|
||||||
|
Royal Armouries Museum - Activity on GOV.UK, https://www.gov.uk/government/organisations/royal-armouries-museum.atom, en-UK, United Kingdom
|
||||||
|
Royal Marines Museum - Activity on GOV.UK, https://www.gov.uk/government/organisations/royal-marines-museum.atom, en-UK, United Kingdom
|
||||||
|
Royal Mint - Activity on GOV.UK, https://www.gov.uk/government/organisations/royal-mint.atom, en-UK, United Kingdom
|
||||||
|
Royal Mint Advisory Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/royal-mint-advisory-committee.atom, en-UK, United Kingdom
|
||||||
|
Royal Museums Greenwich - Activity on GOV.UK, https://www.gov.uk/government/organisations/royal-museums-greenwich.atom, en-UK, United Kingdom
|
||||||
|
Royal Navy Submarine Museum - Activity on GOV.UK, https://www.gov.uk/government/organisations/royal-navy-submarine-museum.atom, en-UK, United Kingdom
|
||||||
|
Royal Parks - Activity on GOV.UK, https://www.gov.uk/government/organisations/royal-parks.atom, en-UK, United Kingdom
|
||||||
|
Rural Development Programme for England Network - Activity on GOV.UK, https://www.gov.uk/government/organisations/rural-development-programme-for-england-network.atom, en-UK, United Kingdom
|
||||||
|
Rural Payments Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/rural-payments-agency.atom, en-UK, United Kingdom
|
||||||
|
S4C - Activity on GOV.UK, https://www.gov.uk/government/organisations/s4c.atom, en-UK, United Kingdom
|
||||||
|
Salix Finance Ltd - Activity on GOV.UK, https://www.gov.uk/government/organisations/salix-finance-ltd.atom, en-UK, United Kingdom
|
||||||
|
School Teachers' Review Body - Activity on GOV.UK, https://www.gov.uk/government/organisations/school-teachers-review-body.atom, en-UK, United Kingdom
|
||||||
|
Science Advisory Committees - Activity on GOV.UK, https://www.gov.uk/government/organisations/science-advisory-committees.atom, en-UK, United Kingdom
|
||||||
|
Science and Technology Facilities Council - Activity on GOV.UK, https://www.gov.uk/government/organisations/science-and-technology-facilities-council.atom, en-UK, United Kingdom
|
||||||
|
Science Museum Group - Activity on GOV.UK, https://www.gov.uk/government/organisations/science-museum-group.atom, en-UK, United Kingdom
|
||||||
|
Scientific Advisory Committee on the Medical Implications of Less-Lethal Weapons - Activity on GOV.UK, https://www.gov.uk/government/organisations/science-advisory-committee-on-the-medical-implications-of-less-lethal-weapons.atom, en-UK, United Kingdom
|
||||||
|
Scientific Advisory Group for Emergencies - Activity on GOV.UK, https://www.gov.uk/government/organisations/scientific-advisory-group-for-emergencies.atom, en-UK, United Kingdom
|
||||||
|
Seafish - Activity on GOV.UK, https://www.gov.uk/government/organisations/seafish.atom, en-UK, United Kingdom
|
||||||
|
Secret Intelligence Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/secret-intelligence-service.atom, en-UK, United Kingdom
|
||||||
|
Security Industry Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/security-industry-authority.atom, en-UK, United Kingdom
|
||||||
|
Security Vetting Appeals Panel - Activity on GOV.UK, https://www.gov.uk/government/organisations/security-vetting-appeals-panel.atom, en-UK, United Kingdom
|
||||||
|
Sellafield Ltd - Activity on GOV.UK, https://www.gov.uk/government/organisations/sellafield-ltd.atom, en-UK, United Kingdom
|
||||||
|
Senior Salaries Review Body - Activity on GOV.UK, https://www.gov.uk/government/organisations/review-body-on-senior-salaries.atom, en-UK, United Kingdom
|
||||||
|
Senior Salaries Review Body - Activity on GOV.UK, https://www.gov.uk/government/organisations/review-body-on-senior-salaries.atom, en-UK, United Kingdom
|
||||||
|
Sentencing Council for England and Wales - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-sentencing-council-for-england-and-wales.atom, en-UK, United Kingdom
|
||||||
|
Serious Fraud Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/serious-fraud-office.atom, en-UK, United Kingdom
|
||||||
|
Service Complaints Ombudsman - Activity on GOV.UK, https://www.gov.uk/government/organisations/service-complaints-ombudsman.atom, en-UK, United Kingdom
|
||||||
|
Service Complaints Ombudsman - Activity on GOV.UK, https://www.gov.uk/government/organisations/service-complaints-ombudsman.atom, en-UK, United Kingdom
|
||||||
|
Service Prosecuting Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/service-prosecuting-authority.atom, en-UK, United Kingdom
|
||||||
|
Sheffield Forgemasters International Ltd - Activity on GOV.UK, https://www.gov.uk/government/organisations/sheffield-forgemasters-international-ltd.atom, en-UK, United Kingdom
|
||||||
|
Single Source Regulations Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/single-source-regulations-office.atom, en-UK, United Kingdom
|
||||||
|
Sir John Soane's Museum - Activity on GOV.UK, https://www.gov.uk/government/organisations/sir-john-soane-s-museum.atom, en-UK, United Kingdom
|
||||||
|
Small Business Commissioner - Activity on GOV.UK, https://www.gov.uk/government/organisations/small-business-commissioner.atom, en-UK, United Kingdom
|
||||||
|
Social Mobility Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/social-mobility-commission.atom, en-UK, United Kingdom
|
||||||
|
Social Science Research Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/social-science-research-committee.atom, en-UK, United Kingdom
|
||||||
|
Social Security Advisory Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/social-security-advisory-committee.atom, en-UK, United Kingdom
|
||||||
|
Social Work England - Activity on GOV.UK, https://www.gov.uk/government/organisations/social-work-england.atom, en-UK, United Kingdom
|
||||||
|
South Downs National Park Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/south-downs-national-park-authority.atom, en-UK, United Kingdom
|
||||||
|
Sport England - Activity on GOV.UK, https://www.gov.uk/government/organisations/sport-england.atom, en-UK, United Kingdom
|
||||||
|
Sport Northern Ireland (Sports Council for Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/sports-council-for-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Sports Council for Wales - Activity on GOV.UK, https://www.gov.uk/government/organisations/sports-council-for-wales.atom, en-UK, United Kingdom
|
||||||
|
Sports Grounds Safety Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/sports-grounds-safety-authority.atom, en-UK, United Kingdom
|
||||||
|
Standards and Testing Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/standards-and-testing-agency.atom, en-UK, United Kingdom
|
||||||
|
Strategic Command - Activity on GOV.UK, https://www.gov.uk/government/organisations/strategic-command.atom, en-UK, United Kingdom
|
||||||
|
Student Loans Company - Activity on GOV.UK, https://www.gov.uk/government/organisations/student-loans-company.atom, en-UK, United Kingdom
|
||||||
|
Submarine Delivery Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/submarine-delivery-agency.atom, en-UK, United Kingdom
|
||||||
|
Subsidy Advice Unit - Activity on GOV.UK, https://www.gov.uk/government/organisations/subsidy-advice-unit.atom, en-UK, United Kingdom
|
||||||
|
Supreme Court of the United Kingdom - Activity on GOV.UK, https://www.gov.uk/government/organisations/supreme-court-of-the-united-kingdom.atom, en-UK, United Kingdom
|
||||||
|
Tate - Activity on GOV.UK, https://www.gov.uk/government/organisations/tate.atom, en-UK, United Kingdom
|
||||||
|
Teaching Regulation Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/teaching-regulation-agency.atom, en-UK, United Kingdom
|
||||||
|
Technical Advisory Board - Activity on GOV.UK, https://www.gov.uk/government/organisations/technical-advisory-board.atom, en-UK, United Kingdom
|
||||||
|
The Adjudicator’s Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-adjudicator-s-office.atom, en-UK, United Kingdom
|
||||||
|
The Advisory Council on National Records and Archives - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-advisory-council-on-national-records-and-archives.atom, en-UK, United Kingdom
|
||||||
|
The Charity Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/charity-commission.atom, en-UK, United Kingdom
|
||||||
|
The Crown Estate - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-crown-estate.atom, en-UK, United Kingdom
|
||||||
|
The Electoral Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-electoral-commission.atom, en-UK, United Kingdom
|
||||||
|
The Executive Office (Northern Ireland) - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-executive-office-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
The Insolvency Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/insolvency-service.atom, en-UK, United Kingdom
|
||||||
|
The Legal Ombudsman - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-legal-ombudsman.atom, en-UK, United Kingdom
|
||||||
|
The National Archives - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-national-archives.atom, en-UK, United Kingdom
|
||||||
|
The National Archives - Blog, http://blog.nationalarchives.gov.uk/feed/, en-UK, United Kingdom
|
||||||
|
The National Archives - News Archives, https://www.nationalarchives.gov.uk/rss/news.xml, en-UK, United Kingdom
|
||||||
|
The National Archives - Podcast Series, https://www.nationalarchives.gov.uk/rss/podcasts.xml, en-UK, United Kingdom
|
||||||
|
The National Archives - PSI updates, https://www.nationalarchives.gov.uk/rss/psi-updates.xml, en-UK, United Kingdom
|
||||||
|
The National Lottery Community Fund - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-national-lottery-community-fund.atom, en-UK, United Kingdom
|
||||||
|
The Oil and Pipelines Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/oil-and-pipelines-agency.atom, en-UK, United Kingdom
|
||||||
|
The Parliamentary and Health Service Ombudsman - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-parliamentary-and-health-service-ombudsman.atom, en-UK, United Kingdom
|
||||||
|
The Pension Protection Fund Ombudsman - Activity on GOV.UK, https://www.gov.uk/government/organisations/pension-protection-fund-ombudsman.atom, en-UK, United Kingdom
|
||||||
|
The Pensions Ombudsman - Activity on GOV.UK, https://www.gov.uk/government/organisations/pensions-ombudsman.atom, en-UK, United Kingdom
|
||||||
|
The Pensions Regulator - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-pensions-regulator.atom, en-UK, United Kingdom
|
||||||
|
The Reviewing Committee on the Export of Works of Art and Objects of Cultural Interest - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-reviewing-committee-on-the-export-of-works-of-art-and-objects-of-cultural-interest.atom, en-UK, United Kingdom
|
||||||
|
The Scottish Government - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-scottish-government.atom, en-UK, United Kingdom
|
||||||
|
The Security Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-security-service-mi5.atom, en-UK, United Kingdom
|
||||||
|
The Theatres Trust - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-theatres-trust.atom, en-UK, United Kingdom
|
||||||
|
The Water Services Regulation Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-water-services-regulation-authority.atom, en-UK, United Kingdom
|
||||||
|
The Water Services Regulation Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/the-water-services-regulation-authority.atom, en-UK, United Kingdom
|
||||||
|
Trade and Agriculture Commission - Activity on GOV.UK, https://www.gov.uk/government/organisations/trade-and-agriculture-commission.atom, en-UK, United Kingdom
|
||||||
|
Trade Remedies Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/trade-remedies-authority.atom, en-UK, United Kingdom
|
||||||
|
Traffic Commissioners for Great Britain - Activity on GOV.UK, https://www.gov.uk/government/organisations/traffic-commissioners.atom, en-UK, United Kingdom
|
||||||
|
Transport Focus - Activity on GOV.UK, https://www.gov.uk/government/organisations/transport-focus.atom, en-UK, United Kingdom
|
||||||
|
Treasure Valuation Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/treasure-valuation-committee.atom, en-UK, United Kingdom
|
||||||
|
Tribunal Procedure Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/tribunal-procedure-committee.atom, en-UK, United Kingdom
|
||||||
|
Trinity House - Activity on GOV.UK, https://www.gov.uk/government/organisations/trinity-house.atom, en-UK, United Kingdom
|
||||||
|
UK Anti-Doping - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-anti-doping.atom, en-UK, United Kingdom
|
||||||
|
UK Asset Resolution Limited - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-asset-resolution-limited.atom, en-UK, United Kingdom
|
||||||
|
UK Atomic Energy Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-atomic-energy-authority.atom, en-UK, United Kingdom
|
||||||
|
UK Commission on Covid Commemoration - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-commission-on-covid-commemoration.atom, en-UK, United Kingdom
|
||||||
|
UK Council for Internet Safety - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-council-for-internet-safety.atom, en-UK, United Kingdom
|
||||||
|
UK Debt Management Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-debt-management-office.atom, en-UK, United Kingdom
|
||||||
|
UK Defence and Security Exports - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-defence-and-security-exports.atom, en-UK, United Kingdom
|
||||||
|
UK Export Finance - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-export-finance.atom, en-UK, United Kingdom
|
||||||
|
UK Government Investments - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-government-investments.atom, en-UK, United Kingdom
|
||||||
|
UK Health Security Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-health-security-agency.atom, en-UK, United Kingdom
|
||||||
|
UK Holocaust Memorial Foundation - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-holocaust-memorial-foundation.atom, en-UK, United Kingdom
|
||||||
|
UK Hydrographic Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-hydrographic-office.atom, en-UK, United Kingdom
|
||||||
|
UK Infrastructure Bank - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-infrastructure-bank.atom, en-UK, United Kingdom
|
||||||
|
UK National Authority for Counter-Eavesdropping - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-national-authority-for-counter-eavesdropping.atom, en-UK, United Kingdom
|
||||||
|
UK National Contact Point - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-national-contact-point.atom, en-UK, United Kingdom
|
||||||
|
UK National Screening Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-national-screening-committee.atom, en-UK, United Kingdom
|
||||||
|
UK Research and Innovation - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-research-and-innovation.atom, en-UK, United Kingdom
|
||||||
|
UK Shared Business Services Ltd - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-shared-business-services-ltd.atom, en-UK, United Kingdom
|
||||||
|
UK Space Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-space-agency.atom, en-UK, United Kingdom
|
||||||
|
UK Sport - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-sport.atom, en-UK, United Kingdom
|
||||||
|
UK Statistics Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-statistics-authority.atom, en-UK, United Kingdom
|
||||||
|
UK Visas and Immigration - Activity on GOV.UK, https://www.gov.uk/government/organisations/uk-visas-and-immigration.atom, en-UK, United Kingdom
|
||||||
|
United Kingdom Reserve Forces Association - Activity on GOV.UK, https://www.gov.uk/government/organisations/united-kingdom-reserve-forces-association.atom, en-UK, United Kingdom
|
||||||
|
United Kingdom Security Vetting - Activity on GOV.UK, https://www.gov.uk/government/organisations/united-kingdom-security-vetting.atom, en-UK, United Kingdom
|
||||||
|
Valuation Office Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/valuation-office-agency.atom, en-UK, United Kingdom
|
||||||
|
Valuation Tribunal for England - Activity on GOV.UK, https://www.gov.uk/government/organisations/valuation-tribunal-for-england.atom, en-UK, United Kingdom
|
||||||
|
Valuation Tribunal for England - Activity on GOV.UK, https://www.gov.uk/government/organisations/valuation-tribunal-for-england.atom, en-UK, United Kingdom
|
||||||
|
Valuation Tribunal Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/valuation-tribunal-service-for-england-valuation-tribunal-service.atom, en-UK, United Kingdom
|
||||||
|
Vehicle Certification Agency - Activity on GOV.UK, https://www.gov.uk/government/organisations/vehicle-certification-agency.atom, en-UK, United Kingdom
|
||||||
|
Veterans Advisory and Pensions Committees - Activity on GOV.UK, https://www.gov.uk/government/organisations/veterans-advisory-and-pensions-committees-x13.atom, en-UK, United Kingdom
|
||||||
|
Veterans UK - Activity on GOV.UK, https://www.gov.uk/government/organisations/veterans-uk.atom, en-UK, United Kingdom
|
||||||
|
Veterinary Medicines Directorate - Activity on GOV.UK, https://www.gov.uk/government/organisations/veterinary-medicines-directorate.atom, en-UK, United Kingdom
|
||||||
|
Veterinary Products Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/veterinary-products-committee.atom, en-UK, United Kingdom
|
||||||
|
Victims' Commissioner - Activity on GOV.UK, https://www.gov.uk/government/organisations/victims-commissioner.atom, en-UK, United Kingdom
|
||||||
|
Victoria and Albert Museum - Activity on GOV.UK, https://www.gov.uk/government/organisations/victoria-and-albert-museum.atom, en-UK, United Kingdom
|
||||||
|
VisitBritain - Activity on GOV.UK, https://www.gov.uk/government/organisations/visitbritain.atom, en-UK, United Kingdom
|
||||||
|
VisitEngland - Activity on GOV.UK, https://www.gov.uk/government/organisations/visitengland.atom, en-UK, United Kingdom
|
||||||
|
Wales Audit Office - Activity on GOV.UK, https://www.gov.uk/government/organisations/wales-audit-office.atom, en-UK, United Kingdom
|
||||||
|
Wallace Collection - Activity on GOV.UK, https://www.gov.uk/government/organisations/wallace-collection.atom, en-UK, United Kingdom
|
||||||
|
Welsh Government - Activity on GOV.UK, https://www.gov.uk/government/organisations/welsh-government.atom, en-UK, United Kingdom
|
||||||
|
Welsh Language Commissioner - Activity on GOV.UK, https://www.gov.uk/government/organisations/welsh-language-commissioner.atom, en-UK, United Kingdom
|
||||||
|
Westminster Foundation for Democracy - Activity on GOV.UK, https://www.gov.uk/government/organisations/westminster-foundation-for-democracy.atom, en-UK, United Kingdom
|
||||||
|
Wilton Park - Activity on GOV.UK, https://www.gov.uk/government/organisations/wilton-park.atom, en-UK, United Kingdom
|
||||||
|
Windrush Commemoration Committee - Activity on GOV.UK, https://www.gov.uk/government/organisations/windrush-commemoration-committee.atom, en-UK, United Kingdom
|
||||||
|
Yorkshire Dales National Park Authority - Activity on GOV.UK, https://www.gov.uk/government/organisations/yorkshire-dales-national-park-authority.atom, en-UK, United Kingdom
|
||||||
|
Youth Custody Service - Activity on GOV.UK, https://www.gov.uk/government/organisations/youth-custody-service.atom, en-UK, United Kingdom
|
||||||
|
Youth Justice Agency of Northern Ireland - Activity on GOV.UK, https://www.gov.uk/government/organisations/youth-justice-agency-of-northern-ireland.atom, en-UK, United Kingdom
|
||||||
|
Youth Justice Board for England and Wales - Activity on GOV.UK, https://www.gov.uk/government/organisations/youth-justice-board-for-england-and-wales.atom, en-UK, United Kingdom
|
|
3
datasets/legislatures/iceland.csv
Normal file
3
datasets/legislatures/iceland.csv
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
name, url, language, country
|
||||||
|
Alþingi - Alþingi, https://www.althingi.is/rss.xml, is-IS, Iceland
|
||||||
|
Alþingi - Jafnlaunavottun, https://www.althingi.is/um-althingi/skrifstofa-althingis/jafnlaunavottun/rss.xml, Icelandic, Iceland
|
|
2
datasets/legislatures/idaho.csv
Normal file
2
datasets/legislatures/idaho.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
Idaho State Legislature, https://legislature.idaho.gov/feed/, en-US, USA
|
|
6
datasets/legislatures/ireland.csv
Normal file
6
datasets/legislatures/ireland.csv
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
name, url, language, country
|
||||||
|
Houses of the Oireachtas - Dail Schedule, https://www.oireachtas.ie/en/rss/dail-schedule.xml, en-IE, Ireland
|
||||||
|
Houses of the Oireachtas - Seanad Schedule, https://www.oireachtas.ie/en/rss/seanad-schedule.xml, en-IE, Ireland
|
||||||
|
Houses of the Oireachtas - Committee Schedule, https://www.oireachtas.ie/en/rss/committee-schedule.xml, en-IE, Ireland
|
||||||
|
Houses of the Oireachtas - Press Releases, https://www.oireachtas.ie/en/rss/press-releases.xml, en-IE, Ireland
|
||||||
|
|
|
1
datasets/news/.csv
Normal file
1
datasets/news/.csv
Normal file
|
@ -0,0 +1 @@
|
||||||
|
name, url, language, country
|
|
1
datasets/news/5g.csv
Normal file
1
datasets/news/5g.csv
Normal file
|
@ -0,0 +1 @@
|
||||||
|
name, url, language, country
|
|
2
datasets/news/art.csv
Normal file
2
datasets/news/art.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
The Public Domain Review, https://publicdomainreview.org/rss.xml, en-US, USA
|
|
2
datasets/news/australia.csv
Normal file
2
datasets/news/australia.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
Mail Online - Australia Home, https://www.dailymail.co.uk/auhome/index.rss, en-US, Australia
|
|
13
datasets/news/business.csv
Normal file
13
datasets/news/business.csv
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
name, url, language, country
|
||||||
|
ynet - צרכנות, https://www.ynet.co.il/Integration/StoryRss5363.xml, he-IL, Israel
|
||||||
|
ynet - כלכלה, https://www.ynet.co.il/Integration/StoryRss6.xml, he-IL, Israel
|
||||||
|
דה מרקר - שוק ההון, https://www.themarker.com/srv/tm-markets, he-IL, Israel
|
||||||
|
דה מרקר - וול סטריט, https://www.themarker.com/srv/tm-wallstreet, he-IL, Israel
|
||||||
|
דה מרקר - נדלן, https://www.themarker.com/srv/tm-real-estate, he-IL, Israel
|
||||||
|
דה מרקר - היי-טק, https://www.themarker.com/srv/tm-technation, he-IL, Israel
|
||||||
|
דה מרקר - עסקים קטנים ובינוניים, https://www.themarker.com/srv/tm-small-business, he-IL, Israel
|
||||||
|
דה מרקר - צרכנות, https://www.themarker.com/srv/tm-consumer, he-IL, Israel
|
||||||
|
דה מרקר - כותרות דף הבית, https://www.themarker.com/srv/tm-all-articles, he-IL, Israel
|
||||||
|
דה מרקר - כותרות היום, https://www.themarker.com/srv/tm-news, he-IL, Israel
|
||||||
|
דה מרקר - פרשנויות היום, https://www.themarker.com/srv/tm-opinions, he-IL, Israel
|
||||||
|
Mail Online - Money, https://www.dailymail.co.uk/money/index.rss, en-US, UK
|
|
4
datasets/news/christianity.csv
Normal file
4
datasets/news/christianity.csv
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
name, url, language, country
|
||||||
|
Evangelical Endtimemachine, https://www.evangelicalendtimemachine.com/feed/, ce-PH ja-JP nl-NL , Worldwide
|
||||||
|
Orthodox Christianity, https://orthochristian.com/xml/rss.xml, en-US, USA
|
||||||
|
Legio Christi, https://legiochristi.com/rss/, en-US, USA
|
|
6
datasets/news/computing.csv
Normal file
6
datasets/news/computing.csv
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
name, url, language, country
|
||||||
|
computers are bad, https://computer.rip/rss.xml, en-US, Worldwide
|
||||||
|
Jacob McCormick, https://mccor.xyz/rss.xml, en-US, USA
|
||||||
|
ju_hnny5, https://blog.jbriault.fr/rss/, fr-FR, France
|
||||||
|
Lazy Reading | The Cyber Vanguard, https://cyber.dabamos.de/blog/feed.rss, en-US, USA
|
||||||
|
XXIIVV, https://wiki.xxiivv.com/links/rss.xml, en-US, Canada
|
|
2
datasets/news/culture.csv
Normal file
2
datasets/news/culture.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
The Organic Prepper, https://www.theorganicprepper.com/feed/, en-US, USA
|
|
1
datasets/news/cybersecurity.csv
Normal file
1
datasets/news/cybersecurity.csv
Normal file
|
@ -0,0 +1 @@
|
||||||
|
name, url, language, country
|
|
3
datasets/news/entertainment.csv
Normal file
3
datasets/news/entertainment.csv
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
name, url, language, country
|
||||||
|
Mail Online - TV & showbiz, https://www.dailymail.co.uk/tvshowbiz/index.rss, en-US, USA
|
||||||
|
Mail Online, https://www.dailymail.co.uk/news/index.rss, en-US, USA
|
|
10
datasets/news/fiction.csv
Normal file
10
datasets/news/fiction.csv
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
name, url, language, country
|
||||||
|
ynet - מדע, https://www.ynet.co.il/Integration/StoryRss2142.xml, he-IL, Israel
|
||||||
|
Stories by Williams, https://storiesbywilliams.com/feed/, en-US, USA
|
||||||
|
SciTechDaily, https://scitechdaily.com/feed/, en-US, USA
|
||||||
|
ScienceDaily, https://www.sciencedaily.com/rss/all.xml, en-US, USA
|
||||||
|
ScienceAlert, https://www.sciencealert.com/feed, en-US, USA
|
||||||
|
NASA Image of the Day, https://www.nasa.gov/feeds/iotd-feed, en-US, USA
|
||||||
|
Futurism, https://futurism.com/feed, en-US, USA
|
||||||
|
Nature, https://www.nature.com/nature.rss, en-US, USA
|
||||||
|
Mail Online - Science & tech, https://www.dailymail.co.uk/sciencetech/index.rss, en-US, UK
|
|
1
datasets/news/gaming.csv
Normal file
1
datasets/news/gaming.csv
Normal file
|
@ -0,0 +1 @@
|
||||||
|
name, url, language, country
|
|
8
datasets/news/general.csv
Normal file
8
datasets/news/general.csv
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
name, url, language, country
|
||||||
|
mainichi, https://mainichi.jp/rss/etc/english_latest.rss, en-US, Japan
|
||||||
|
LewRockwell, http://www.lewrockwell.com/feed/, en-US, USA
|
||||||
|
Campaign for Liberty, https://campaignforliberty.org/feed/, en-US, USA
|
||||||
|
National Vanguard, https://nationalvanguard.org/feed/, en-US, USA
|
||||||
|
Vanguard News Network, http://www.vanguardnewsnetwork.com/feed/, en-US, USA
|
||||||
|
Courageous Discourse™ with Dr. Peter McCullough & John Leake, https://petermcculloughmd.substack.com/feed, en-US, USA
|
||||||
|
DER SPIEGEL - International, https://www.spiegel.de/international/index.rss, en-US, Germany
|
|
4
datasets/news/government.csv
Normal file
4
datasets/news/government.csv
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
name, url, language, country
|
||||||
|
The Corbett Report, https://www.corbettreport.com/feed/, en-US, Japan
|
||||||
|
ZeroGov, https://zerogov.com/feed/, en-US, USA
|
||||||
|
The Organic Prepper, https://www.theorganicprepper.com/feed/, en-US, USA
|
|
7
datasets/news/israel.csv
Normal file
7
datasets/news/israel.csv
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
name, url, language, country
|
||||||
|
בחדרי חרדים, https://www.bhol.co.il/rss/index.xml, he-IL, Israel
|
||||||
|
ynet - מבזקים, https://www.ynet.co.il/Integration/StoryRss1854.xml, he-IL, Israel
|
||||||
|
ynet - חדשות, https://www.ynet.co.il/Integration/StoryRss2.xml, he-IL, Israel
|
||||||
|
ynet - News, https://www.ynet.co.il/3rdparty/mobile/rss/ynetnews/3082/, en-IL, Israel
|
||||||
|
העין השביעית, https://www.the7eye.org.il/feed, he-IL, Israel
|
||||||
|
|
|
5
datasets/news/judaism.csv
Normal file
5
datasets/news/judaism.csv
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
name, url, language, country
|
||||||
|
בחדרי חרדים, https://www.bhol.co.il/rss/index.xml, he-IL, Israel
|
||||||
|
ynet - יהדות, https://www.ynet.co.il/Integration/StoryRss4403.xml, he-IL, Israel
|
||||||
|
ynet - Jewish, https://www.ynet.co.il/3rdparty/mobile/rss/ynetnews/3443/, en-IL, Israel
|
||||||
|
|
|
4
datasets/news/lifestyle.csv
Normal file
4
datasets/news/lifestyle.csv
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
name, url, language, country
|
||||||
|
Jacob McCormick, https://mccor.xyz/rss.xml, en-US, USA
|
||||||
|
The Organic Prepper, https://www.theorganicprepper.com/feed/, en-US, USA
|
||||||
|
XXIIVV, https://wiki.xxiivv.com/links/rss.xml, en-US, Canada
|
|
3
datasets/news/linux.csv
Normal file
3
datasets/news/linux.csv
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
name, url, language, country
|
||||||
|
Linux Professional Institute (LPI), https://www.lpi.org/feed/, en-US, Canada
|
||||||
|
LinuxConfig, https://linuxconfig.org/feed, en-US, Worldwide
|
|
2
datasets/news/middle_east.csv
Normal file
2
datasets/news/middle_east.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
MintPress News, https://www.mintpressnews.com/feed/, en-US, USA
|
|
5
datasets/news/opinions.csv
Normal file
5
datasets/news/opinions.csv
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
name, url, language, country
|
||||||
|
National Vanguard, https://nationalvanguard.org/feed/, en-US, USA
|
||||||
|
Vanguard News Network, http://www.vanguardnewsnetwork.com/feed/, en-US, USA
|
||||||
|
דה מרקר - פרשנויות היום, https://www.themarker.com/srv/tm-opinions, he-IL, Israel
|
||||||
|
|
|
1
datasets/news/privacy.csv
Normal file
1
datasets/news/privacy.csv
Normal file
|
@ -0,0 +1 @@
|
||||||
|
name, url, language, country
|
|
3
datasets/news/propaganda.csv
Normal file
3
datasets/news/propaganda.csv
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
name, url, language, country
|
||||||
|
העין השביעית, https://www.the7eye.org.il/feed, he-IL, Israel
|
||||||
|
Fakeologist, https://fakeologist.com/feed/, en-US, Canada
|
|
4
datasets/news/relationship.csv
Normal file
4
datasets/news/relationship.csv
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
name, url, language, country
|
||||||
|
Knowledge For Men, https://www.knowledgeformen.com/feed/, en-US, USA
|
||||||
|
ynet - יחסים, https://www.ynet.co.il/Integration/StoryRss3925.xml, he-IL, Israel
|
||||||
|
|
|
2
datasets/news/sailing.csv
Normal file
2
datasets/news/sailing.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
XXIIVV, https://wiki.xxiivv.com/links/rss.xml, en-US, Canada
|
|
1
datasets/news/science.csv
Normal file
1
datasets/news/science.csv
Normal file
|
@ -0,0 +1 @@
|
||||||
|
name, url, language, country
|
|
2
datasets/news/security.csv
Normal file
2
datasets/news/security.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
The Organic Prepper, https://www.theorganicprepper.com/feed/, en-US, USA
|
|
2
datasets/news/sorority.csv
Normal file
2
datasets/news/sorority.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
Alpha Delta Pi, https://www.alphadeltapi.org/feed/, en-US, USA
|
|
1
datasets/news/sports.csv
Normal file
1
datasets/news/sports.csv
Normal file
|
@ -0,0 +1 @@
|
||||||
|
name, url, language, country
|
|
2
datasets/news/survival.csv
Normal file
2
datasets/news/survival.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
The Organic Prepper, https://www.theorganicprepper.com/feed/, en-US, USA
|
|
2
datasets/news/technology.csv
Normal file
2
datasets/news/technology.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
Developpez, https://www.developpez.com/index/atom, fr-FR, France
|
|
2
datasets/news/telecom.csv
Normal file
2
datasets/news/telecom.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
The XMPP Blog on XMPP, https://xmpp.org/feeds/all.atom.xml, en-US, Worldwide
|
|
1
datasets/news/war.csv
Normal file
1
datasets/news/war.csv
Normal file
|
@ -0,0 +1 @@
|
||||||
|
name, url, language, country
|
|
2
datasets/news/xmpp.csv
Normal file
2
datasets/news/xmpp.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
The XMPP Blog on XMPP, https://xmpp.org/feeds/all.atom.xml, en-US, Worldwide
|
|
2
datasets/organizations/united_states.csv
Normal file
2
datasets/organizations/united_states.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
National Alliance, https://www.natall.com/feed/, en-US, USA
|
|
2
datasets/podcasts/code.csv
Normal file
2
datasets/podcasts/code.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
Talk Python To Me, https://talkpython.fm/episodes/rss, en-US, USA
|
|
4
datasets/podcasts/culture.csv
Normal file
4
datasets/podcasts/culture.csv
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
name, url, language, country
|
||||||
|
American Dissident Voices, https://nationalvanguard.org/category/american-dissident-voices/feed/, en-US, USA
|
||||||
|
Radio 3Fourteen, https://redice.tv/rss/radio-3fourteen, en-US, USA
|
||||||
|
The National Archives - Podcast Series, https://www.nationalarchives.gov.uk/rss/podcasts.xml, en-UK, United Kingdom
|
|
4
datasets/podcasts/government.csv
Normal file
4
datasets/podcasts/government.csv
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
name, url, language, country
|
||||||
|
American Dissident Voices, https://nationalvanguard.org/category/american-dissident-voices/feed/, en-US, USA
|
||||||
|
The Corbett Report, https://www.corbettreport.com/feed/, en-US, Japan
|
||||||
|
Radio 3Fourteen, https://redice.tv/rss/radio-3fourteen, en-US, USA
|
|
3
datasets/podcasts/technology.csv
Normal file
3
datasets/podcasts/technology.csv
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
name, url, language, country
|
||||||
|
The Corbett Report, https://www.corbettreport.com/feed/, en-US, Japan
|
||||||
|
postmarketOS, https://cast.postmarketos.org/feed.rss, en-US, Germany
|
|
2
datasets/projects/chemistry.csv
Normal file
2
datasets/projects/chemistry.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
Open Chemistry, https://www.openchemistry.org/feed/, en-US, USA
|
|
2
datasets/projects/compiler.csv
Normal file
2
datasets/projects/compiler.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
PyPy, https://www.pypy.org/rss.xml, en-US, Worldwide
|
|
3
datasets/projects/internet.csv
Normal file
3
datasets/projects/internet.csv
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
name, url, language, country
|
||||||
|
DownThemAll!, https://www.downthemall.org/feed, en-US, Worldwide
|
||||||
|
Falkon - KDE web browser, https://www.falkon.org/atom.xml, en-US, Czech
|
|
3
datasets/projects/multimedia.csv
Normal file
3
datasets/projects/multimedia.csv
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
name, url, language, country
|
||||||
|
mosu's Matroska stuff, https://www.bunkus.org/blog/feed/, en-US, Worldwide
|
||||||
|
|
|
2
datasets/projects/visualization.csv
Normal file
2
datasets/projects/visualization.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
VTK - The Visualization Toolkit, https://vtk.org/feed/, en-US, USA
|
|
3
datasets/videos/lifestyle.csv
Normal file
3
datasets/videos/lifestyle.csv
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
name, url, language, country
|
||||||
|
denshi.live, https://denshi.live/feeds/videos.xml, en-US, USA
|
||||||
|
Luke's Videos, https://videos.lukesmith.xyz/feeds/videos.xml, en-US, USA
|
|
2
datasets/videos/propaganda.csv
Normal file
2
datasets/videos/propaganda.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
Fakeotube by Epic Cash, https://fakeotube.com/feed/, en-US, Canada
|
|
4
datasets/videos/technology.csv
Normal file
4
datasets/videos/technology.csv
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
name, url, language, country
|
||||||
|
denshi.live, https://denshi.live/feeds/videos.xml, en-US, USA
|
||||||
|
Luke's Videos, https://videos.lukesmith.xyz/feeds/videos.xml, en-US, USA
|
||||||
|
Films By Kris, https://filmsbykris.com/rss.xml, en-US, USA
|
|
3
datasets/wiki/encyclopedia.csv
Normal file
3
datasets/wiki/encyclopedia.csv
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
name, url, language, country
|
||||||
|
Metapedia - Recent changes [en], https://en.metapedia.org/m/index.php?title=Special:RecentChanges&feed=atom, en-US, Worldwide
|
||||||
|
Metapedia - Letzte Änderungen [de], https://de.metapedia.org/m/index.php?title=Spezial:Letzte_%C3%84nderungen&feed=atom, de, Worldwide
|
|
2
datasets/wiki/health.csv
Normal file
2
datasets/wiki/health.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
Physiopedia - Recent changes [en], https://www.physio-pedia.com/index.php?title=Special:RecentChanges&feed=atom, en-US, United Kingdom
|
|
6
datasets/wiki/linux.csv
Normal file
6
datasets/wiki/linux.csv
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
name, url, language, country
|
||||||
|
postmarketOS - Recent changes [en], https://wiki.postmarketos.org/index.php?title=Special:RecentChanges&feed=atom, en-US, Worldwide
|
||||||
|
ArchWiki - Recent changes [en], https://wiki.archlinux.org/index.php?title=Special:RecentChanges&feed=atom, en-US, Worldwide
|
||||||
|
linux-sunxi.org - Recent changes [en], https://linux-sunxi.org/index.php?title=Special:RecentChanges&feed=atom, en-US, Worldwide
|
||||||
|
OpenWrt Wiki, https://openwrt.org/feed.php, en-US, Worldwide
|
||||||
|
PINE64 - Recent changes - Recent changes [en], https://wiki.pine64.org/index.php?title=Special:RecentChanges&feed=atom, en-US, Worldwide
|
|
2
datasets/wiki/multimedia.csv
Normal file
2
datasets/wiki/multimedia.csv
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
name, url, language, country
|
||||||
|
MusicBrainz Wiki - Recent changes [en], https://wiki.musicbrainz.org/index.php?title=Special:RecentChanges&feed=atom, en-US, Worldwide
|
|
|
@ -1,13 +1,42 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# TODO
|
"""
|
||||||
#
|
|
||||||
# 0) sql prepared statements
|
FIXME
|
||||||
# 1) Autodetect feed:
|
|
||||||
# if page is not feed (or HTML) and contains <link rel="alternate">
|
1) Check feed duplication on runtime.
|
||||||
# 2) OPML import/export
|
When feed is valid and is not yet in the database it is
|
||||||
# 3) 2022-12-30 reduce async to (maybe) prevent inner lock. async on task: commands, downloader, updater
|
posible to send a batch which would result in duplication.
|
||||||
|
Consequently, it might result in database lock error upon
|
||||||
|
feed removal attempt
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
1) SQL prepared statements
|
||||||
|
|
||||||
|
2) Machine Learning for scrapping Title, Link, Summary and Timstamp
|
||||||
|
|
||||||
|
3) Support MUC
|
||||||
|
|
||||||
|
4) Support categories
|
||||||
|
|
||||||
|
5) Default prepackaged list of feeds
|
||||||
|
|
||||||
|
6) XMPP commands
|
||||||
|
|
||||||
|
7) Bot as transport
|
||||||
|
|
||||||
|
8) OMEMO
|
||||||
|
|
||||||
|
9) Logging
|
||||||
|
|
||||||
|
10) Default feeds (e.g. Blacklisted News, TBOT etc.)
|
||||||
|
|
||||||
|
11) Download and upload/send article (xHTML, xHTMLZ, Markdown, MHTML, TXT)
|
||||||
|
Use Readability
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
# vars and their meanings:
|
# vars and their meanings:
|
||||||
# jid = Jabber ID (XMPP)
|
# jid = Jabber ID (XMPP)
|
||||||
|
|
|
@ -1,6 +1,15 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
1) Use file settings.csv and pathnames.txt instead:
|
||||||
|
See get_value_default and get_default_list
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
@ -8,16 +17,21 @@ def get_default_dbdir():
|
||||||
"""
|
"""
|
||||||
Determine the directory path where dbfile will be stored.
|
Determine the directory path where dbfile will be stored.
|
||||||
|
|
||||||
If $XDG_DATA_HOME is defined, use it
|
* If $XDG_DATA_HOME is defined, use it;
|
||||||
else if $HOME exists, use it
|
* else if $HOME exists, use it;
|
||||||
else if the platform is Windows, use %APPDATA%
|
* else if the platform is Windows, use %APPDATA%;
|
||||||
else use the current directory.
|
* else use the current directory.
|
||||||
|
|
||||||
:return: Path to database file.
|
Returns
|
||||||
|
-------
|
||||||
|
str
|
||||||
|
Path to database file.
|
||||||
|
|
||||||
Note
|
Note
|
||||||
----
|
----
|
||||||
This code was taken from the buku project.
|
This function was taken from project buku.
|
||||||
|
|
||||||
|
See https://github.com/jarun/buku
|
||||||
|
|
||||||
* Arun Prakash Jana (jarun)
|
* Arun Prakash Jana (jarun)
|
||||||
* Dmitry Marakasov (AMDmi3)
|
* Dmitry Marakasov (AMDmi3)
|
||||||
|
@ -41,12 +55,15 @@ def get_default_confdir():
|
||||||
"""
|
"""
|
||||||
Determine the directory path where configuration will be stored.
|
Determine the directory path where configuration will be stored.
|
||||||
|
|
||||||
If $XDG_CONFIG_HOME is defined, use it
|
* If $XDG_CONFIG_HOME is defined, use it;
|
||||||
else if $HOME exists, use it
|
* else if $HOME exists, use it;
|
||||||
else if the platform is Windows, use %APPDATA%
|
* else if the platform is Windows, use %APPDATA%;
|
||||||
else use the current directory.
|
* else use the current directory.
|
||||||
|
|
||||||
:return: Path to configueation directory.
|
Returns
|
||||||
|
-------
|
||||||
|
str
|
||||||
|
Path to configueation directory.
|
||||||
"""
|
"""
|
||||||
# config_home = xdg.BaseDirectory.xdg_config_home
|
# config_home = xdg.BaseDirectory.xdg_config_home
|
||||||
config_home = os.environ.get('XDG_CONFIG_HOME')
|
config_home = os.environ.get('XDG_CONFIG_HOME')
|
||||||
|
@ -67,24 +84,69 @@ async def get_value_default(key):
|
||||||
"""
|
"""
|
||||||
Get settings default value.
|
Get settings default value.
|
||||||
|
|
||||||
:param key: "enabled", "interval", "quantum".
|
Parameters
|
||||||
:return: Integer.
|
----------
|
||||||
|
key : str
|
||||||
|
Key: enabled, filter-allow, filter-deny,
|
||||||
|
interval, quantum, random.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
result : int or str
|
||||||
|
Value.
|
||||||
"""
|
"""
|
||||||
if key == "enabled":
|
match key:
|
||||||
result = 1
|
case "enabled":
|
||||||
elif key == "quantum":
|
result = 1
|
||||||
result = 4
|
case "filter-allow":
|
||||||
elif key == "interval":
|
result = "hitler,sadam,saddam"
|
||||||
result = 30
|
case "filter-deny":
|
||||||
|
result = "crim,dead,death,disaster,holocaust,murder,war"
|
||||||
|
case "interval":
|
||||||
|
result = 30
|
||||||
|
case "quantum":
|
||||||
|
result = 4
|
||||||
|
case "random":
|
||||||
|
result = 0
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def get_list():
|
||||||
|
"""
|
||||||
|
Get dictionary file.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
paths : list
|
||||||
|
Dictionary of pathnames.
|
||||||
|
"""
|
||||||
|
paths = []
|
||||||
|
cfg_dir = get_default_confdir()
|
||||||
|
if not os.path.isdir(cfg_dir):
|
||||||
|
os.mkdir(cfg_dir)
|
||||||
|
cfg_file = os.path.join(cfg_dir, r"url_paths.txt")
|
||||||
|
if not os.path.isfile(cfg_file):
|
||||||
|
# confighandler.generate_dictionary()
|
||||||
|
list = get_default_list()
|
||||||
|
file = open(cfg_file, "w")
|
||||||
|
file.writelines("\n".join(list))
|
||||||
|
file.close()
|
||||||
|
file = open(cfg_file, "r")
|
||||||
|
lines = file.readlines()
|
||||||
|
for line in lines:
|
||||||
|
paths.extend([line.strip()])
|
||||||
|
return paths
|
||||||
|
|
||||||
|
|
||||||
# async def generate_dictionary():
|
# async def generate_dictionary():
|
||||||
def get_default_list():
|
def get_default_list():
|
||||||
"""
|
"""
|
||||||
Generate a dictionary file.
|
Generate a dictionary file.
|
||||||
|
|
||||||
:return: List.
|
Returns
|
||||||
|
-------
|
||||||
|
paths : list
|
||||||
|
Dictionary of pathnames.
|
||||||
"""
|
"""
|
||||||
paths = [
|
paths = [
|
||||||
".atom",
|
".atom",
|
||||||
|
@ -139,6 +201,8 @@ def get_default_list():
|
||||||
# "/rss.json",
|
# "/rss.json",
|
||||||
"/rss.php",
|
"/rss.php",
|
||||||
"/rss.xml",
|
"/rss.xml",
|
||||||
|
"/syndication.php?type=atom1.0", #mybb
|
||||||
|
"/syndication.php?type=rss2.0",
|
||||||
"/timeline.rss",
|
"/timeline.rss",
|
||||||
"/videos.atom",
|
"/videos.atom",
|
||||||
# "/videos.json",
|
# "/videos.json",
|
||||||
|
|
|
@ -1,29 +1,75 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import feedparser
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import feedparser
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import sqlitehandler
|
import sqlitehandler
|
||||||
import confighandler
|
import confighandler
|
||||||
|
import datetimehandler
|
||||||
|
import filterhandler
|
||||||
|
|
||||||
from http.client import IncompleteRead
|
|
||||||
from asyncio.exceptions import IncompleteReadError
|
from asyncio.exceptions import IncompleteReadError
|
||||||
|
from http.client import IncompleteRead
|
||||||
from urllib import error
|
from urllib import error
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
# from xml.etree.ElementTree import ElementTree, ParseError
|
# from xml.etree.ElementTree import ElementTree, ParseError
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urljoin
|
||||||
|
from urllib.parse import urlsplit
|
||||||
|
from urllib.parse import urlunsplit
|
||||||
from lxml import html
|
from lxml import html
|
||||||
|
|
||||||
async def download_updates(db_file):
|
|
||||||
|
# NOTE Perhaps this needs to be executed
|
||||||
|
# just once per program execution
|
||||||
|
async def initdb(jid, callback, message=None):
|
||||||
|
"""
|
||||||
|
Callback function to instantiate action on database.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
jid : str
|
||||||
|
Jabber ID.
|
||||||
|
callback : ?
|
||||||
|
Function name.
|
||||||
|
message : str, optional
|
||||||
|
Optional kwarg when a message is a part or
|
||||||
|
required argument. The default is None.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
object
|
||||||
|
Coroutine object.
|
||||||
|
"""
|
||||||
|
db_dir = confighandler.get_default_dbdir()
|
||||||
|
if not os.path.isdir(db_dir):
|
||||||
|
os.mkdir(db_dir)
|
||||||
|
db_file = os.path.join(db_dir, r"{}.db".format(jid))
|
||||||
|
sqlitehandler.create_tables(db_file)
|
||||||
|
# await sqlitehandler.set_default_values(db_file)
|
||||||
|
if message:
|
||||||
|
return await callback(db_file, message)
|
||||||
|
else:
|
||||||
|
return await callback(db_file)
|
||||||
|
|
||||||
|
|
||||||
|
async def download_updates(db_file, url=None):
|
||||||
"""
|
"""
|
||||||
Check feeds for new entries.
|
Check feeds for new entries.
|
||||||
|
|
||||||
:param db_file: Database filename.
|
Parameters
|
||||||
|
----------
|
||||||
|
db_file : str
|
||||||
|
Path to database file.
|
||||||
|
url : str, optional
|
||||||
|
URL. The default is None.
|
||||||
"""
|
"""
|
||||||
urls = await sqlitehandler.get_subscriptions(db_file)
|
if url:
|
||||||
|
urls = [url] # Valid [url] and [url,] and (url,)
|
||||||
|
else:
|
||||||
|
urls = await sqlitehandler.get_feeds_url(db_file)
|
||||||
for url in urls:
|
for url in urls:
|
||||||
# print(os.path.basename(db_file), url[0])
|
# print(os.path.basename(db_file), url[0])
|
||||||
source = url[0]
|
source = url[0]
|
||||||
|
@ -34,31 +80,42 @@ async def download_updates(db_file):
|
||||||
# urls.next()
|
# urls.next()
|
||||||
# next(urls)
|
# next(urls)
|
||||||
continue
|
continue
|
||||||
|
await sqlitehandler.update_source_status(
|
||||||
await sqlitehandler.update_source_status(db_file, res[1], source)
|
db_file,
|
||||||
|
res[1],
|
||||||
|
source
|
||||||
|
)
|
||||||
if res[0]:
|
if res[0]:
|
||||||
try:
|
try:
|
||||||
feed = feedparser.parse(res[0])
|
feed = feedparser.parse(res[0])
|
||||||
if feed.bozo:
|
if feed.bozo:
|
||||||
# bozo = ("WARNING: Bozo detected for feed <{}>. "
|
bozo = (
|
||||||
# "For more information, visit "
|
"WARNING: Bozo detected for feed: {}\n"
|
||||||
# "https://pythonhosted.org/feedparser/bozo.html"
|
"For more information, visit "
|
||||||
# .format(source))
|
"https://pythonhosted.org/feedparser/bozo.html"
|
||||||
# print(bozo)
|
).format(source)
|
||||||
|
print(bozo)
|
||||||
valid = 0
|
valid = 0
|
||||||
else:
|
else:
|
||||||
valid = 1
|
valid = 1
|
||||||
await sqlitehandler.update_source_validity(db_file, source, valid)
|
await sqlitehandler.update_source_validity(
|
||||||
except (IncompleteReadError, IncompleteRead, error.URLError) as e:
|
db_file,
|
||||||
print(e)
|
source,
|
||||||
|
valid)
|
||||||
|
except (
|
||||||
|
IncompleteReadError,
|
||||||
|
IncompleteRead,
|
||||||
|
error.URLError
|
||||||
|
) as e:
|
||||||
|
# print(e)
|
||||||
|
# TODO Print error to log
|
||||||
|
None
|
||||||
# NOTE I don't think there should be "return"
|
# NOTE I don't think there should be "return"
|
||||||
# because then we might stop scanning next URLs
|
# because then we might stop scanning next URLs
|
||||||
# return
|
# return
|
||||||
# TODO Place these couple of lines back down
|
# TODO Place these couple of lines back down
|
||||||
# NOTE Need to correct the SQL statement to do so
|
# NOTE Need to correct the SQL statement to do so
|
||||||
# NOT SURE WHETHER I MEANT THE LINES ABOVE OR BELOW
|
# NOT SURE WHETHER I MEANT THE LINES ABOVE OR BELOW
|
||||||
|
|
||||||
if res[1] == 200:
|
if res[1] == 200:
|
||||||
# NOT SURE WHETHER I MEANT THE LINES ABOVE OR BELOW
|
# NOT SURE WHETHER I MEANT THE LINES ABOVE OR BELOW
|
||||||
# TODO Place these couple of lines back down
|
# TODO Place these couple of lines back down
|
||||||
|
@ -66,25 +123,60 @@ async def download_updates(db_file):
|
||||||
entries = feed.entries
|
entries = feed.entries
|
||||||
# length = len(entries)
|
# length = len(entries)
|
||||||
# await sqlitehandler.remove_entry(db_file, source, length)
|
# await sqlitehandler.remove_entry(db_file, source, length)
|
||||||
await sqlitehandler.remove_nonexistent_entries(db_file, feed, source)
|
await sqlitehandler.remove_nonexistent_entries(
|
||||||
|
db_file,
|
||||||
new_entry = 0
|
feed,
|
||||||
|
source
|
||||||
|
)
|
||||||
|
# new_entry = 0
|
||||||
for entry in entries:
|
for entry in entries:
|
||||||
|
if entry.has_key("id"):
|
||||||
|
eid = entry.id
|
||||||
if entry.has_key("title"):
|
if entry.has_key("title"):
|
||||||
title = entry.title
|
title = entry.title
|
||||||
else:
|
else:
|
||||||
title = feed["feed"]["title"]
|
title = feed["feed"]["title"]
|
||||||
|
|
||||||
if entry.has_key("link"):
|
if entry.has_key("link"):
|
||||||
link = entry.link
|
# link = complete_url(source, entry.link)
|
||||||
|
link = await join_url(source, entry.link)
|
||||||
|
link = await trim_url(link)
|
||||||
else:
|
else:
|
||||||
link = source
|
link = source
|
||||||
|
# TODO Pass date too for comparion check
|
||||||
exist = await sqlitehandler.check_entry_exist(db_file, title, link)
|
if entry.has_key("published"):
|
||||||
|
date = entry.published
|
||||||
|
date = await datetimehandler.rfc2822_to_iso8601(date)
|
||||||
|
else:
|
||||||
|
date = None
|
||||||
|
exist = await sqlitehandler.check_entry_exist(
|
||||||
|
db_file,
|
||||||
|
source,
|
||||||
|
eid=eid,
|
||||||
|
title=title,
|
||||||
|
link=link,
|
||||||
|
date=date
|
||||||
|
)
|
||||||
if not exist:
|
if not exist:
|
||||||
new_entry = new_entry + 1
|
# new_entry = new_entry + 1
|
||||||
|
if entry.has_key("published"):
|
||||||
|
date = entry.published
|
||||||
|
date = await datetimehandler.rfc2822_to_iso8601(date)
|
||||||
|
# try:
|
||||||
|
# date = datetime.strptime(date, "%a, %d %b %Y %H:%M:%S %z")
|
||||||
|
# except:
|
||||||
|
# date = datetime.strptime(date, '%a, %d %b %Y %H:%M:%S %Z')
|
||||||
|
# finally:
|
||||||
|
# date = date.isoformat()
|
||||||
|
# if parsedate(date): # Is RFC 2822 format
|
||||||
|
# date = parsedate_to_datetime(date) # Process timestamp
|
||||||
|
# date = date.isoformat() # Convert to ISO 8601
|
||||||
|
else:
|
||||||
|
# TODO Just set date = "*** No date ***"
|
||||||
|
# date = datetime.now().isoformat()
|
||||||
|
date = await datetimehandler.now()
|
||||||
|
# NOTE Would seconds result in better database performance
|
||||||
|
# date = datetime.datetime(date)
|
||||||
|
# date = (date-datetime.datetime(1970,1,1)).total_seconds()
|
||||||
# TODO Enhance summary
|
# TODO Enhance summary
|
||||||
if entry.has_key("summary"):
|
if entry.has_key("summary"):
|
||||||
summary = entry.summary
|
summary = entry.summary
|
||||||
|
@ -93,164 +185,156 @@ async def download_updates(db_file):
|
||||||
# TODO Limit text length
|
# TODO Limit text length
|
||||||
summary = summary.replace("\n\n", "\n")[:300] + " ⃨"
|
summary = summary.replace("\n\n", "\n")[:300] + " ⃨"
|
||||||
else:
|
else:
|
||||||
summary = '*** No summary ***'
|
summary = "*** No summary ***"
|
||||||
entry = (title, summary, link, source, 0);
|
read_status = 0
|
||||||
await sqlitehandler.add_entry_and_set_date(db_file, source, entry)
|
pathname = urlsplit(link).path
|
||||||
|
string = (
|
||||||
|
"{} {} {}"
|
||||||
|
).format(
|
||||||
|
title,
|
||||||
|
summary,
|
||||||
|
pathname
|
||||||
|
)
|
||||||
|
allow_list = await filterhandler.is_listed(
|
||||||
|
db_file,
|
||||||
|
"allow",
|
||||||
|
string
|
||||||
|
)
|
||||||
|
if not allow_list:
|
||||||
|
reject_list = await filterhandler.is_listed(
|
||||||
|
db_file,
|
||||||
|
"deny",
|
||||||
|
string
|
||||||
|
)
|
||||||
|
if reject_list:
|
||||||
|
print(">>> REJECTED", title)
|
||||||
|
summary = "REJECTED"
|
||||||
|
# summary = ""
|
||||||
|
read_status = 1
|
||||||
|
entry = (
|
||||||
|
title,
|
||||||
|
summary,
|
||||||
|
link,
|
||||||
|
eid,
|
||||||
|
source,
|
||||||
|
date,
|
||||||
|
read_status
|
||||||
|
)
|
||||||
|
await sqlitehandler.add_entry_and_set_date(
|
||||||
|
db_file,
|
||||||
|
source,
|
||||||
|
entry
|
||||||
|
)
|
||||||
|
# print(await datetimehandler.current_time(), entry, title)
|
||||||
|
# else:
|
||||||
|
# print(await datetimehandler.current_time(), exist, title)
|
||||||
|
|
||||||
|
|
||||||
|
async def add_feed_no_check(db_file, data):
|
||||||
|
"""
|
||||||
|
Add given feed without validity check.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
db_file : str
|
||||||
|
Path to database file.
|
||||||
|
data : str
|
||||||
|
URL or URL and Title.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
msg : str
|
||||||
|
Status message.
|
||||||
|
"""
|
||||||
|
url = data[0]
|
||||||
|
title = data[1]
|
||||||
|
url = await trim_url(url)
|
||||||
|
exist = await sqlitehandler.check_feed_exist(db_file, url)
|
||||||
|
if not exist:
|
||||||
|
msg = await sqlitehandler.add_feed(db_file, url, title)
|
||||||
|
await download_updates(db_file, [url])
|
||||||
|
else:
|
||||||
|
ix = exist[0]
|
||||||
|
name = exist[1]
|
||||||
|
msg = (
|
||||||
|
"> {}\nNews source \"{}\" is already "
|
||||||
|
"listed in the subscription list at "
|
||||||
|
"index {}".format(url, name, ix)
|
||||||
|
)
|
||||||
|
return msg
|
||||||
|
|
||||||
|
|
||||||
async def add_feed(db_file, url):
|
async def add_feed(db_file, url):
|
||||||
"""
|
"""
|
||||||
Check whether feed exist, otherwise process it.
|
Check whether feed exist, otherwise process it.
|
||||||
|
|
||||||
:param db_file: Database filename.
|
Parameters
|
||||||
:param url: URL.
|
----------
|
||||||
:return: Status message.
|
db_file : str
|
||||||
|
Path to database file.
|
||||||
|
url : str
|
||||||
|
URL.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
msg : str
|
||||||
|
Status message.
|
||||||
"""
|
"""
|
||||||
|
msg = None
|
||||||
|
url = await trim_url(url)
|
||||||
exist = await sqlitehandler.check_feed_exist(db_file, url)
|
exist = await sqlitehandler.check_feed_exist(db_file, url)
|
||||||
|
|
||||||
if not exist:
|
if not exist:
|
||||||
res = await download_feed(url)
|
res = await download_feed(url)
|
||||||
if res[0]:
|
if res[0]:
|
||||||
feed = feedparser.parse(res[0])
|
feed = feedparser.parse(res[0])
|
||||||
title = await get_title(url, feed)
|
title = await get_title(url, feed)
|
||||||
if feed.bozo:
|
if feed.bozo:
|
||||||
bozo = ("WARNING: Bozo detected. Failed to load <{}>.".format(url))
|
bozo = (
|
||||||
|
"Bozo detected. Failed to load: {}."
|
||||||
|
).format(url)
|
||||||
print(bozo)
|
print(bozo)
|
||||||
try:
|
try:
|
||||||
# tree = etree.fromstring(res[0]) # etree is for xml
|
# tree = etree.fromstring(res[0]) # etree is for xml
|
||||||
tree = html.fromstring(res[0])
|
tree = html.fromstring(res[0])
|
||||||
except:
|
except:
|
||||||
return "Failed to parse URL <{}> as feed".format(url)
|
msg = (
|
||||||
|
"> {}\nFailed to parse URL as feed."
|
||||||
print("RSS Auto-Discovery Engaged")
|
).format(url)
|
||||||
xpath_query = """//link[(@rel="alternate") and (@type="application/atom+xml" or @type="application/rdf+xml" or @type="application/rss+xml")]"""
|
if not msg:
|
||||||
# xpath_query = """//link[(@rel="alternate") and (@type="application/atom+xml" or @type="application/rdf+xml" or @type="application/rss+xml")]/@href"""
|
print("RSS Auto-Discovery Engaged")
|
||||||
# xpath_query = "//link[@rel='alternate' and @type='application/atom+xml' or @rel='alternate' and @type='application/rss+xml' or @rel='alternate' and @type='application/rdf+xml']/@href"
|
msg = await feed_mode_auto_discovery(db_file, url, tree)
|
||||||
feeds = tree.xpath(xpath_query)
|
if not msg:
|
||||||
if len(feeds) > 1:
|
print("RSS Scan Mode Engaged")
|
||||||
msg = "RSS Auto-Discovery has found {} feeds:\n\n".format(len(feeds))
|
msg = await feed_mode_scan(db_file, url, tree)
|
||||||
for feed in feeds:
|
if not msg:
|
||||||
# # The following code works;
|
print("RSS Arbitrary Mode Engaged")
|
||||||
# # The following code will catch
|
msg = await feed_mode_request(db_file, url, tree)
|
||||||
# # only valid resources (i.e. not 404);
|
if not msg:
|
||||||
# # The following code requires more bandwidth.
|
msg = (
|
||||||
# res = await download_feed(feed)
|
"> {}\nNo news feeds were found for URL."
|
||||||
# if res[0]:
|
).format(url)
|
||||||
# disco = feedparser.parse(res[0])
|
|
||||||
# title = disco["feed"]["title"]
|
|
||||||
# msg += "{} \n {} \n\n".format(title, feed)
|
|
||||||
feed_name = feed.xpath('@title')[0]
|
|
||||||
feed_addr = feed.xpath('@href')[0]
|
|
||||||
msg += "{}\n{}\n\n".format(feed_name, feed_addr)
|
|
||||||
msg += "The above feeds were extracted from\n{}".format(url)
|
|
||||||
return msg
|
|
||||||
elif feeds:
|
|
||||||
url = feeds[0].xpath('@href')[0]
|
|
||||||
# Why wouldn't add_feed return a message
|
|
||||||
# upon success unless return is explicitly
|
|
||||||
# mentioned, yet upon failure it wouldn't?
|
|
||||||
return await add_feed(db_file, url)
|
|
||||||
|
|
||||||
print("RSS Scan Mode Engaged")
|
|
||||||
feeds = {}
|
|
||||||
paths = []
|
|
||||||
# TODO Test
|
|
||||||
cfg_dir = confighandler.get_default_confdir()
|
|
||||||
if not os.path.isdir(cfg_dir):
|
|
||||||
os.mkdir(cfg_dir)
|
|
||||||
cfg_file = os.path.join(cfg_dir, r"url_paths.txt")
|
|
||||||
if not os.path.isfile(cfg_file):
|
|
||||||
# confighandler.generate_dictionary()
|
|
||||||
list = confighandler.get_default_list()
|
|
||||||
file = open(cfg_file, "w")
|
|
||||||
file.writelines("\n".join(list))
|
|
||||||
file.close()
|
|
||||||
file = open(cfg_file, "r")
|
|
||||||
lines = file.readlines()
|
|
||||||
for line in lines:
|
|
||||||
paths.extend([line.strip()])
|
|
||||||
for path in paths:
|
|
||||||
# xpath_query = "//*[@*[contains(.,'{}')]]".format(path)
|
|
||||||
xpath_query = "//a[contains(@href,'{}')]".format(path)
|
|
||||||
addresses = tree.xpath(xpath_query)
|
|
||||||
parted_url = urlparse(url)
|
|
||||||
# NOTE Should number of addresses be limited or
|
|
||||||
# perhaps be N from the start and N from the end
|
|
||||||
for address in addresses:
|
|
||||||
address = address.xpath('@href')[0]
|
|
||||||
if address.startswith('/'):
|
|
||||||
address = parted_url.scheme + '://' + parted_url.netloc + address
|
|
||||||
res = await download_feed(address)
|
|
||||||
if res[1] == 200:
|
|
||||||
try:
|
|
||||||
feeds[address] = feedparser.parse(res[0])["feed"]["title"]
|
|
||||||
except:
|
|
||||||
continue
|
|
||||||
if len(feeds) > 1:
|
|
||||||
msg = "RSS URL scan has found {} feeds:\n\n".format(len(feeds))
|
|
||||||
for feed in feeds:
|
|
||||||
# try:
|
|
||||||
# res = await download_feed(feed)
|
|
||||||
# except:
|
|
||||||
# continue
|
|
||||||
feed_name = feeds[feed]
|
|
||||||
feed_addr = feed
|
|
||||||
msg += "{}\n{}\n\n".format(feed_name, feed_addr)
|
|
||||||
msg += "The above feeds were extracted from\n{}".format(url)
|
|
||||||
return msg
|
|
||||||
elif feeds:
|
|
||||||
url = list(feeds)[0]
|
|
||||||
return await add_feed(db_file, url)
|
|
||||||
|
|
||||||
# (HTTP) Request(s) Paths
|
|
||||||
print("RSS Arbitrary Mode Engaged")
|
|
||||||
feeds = {}
|
|
||||||
parted_url = urlparse(url)
|
|
||||||
for path in paths:
|
|
||||||
address = parted_url.scheme + '://' + parted_url.netloc + path
|
|
||||||
res = await download_feed(address)
|
|
||||||
if res[1] == 200:
|
|
||||||
# print(feedparser.parse(res[0])["feed"]["title"])
|
|
||||||
# feeds[address] = feedparser.parse(res[0])["feed"]["title"]
|
|
||||||
try:
|
|
||||||
title = feedparser.parse(res[0])["feed"]["title"]
|
|
||||||
except:
|
|
||||||
title = '*** No Title ***'
|
|
||||||
feeds[address] = title
|
|
||||||
|
|
||||||
# Check whether URL has path (i.e. not root)
|
|
||||||
if parted_url.path.split('/')[1]:
|
|
||||||
paths.extend([".atom", ".feed", ".rdf", ".rss"]) if '.rss' not in paths else -1
|
|
||||||
# if paths.index('.rss'):
|
|
||||||
# paths.extend([".atom", ".feed", ".rdf", ".rss"])
|
|
||||||
address = parted_url.scheme + '://' + parted_url.netloc + '/' + parted_url.path.split('/')[1] + path
|
|
||||||
res = await download_feed(address)
|
|
||||||
if res[1] == 200:
|
|
||||||
try:
|
|
||||||
title = feedparser.parse(res[0])["feed"]["title"]
|
|
||||||
except:
|
|
||||||
title = '*** No Title ***'
|
|
||||||
feeds[address] = title
|
|
||||||
if len(feeds) > 1:
|
|
||||||
msg = "RSS URL discovery has found {} feeds:\n\n".format(len(feeds))
|
|
||||||
for feed in feeds:
|
|
||||||
feed_name = feeds[feed]
|
|
||||||
feed_addr = feed
|
|
||||||
msg += "{}\n{}\n\n".format(feed_name, feed_addr)
|
|
||||||
msg += "The above feeds were extracted from\n{}".format(url)
|
|
||||||
elif feeds:
|
|
||||||
url = list(feeds)[0]
|
|
||||||
msg = await add_feed(db_file, url)
|
|
||||||
else:
|
|
||||||
msg = "No news feeds were found for URL <{}>.".format(url)
|
|
||||||
else:
|
else:
|
||||||
msg = await sqlitehandler.add_feed(db_file, title, url, res)
|
status = res[1]
|
||||||
|
msg = await sqlitehandler.add_feed(
|
||||||
|
db_file,
|
||||||
|
url,
|
||||||
|
title,
|
||||||
|
status
|
||||||
|
)
|
||||||
|
await download_updates(db_file, [url])
|
||||||
else:
|
else:
|
||||||
msg = "Failed to get URL <{}>. Reason: {}".format(url, res[1])
|
status = res[1]
|
||||||
|
msg = (
|
||||||
|
"> {}\nFailed to get URL. Reason: {}"
|
||||||
|
).format(url, status)
|
||||||
else:
|
else:
|
||||||
ix = exist[0]
|
ix = exist[0]
|
||||||
name = exist[1]
|
name = exist[1]
|
||||||
msg = "> {}\nNews source \"{}\" is already listed in the subscription list at index {}".format(url, name, ix)
|
msg = (
|
||||||
|
"> {}\nNews source \"{}\" is already "
|
||||||
|
"listed in the subscription list at "
|
||||||
|
"index {}".format(url, name, ix)
|
||||||
|
)
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
|
|
||||||
|
@ -258,8 +342,15 @@ async def download_feed(url):
|
||||||
"""
|
"""
|
||||||
Download content of given URL.
|
Download content of given URL.
|
||||||
|
|
||||||
:param url: URL.
|
Parameters
|
||||||
:return: Document or error message.
|
----------
|
||||||
|
url : str
|
||||||
|
URL.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
msg: list or str
|
||||||
|
Document or error message.
|
||||||
"""
|
"""
|
||||||
timeout = aiohttp.ClientTimeout(total=10)
|
timeout = aiohttp.ClientTimeout(total=10)
|
||||||
async with aiohttp.ClientSession() as session:
|
async with aiohttp.ClientSession() as session:
|
||||||
|
@ -271,30 +362,438 @@ async def download_feed(url):
|
||||||
try:
|
try:
|
||||||
doc = await response.text()
|
doc = await response.text()
|
||||||
# print (response.content_type)
|
# print (response.content_type)
|
||||||
return [doc, status]
|
msg = [
|
||||||
|
doc,
|
||||||
|
status
|
||||||
|
]
|
||||||
except:
|
except:
|
||||||
# return [False, "The content of this document doesn't appear to be textual."]
|
# msg = [
|
||||||
return [False, "Document is too large or is not textual."]
|
# False,
|
||||||
|
# ("The content of this document "
|
||||||
|
# "doesn't appear to be textual."
|
||||||
|
# )
|
||||||
|
# ]
|
||||||
|
msg = [
|
||||||
|
False,
|
||||||
|
"Document is too large or is not textual."
|
||||||
|
]
|
||||||
else:
|
else:
|
||||||
return [False, "HTTP Error: " + str(status)]
|
msg = [
|
||||||
|
False,
|
||||||
|
"HTTP Error: " + str(status)
|
||||||
|
]
|
||||||
except aiohttp.ClientError as e:
|
except aiohttp.ClientError as e:
|
||||||
print('Error', str(e))
|
# print('Error', str(e))
|
||||||
return [False, "Error: " + str(e)]
|
msg = [
|
||||||
|
False,
|
||||||
|
"Error: " + str(e)
|
||||||
|
]
|
||||||
except asyncio.TimeoutError as e:
|
except asyncio.TimeoutError as e:
|
||||||
# print('Timeout:', str(e))
|
# print('Timeout:', str(e))
|
||||||
return [False, "Timeout: " + str(e)]
|
msg = [
|
||||||
|
False,
|
||||||
|
"Timeout: " + str(e)
|
||||||
|
]
|
||||||
|
return msg
|
||||||
|
|
||||||
|
|
||||||
async def get_title(url, feed):
|
async def get_title(url, feed):
|
||||||
"""
|
"""
|
||||||
Get title of feed.
|
Get title of feed.
|
||||||
|
|
||||||
:param url: URL
|
Parameters
|
||||||
:param feed: Parsed feed
|
----------
|
||||||
:return: Title or URL hostname.
|
url : str
|
||||||
|
URL.
|
||||||
|
feed : dict
|
||||||
|
Parsed feed document.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
title : str
|
||||||
|
Title or URL hostname.
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
title = feed["feed"]["title"]
|
title = feed["feed"]["title"]
|
||||||
except:
|
except:
|
||||||
title = urlparse(url).netloc
|
title = urlsplit(url).netloc
|
||||||
return title
|
return title
|
||||||
|
|
||||||
|
|
||||||
|
# NOTE Read the documentation
|
||||||
|
# https://docs.python.org/3/library/urllib.parse.html#urllib.parse.urljoin
|
||||||
|
def complete_url(source, link):
|
||||||
|
"""
|
||||||
|
Check if URL is pathname and complete it into URL.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
source : str
|
||||||
|
Feed URL.
|
||||||
|
link : str
|
||||||
|
Link URL or pathname.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
str
|
||||||
|
URL.
|
||||||
|
"""
|
||||||
|
if link.startswith("www."):
|
||||||
|
return "http://" + link
|
||||||
|
parted_link = urlsplit(link)
|
||||||
|
parted_feed = urlsplit(source)
|
||||||
|
if parted_link.scheme == "magnet" and parted_link.query:
|
||||||
|
return link
|
||||||
|
if parted_link.scheme and parted_link.netloc:
|
||||||
|
return link
|
||||||
|
if link.startswith("//"):
|
||||||
|
if parted_link.netloc and parted_link.path:
|
||||||
|
new_link = urlunsplit([
|
||||||
|
parted_feed.scheme,
|
||||||
|
parted_link.netloc,
|
||||||
|
parted_link.path,
|
||||||
|
parted_link.query,
|
||||||
|
parted_link.fragment
|
||||||
|
])
|
||||||
|
elif link.startswith("/"):
|
||||||
|
new_link = urlunsplit([
|
||||||
|
parted_feed.scheme,
|
||||||
|
parted_feed.netloc,
|
||||||
|
parted_link.path,
|
||||||
|
parted_link.query,
|
||||||
|
parted_link.fragment
|
||||||
|
])
|
||||||
|
elif link.startswith("../"):
|
||||||
|
pathlink = parted_link.path.split("/")
|
||||||
|
pathfeed = parted_feed.path.split("/")
|
||||||
|
for i in pathlink:
|
||||||
|
if i == "..":
|
||||||
|
if pathlink.index("..") == 0:
|
||||||
|
pathfeed.pop()
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
while pathlink.count(".."):
|
||||||
|
if pathlink.index("..") == 0:
|
||||||
|
pathlink.remove("..")
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
pathlink = "/".join(pathlink)
|
||||||
|
pathfeed.extend([pathlink])
|
||||||
|
new_link = urlunsplit([
|
||||||
|
parted_feed.scheme,
|
||||||
|
parted_feed.netloc,
|
||||||
|
"/".join(pathfeed),
|
||||||
|
parted_link.query,
|
||||||
|
parted_link.fragment
|
||||||
|
])
|
||||||
|
else:
|
||||||
|
pathlink = parted_link.path.split("/")
|
||||||
|
pathfeed = parted_feed.path.split("/")
|
||||||
|
if link.startswith("./"):
|
||||||
|
pathlink.remove(".")
|
||||||
|
if not source.endswith("/"):
|
||||||
|
pathfeed.pop()
|
||||||
|
pathlink = "/".join(pathlink)
|
||||||
|
pathfeed.extend([pathlink])
|
||||||
|
new_link = urlunsplit([
|
||||||
|
parted_feed.scheme,
|
||||||
|
parted_feed.netloc,
|
||||||
|
"/".join(pathfeed),
|
||||||
|
parted_link.query,
|
||||||
|
parted_link.fragment
|
||||||
|
])
|
||||||
|
return new_link
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
TODO
|
||||||
|
Feed https://www.ocaml.org/feed.xml
|
||||||
|
Link %20https://frama-c.com/fc-versions/cobalt.html%20
|
||||||
|
|
||||||
|
FIXME
|
||||||
|
Feed https://cyber.dabamos.de/blog/feed.rss
|
||||||
|
Link https://cyber.dabamos.de/blog/#article-2022-07-15
|
||||||
|
"""
|
||||||
|
async def join_url(source, link):
|
||||||
|
"""
|
||||||
|
Join base URL with given pathname.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
source : str
|
||||||
|
Feed URL.
|
||||||
|
link : str
|
||||||
|
Link URL or pathname.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
str
|
||||||
|
URL.
|
||||||
|
"""
|
||||||
|
if link.startswith("www."):
|
||||||
|
new_link = "http://" + link
|
||||||
|
elif link.startswith("%20") and link.endswith("%20"):
|
||||||
|
old_link = link.split("%20")
|
||||||
|
del old_link[0]
|
||||||
|
old_link.pop()
|
||||||
|
new_link = "".join(old_link)
|
||||||
|
else:
|
||||||
|
new_link = urljoin(source, link)
|
||||||
|
return new_link
|
||||||
|
|
||||||
|
|
||||||
|
async def trim_url(url):
|
||||||
|
"""
|
||||||
|
Check URL pathname for double slash.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
url : str
|
||||||
|
URL.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
url : str
|
||||||
|
URL.
|
||||||
|
"""
|
||||||
|
parted_url = urlsplit(url)
|
||||||
|
protocol = parted_url.scheme
|
||||||
|
hostname = parted_url.netloc
|
||||||
|
pathname = parted_url.path
|
||||||
|
queries = parted_url.query
|
||||||
|
fragment = parted_url.fragment
|
||||||
|
while "//" in pathname:
|
||||||
|
pathname = pathname.replace("//", "/")
|
||||||
|
url = urlunsplit([
|
||||||
|
protocol,
|
||||||
|
hostname,
|
||||||
|
pathname,
|
||||||
|
queries,
|
||||||
|
fragment
|
||||||
|
])
|
||||||
|
return url
|
||||||
|
|
||||||
|
|
||||||
|
# TODO Improve scan by gradual decreasing of path
|
||||||
|
async def feed_mode_request(db_file, url, tree):
|
||||||
|
"""
|
||||||
|
Lookup for feeds by pathname using HTTP Requests.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
db_file : str
|
||||||
|
Path to database file.
|
||||||
|
url : str
|
||||||
|
URL.
|
||||||
|
tree : TYPE
|
||||||
|
DESCRIPTION.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
msg : str
|
||||||
|
Message with URLs.
|
||||||
|
"""
|
||||||
|
feeds = {}
|
||||||
|
parted_url = urlsplit(url)
|
||||||
|
paths = confighandler.get_list()
|
||||||
|
for path in paths:
|
||||||
|
address = urlunsplit([
|
||||||
|
parted_url.scheme,
|
||||||
|
parted_url.netloc,
|
||||||
|
path,
|
||||||
|
None,
|
||||||
|
None
|
||||||
|
])
|
||||||
|
res = await download_feed(address)
|
||||||
|
if res[1] == 200:
|
||||||
|
# print(feedparser.parse(res[0])["feed"]["title"])
|
||||||
|
# feeds[address] = feedparser.parse(res[0])["feed"]["title"]
|
||||||
|
try:
|
||||||
|
title = feedparser.parse(res[0])["feed"]["title"]
|
||||||
|
except:
|
||||||
|
title = '*** No Title ***'
|
||||||
|
feeds[address] = title
|
||||||
|
# Check whether URL has path (i.e. not root)
|
||||||
|
if parted_url.path.split('/')[1]:
|
||||||
|
paths.extend(
|
||||||
|
[".atom", ".feed", ".rdf", ".rss"]
|
||||||
|
) if '.rss' not in paths else -1
|
||||||
|
# if paths.index('.rss'):
|
||||||
|
# paths.extend([".atom", ".feed", ".rdf", ".rss"])
|
||||||
|
address = urlunsplit([
|
||||||
|
parted_url.scheme,
|
||||||
|
parted_url.netloc,
|
||||||
|
parted_url.path.split('/')[1] + path,
|
||||||
|
None,
|
||||||
|
None
|
||||||
|
])
|
||||||
|
res = await download_feed(address)
|
||||||
|
if res[1] == 200:
|
||||||
|
try:
|
||||||
|
title = feedparser.parse(res[0])["feed"]["title"]
|
||||||
|
except:
|
||||||
|
title = '*** No Title ***'
|
||||||
|
feeds[address] = title
|
||||||
|
if len(feeds) > 1:
|
||||||
|
msg = (
|
||||||
|
"RSS URL discovery has found {} feeds:\n```\n"
|
||||||
|
).format(len(feeds))
|
||||||
|
for feed in feeds:
|
||||||
|
feed_name = feeds[feed]
|
||||||
|
feed_addr = feed
|
||||||
|
msg += "{}\n{}\n\n".format(feed_name, feed_addr)
|
||||||
|
msg += (
|
||||||
|
"```\nThe above feeds were extracted from\n{}"
|
||||||
|
).format(url)
|
||||||
|
elif feeds:
|
||||||
|
feed_addr = list(feeds)[0]
|
||||||
|
msg = await add_feed(db_file, feed_addr)
|
||||||
|
return msg
|
||||||
|
|
||||||
|
|
||||||
|
async def feed_mode_scan(db_file, url, tree):
|
||||||
|
"""
|
||||||
|
Scan page for potential feeds by pathname.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
db_file : str
|
||||||
|
Path to database file.
|
||||||
|
url : str
|
||||||
|
URL.
|
||||||
|
tree : TYPE
|
||||||
|
DESCRIPTION.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
msg : str
|
||||||
|
Message with URLs.
|
||||||
|
"""
|
||||||
|
feeds = {}
|
||||||
|
# paths = []
|
||||||
|
# TODO Test
|
||||||
|
paths = confighandler.get_list()
|
||||||
|
for path in paths:
|
||||||
|
# xpath_query = "//*[@*[contains(.,'{}')]]".format(path)
|
||||||
|
xpath_query = "//a[contains(@href,'{}')]".format(path)
|
||||||
|
addresses = tree.xpath(xpath_query)
|
||||||
|
parted_url = urlsplit(url)
|
||||||
|
# NOTE Should number of addresses be limited or
|
||||||
|
# perhaps be N from the start and N from the end
|
||||||
|
for address in addresses:
|
||||||
|
print(address.xpath('@href')[0])
|
||||||
|
print(addresses)
|
||||||
|
address = address.xpath('@href')[0]
|
||||||
|
if "/" not in address:
|
||||||
|
protocol = parted_url.scheme
|
||||||
|
hostname = parted_url.netloc
|
||||||
|
pathname = address
|
||||||
|
address = urlunsplit([
|
||||||
|
protocol,
|
||||||
|
hostname,
|
||||||
|
pathname,
|
||||||
|
None,
|
||||||
|
None
|
||||||
|
])
|
||||||
|
if address.startswith('/'):
|
||||||
|
protocol = parted_url.scheme
|
||||||
|
hostname = parted_url.netloc
|
||||||
|
pathname = address
|
||||||
|
address = urlunsplit([
|
||||||
|
protocol,
|
||||||
|
hostname,
|
||||||
|
pathname,
|
||||||
|
None,
|
||||||
|
None
|
||||||
|
])
|
||||||
|
res = await download_feed(address)
|
||||||
|
if res[1] == 200:
|
||||||
|
try:
|
||||||
|
feeds[address] = feedparser.parse(res[0])["feed"]["title"]
|
||||||
|
print(feeds)
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
if len(feeds) > 1:
|
||||||
|
msg = (
|
||||||
|
"RSS URL scan has found {} feeds:\n```\n"
|
||||||
|
).format(len(feeds))
|
||||||
|
for feed in feeds:
|
||||||
|
# try:
|
||||||
|
# res = await download_feed(feed)
|
||||||
|
# except:
|
||||||
|
# continue
|
||||||
|
feed_name = feeds[feed]
|
||||||
|
feed_addr = feed
|
||||||
|
msg += "{}\n{}\n\n".format(feed_name, feed_addr)
|
||||||
|
msg += (
|
||||||
|
"```\nThe above feeds were extracted from\n{}"
|
||||||
|
).format(url)
|
||||||
|
return msg
|
||||||
|
elif feeds:
|
||||||
|
feed_addr = list(feeds)[0]
|
||||||
|
msg = await add_feed(db_file, feed_addr)
|
||||||
|
return msg
|
||||||
|
|
||||||
|
|
||||||
|
async def feed_mode_auto_discovery(db_file, url, tree):
|
||||||
|
"""
|
||||||
|
Lookup for feeds using RSS autodiscovery technique.
|
||||||
|
|
||||||
|
See: https://www.rssboard.org/rss-autodiscovery
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
db_file : str
|
||||||
|
Path to database file.
|
||||||
|
url : str
|
||||||
|
URL.
|
||||||
|
tree : TYPE
|
||||||
|
DESCRIPTION.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
msg : str
|
||||||
|
Message with URLs.
|
||||||
|
"""
|
||||||
|
xpath_query = (
|
||||||
|
'//link[(@rel="alternate") and '
|
||||||
|
'(@type="application/atom+xml" or '
|
||||||
|
'@type="application/rdf+xml" or '
|
||||||
|
'@type="application/rss+xml")]'
|
||||||
|
)
|
||||||
|
# xpath_query = """//link[(@rel="alternate") and (@type="application/atom+xml" or @type="application/rdf+xml" or @type="application/rss+xml")]/@href"""
|
||||||
|
# xpath_query = "//link[@rel='alternate' and @type='application/atom+xml' or @rel='alternate' and @type='application/rss+xml' or @rel='alternate' and @type='application/rdf+xml']/@href"
|
||||||
|
feeds = tree.xpath(xpath_query)
|
||||||
|
if len(feeds) > 1:
|
||||||
|
msg = (
|
||||||
|
"RSS Auto-Discovery has found {} feeds:\n```\n"
|
||||||
|
).format(len(feeds))
|
||||||
|
for feed in feeds:
|
||||||
|
# # The following code works;
|
||||||
|
# # The following code will catch
|
||||||
|
# # only valid resources (i.e. not 404);
|
||||||
|
# # The following code requires more bandwidth.
|
||||||
|
# res = await download_feed(feed)
|
||||||
|
# if res[0]:
|
||||||
|
# disco = feedparser.parse(res[0])
|
||||||
|
# title = disco["feed"]["title"]
|
||||||
|
# msg += "{} \n {} \n\n".format(title, feed)
|
||||||
|
feed_name = feed.xpath('@title')[0]
|
||||||
|
feed_addr = await join_url(url, feed.xpath('@href')[0])
|
||||||
|
# if feed_addr.startswith("/"):
|
||||||
|
# feed_addr = url + feed_addr
|
||||||
|
msg += "{}\n{}\n\n".format(feed_name, feed_addr)
|
||||||
|
msg += (
|
||||||
|
"```\nThe above feeds were extracted from\n{}"
|
||||||
|
).format(url)
|
||||||
|
return msg
|
||||||
|
elif feeds:
|
||||||
|
feed_addr = await join_url(url, feeds[0].xpath('@href')[0])
|
||||||
|
# if feed_addr.startswith("/"):
|
||||||
|
# feed_addr = url + feed_addr
|
||||||
|
# NOTE Why wouldn't add_feed return a message
|
||||||
|
# upon success unless return is explicitly
|
||||||
|
# mentioned, yet upon failure it wouldn't?
|
||||||
|
# return await add_feed(db_file, feed_addr)
|
||||||
|
msg = await add_feed(db_file, feed_addr)
|
||||||
|
return msg
|
81
slixfeed/datetimehandler.py
Normal file
81
slixfeed/datetimehandler.py
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
https://feedparser.readthedocs.io/en/latest/date-parsing.html
|
||||||
|
"""
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
from dateutil.parser import parse
|
||||||
|
from email.utils import parsedate
|
||||||
|
from email.utils import parsedate_to_datetime
|
||||||
|
|
||||||
|
async def now():
|
||||||
|
"""
|
||||||
|
ISO 8601 Timestamp.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
date : ?
|
||||||
|
ISO 8601 Timestamp.
|
||||||
|
"""
|
||||||
|
date = datetime.now().isoformat()
|
||||||
|
return date
|
||||||
|
|
||||||
|
|
||||||
|
async def current_time():
|
||||||
|
"""
|
||||||
|
Print HH:MM:SS timestamp.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
date : ?
|
||||||
|
HH:MM:SS timestamp.
|
||||||
|
"""
|
||||||
|
now = datetime.now()
|
||||||
|
time = now.strftime("%H:%M:%S")
|
||||||
|
return time
|
||||||
|
|
||||||
|
|
||||||
|
async def validate(date):
|
||||||
|
"""
|
||||||
|
Validate date format.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
date : str
|
||||||
|
Timestamp.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
date : str
|
||||||
|
Timestamp.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
parse(date)
|
||||||
|
except:
|
||||||
|
date = now()
|
||||||
|
return date
|
||||||
|
|
||||||
|
|
||||||
|
async def rfc2822_to_iso8601(date):
|
||||||
|
"""
|
||||||
|
Convert RFC 2822 into ISO 8601.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
date : str
|
||||||
|
RFC 2822 Timestamp.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
date : str
|
||||||
|
ISO 8601 Timestamp.
|
||||||
|
"""
|
||||||
|
if parsedate(date):
|
||||||
|
try:
|
||||||
|
date = parsedate_to_datetime(date)
|
||||||
|
date = date.isoformat()
|
||||||
|
except:
|
||||||
|
date = now()
|
||||||
|
return date
|
105
slixfeed/filterhandler.py
Normal file
105
slixfeed/filterhandler.py
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
1) Website-specific filter (i.e. audiobookbay).
|
||||||
|
|
||||||
|
2) Exclude websites from filtering (e.g. metapedia).
|
||||||
|
|
||||||
|
3) Filter phrases:
|
||||||
|
Refer to sqlitehandler.search_entries for implementation.
|
||||||
|
It is expected to be more complex than function search_entries.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sqlitehandler
|
||||||
|
|
||||||
|
async def set_filter(newwords, keywords):
|
||||||
|
"""
|
||||||
|
Append new keywords to filter.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
newwords : str
|
||||||
|
List of new keywords.
|
||||||
|
keywords : str
|
||||||
|
List of current keywords.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
val : str
|
||||||
|
List of current keywords and new keywords.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
keywords = keywords.split(",")
|
||||||
|
except:
|
||||||
|
keywords = []
|
||||||
|
newwords = newwords.lower().split(",")
|
||||||
|
for word in newwords:
|
||||||
|
word = word.strip()
|
||||||
|
if len(word) and word not in keywords:
|
||||||
|
keywords.extend([word])
|
||||||
|
keywords.sort()
|
||||||
|
val = ",".join(keywords)
|
||||||
|
return val
|
||||||
|
|
||||||
|
async def is_listed(db_file, type, string):
|
||||||
|
# async def reject(db_file, string):
|
||||||
|
# async def is_blacklisted(db_file, string):
|
||||||
|
filter_type = "filter-" + type
|
||||||
|
list = await sqlitehandler.get_settings_value(
|
||||||
|
db_file,
|
||||||
|
filter_type
|
||||||
|
)
|
||||||
|
if list:
|
||||||
|
list = list.split(",")
|
||||||
|
for i in list:
|
||||||
|
if not i or len(i) < 2:
|
||||||
|
continue
|
||||||
|
if i in string.lower():
|
||||||
|
print(">>> ACTIVATE", i)
|
||||||
|
return 1
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
This code was tested at module datahandler
|
||||||
|
|
||||||
|
reject = 0
|
||||||
|
blacklist = await sqlitehandler.get_settings_value(
|
||||||
|
db_file,
|
||||||
|
"filter-deny"
|
||||||
|
)
|
||||||
|
# print(">>> blacklist:")
|
||||||
|
# print(blacklist)
|
||||||
|
# breakpoint()
|
||||||
|
if blacklist:
|
||||||
|
blacklist = blacklist.split(",")
|
||||||
|
# print(">>> blacklist.split")
|
||||||
|
# print(blacklist)
|
||||||
|
# breakpoint()
|
||||||
|
for i in blacklist:
|
||||||
|
# print(">>> length", len(i))
|
||||||
|
# breakpoint()
|
||||||
|
# if len(i):
|
||||||
|
if not i or len(i) < 2:
|
||||||
|
print(">>> continue due to length", len(i))
|
||||||
|
# breakpoint()
|
||||||
|
continue
|
||||||
|
# print(title)
|
||||||
|
# print(">>> blacklisted word:", i)
|
||||||
|
# breakpoint()
|
||||||
|
test = (title + " " + summary + " " + link)
|
||||||
|
if i in test.lower():
|
||||||
|
reject = 1
|
||||||
|
break
|
||||||
|
|
||||||
|
if reject:
|
||||||
|
print("rejected:",title)
|
||||||
|
entry = (title, '', link, source, date, 1);
|
||||||
|
|
||||||
|
"""
|
56
slixfeed/opmlhandler.py
Normal file
56
slixfeed/opmlhandler.py
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
{
|
||||||
|
'bozo': False,
|
||||||
|
'bozo_exception': None,
|
||||||
|
'feeds': [
|
||||||
|
{
|
||||||
|
'url': 'https://kurtmckee.org/tag/listparser/feed',
|
||||||
|
'title': 'listparser blog',
|
||||||
|
'categories': [],
|
||||||
|
'tags': []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'url': 'https://github.com/kurtmckee/listparser/commits/develop.atom',
|
||||||
|
'title': 'listparser changelog',
|
||||||
|
'categories': [],
|
||||||
|
'tags': []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'lists': [],
|
||||||
|
'opportunities': [],
|
||||||
|
'meta': {
|
||||||
|
'title': 'listparser project feeds',
|
||||||
|
'author': {
|
||||||
|
'name': 'Kurt McKee',
|
||||||
|
'email': 'contactme@kurtmckee.org',
|
||||||
|
'url': 'https://kurtmckee.org/'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'version': 'opml2'
|
||||||
|
}
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
import listparser
|
||||||
|
import lxml
|
||||||
|
|
||||||
|
import sqlitehandler
|
||||||
|
import datahandler
|
||||||
|
|
||||||
|
async def import_opml(db_file, opml_doc):
|
||||||
|
feeds = listparser.parse(opml_doc)['feeds']
|
||||||
|
for feed in feeds:
|
||||||
|
url = feed['url']
|
||||||
|
title = feed['title']
|
||||||
|
# categories = feed['categories']
|
||||||
|
# tags = feed['tags']
|
||||||
|
await datahandler.add_feed_no_check(db_file, [url, title])
|
||||||
|
|
||||||
|
|
||||||
|
# NOTE Use OPyML or LXML
|
||||||
|
async def export_opml():
|
||||||
|
result = await sqlitehandler.get_feeds()
|
File diff suppressed because it is too large
Load diff
|
@ -1,38 +1,56 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from datetime import datetime
|
"""
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
1) Deprecate "add" (see above) and make it interactive.
|
||||||
|
Slixfeed: Do you still want to add this URL to subscription list?
|
||||||
|
See: case _ if message_lowercase.startswith("add"):
|
||||||
|
|
||||||
|
2) Use loop (with gather) instead of TaskGroup
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import os
|
import os
|
||||||
import slixmpp
|
import slixmpp
|
||||||
|
|
||||||
|
from slixmpp.plugins.xep_0363.http_upload import FileTooBig, HTTPError, UploadServiceNotFound
|
||||||
|
|
||||||
import confighandler
|
import confighandler
|
||||||
import datahandler
|
import datahandler
|
||||||
|
import datetimehandler
|
||||||
|
import filterhandler
|
||||||
import sqlitehandler
|
import sqlitehandler
|
||||||
|
|
||||||
|
main_task = []
|
||||||
jid_tasker = {}
|
jid_tasker = {}
|
||||||
task_manager = {}
|
task_manager = {}
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
# asyncio.set_event_loop(loop)
|
||||||
|
|
||||||
time_now = datetime.now()
|
# time_now = datetime.now()
|
||||||
# time_now = time_now.strftime("%H:%M:%S")
|
# time_now = time_now.strftime("%H:%M:%S")
|
||||||
|
|
||||||
def print_time():
|
# def print_time():
|
||||||
# return datetime.now().strftime("%H:%M:%S")
|
# # return datetime.now().strftime("%H:%M:%S")
|
||||||
now = datetime.now()
|
# now = datetime.now()
|
||||||
current_time = now.strftime("%H:%M:%S")
|
# current_time = now.strftime("%H:%M:%S")
|
||||||
return current_time
|
# return current_time
|
||||||
|
|
||||||
|
|
||||||
|
async def handle_event():
|
||||||
|
print("Event handled!")
|
||||||
|
|
||||||
|
|
||||||
class Slixfeed(slixmpp.ClientXMPP):
|
class Slixfeed(slixmpp.ClientXMPP):
|
||||||
"""
|
"""
|
||||||
Slixmpp news bot that will send updates
|
Slixmpp
|
||||||
from feeds it receives.
|
-------
|
||||||
|
News bot that sends updates from RSS feeds.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
print("slixmpp.ClientXMPP")
|
|
||||||
print(repr(slixmpp.ClientXMPP))
|
|
||||||
|
|
||||||
def __init__(self, jid, password):
|
def __init__(self, jid, password):
|
||||||
slixmpp.ClientXMPP.__init__(self, jid, password)
|
slixmpp.ClientXMPP.__init__(self, jid, password)
|
||||||
|
|
||||||
|
@ -52,7 +70,7 @@ class Slixfeed(slixmpp.ClientXMPP):
|
||||||
self.add_event_handler("message", self.message)
|
self.add_event_handler("message", self.message)
|
||||||
self.add_event_handler("disconnected", self.reconnect)
|
self.add_event_handler("disconnected", self.reconnect)
|
||||||
# Initialize event loop
|
# Initialize event loop
|
||||||
self.loop = asyncio.get_event_loop()
|
# self.loop = asyncio.get_event_loop()
|
||||||
|
|
||||||
|
|
||||||
async def start(self, event):
|
async def start(self, event):
|
||||||
|
@ -70,116 +88,316 @@ class Slixfeed(slixmpp.ClientXMPP):
|
||||||
"""
|
"""
|
||||||
self.send_presence()
|
self.send_presence()
|
||||||
await self.get_roster()
|
await self.get_roster()
|
||||||
await self.select_file()
|
|
||||||
|
|
||||||
self.send_presence(
|
# for task in main_task:
|
||||||
pshow="away",
|
# task.cancel()
|
||||||
pstatus="Slixmpp has been restarted.",
|
if not main_task:
|
||||||
pto="sch@pimux.de"
|
await self.select_file()
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
async def message(self, msg):
|
async def message(self, msg):
|
||||||
"""
|
"""
|
||||||
Process incoming message stanzas. Be aware that this also
|
Process incoming message stanzas. Be aware that this also
|
||||||
includes MUC messages and error messages. It is usually
|
includes MUC messages and error messages. It is usually
|
||||||
a good idea to check the messages's type before processing
|
a good practice to check the messages's type before
|
||||||
or sending replies.
|
processing or sending replies.
|
||||||
|
|
||||||
Arguments:
|
Parameters
|
||||||
msg -- The received message stanza. See the documentation
|
----------
|
||||||
for stanza objects and the Message stanza to see
|
self : ?
|
||||||
how it may be used.
|
Self.
|
||||||
|
msg : str
|
||||||
|
The received message stanza. See the documentation
|
||||||
|
for stanza objects and the Message stanza to see
|
||||||
|
how it may be used.
|
||||||
"""
|
"""
|
||||||
if msg["type"] in ("chat", "normal"):
|
if msg["type"] in ("chat", "normal"):
|
||||||
action = 0
|
action = 0
|
||||||
jid = msg["from"].bare
|
jid = msg["from"].bare
|
||||||
|
|
||||||
|
db_dir = confighandler.get_default_dbdir()
|
||||||
|
os.chdir(db_dir)
|
||||||
|
if jid + ".db" not in os.listdir():
|
||||||
|
await self.task_jid(jid)
|
||||||
|
|
||||||
message = " ".join(msg["body"].split())
|
message = " ".join(msg["body"].split())
|
||||||
message = message.lower()
|
message_lowercase = message.lower()
|
||||||
if message.startswith("help"):
|
|
||||||
action = print_help()
|
print(await datetimehandler.current_time(), "ACCOUNT: " + str(msg["from"]))
|
||||||
# NOTE: Might not need it
|
print(await datetimehandler.current_time(), "COMMAND:", message)
|
||||||
# elif message.startswith("add "):
|
|
||||||
# url = message[4:]
|
match message_lowercase:
|
||||||
elif message.startswith("http"):
|
case "help":
|
||||||
url = message
|
action = print_help()
|
||||||
action = await initdb(jid, datahandler.add_feed, url)
|
case _ if message_lowercase in ["greetings", "hello", "hey"]:
|
||||||
# action = "> " + message + "\n" + action
|
action = (
|
||||||
elif message.startswith("quantum "):
|
"Greeting! I'm Slixfeed The News Bot!"
|
||||||
key = message[:7]
|
"\n"
|
||||||
val = message[8:]
|
"Send a URL of a news website to start."
|
||||||
# action = "Every update will contain {} news items.".format(action)
|
)
|
||||||
action = await initdb(jid, sqlitehandler.set_settings_value, [key, val])
|
case _ if message_lowercase.startswith("add"):
|
||||||
await self.refresh_task(jid, key, val)
|
message = message[4:]
|
||||||
elif message.startswith("interval "):
|
url = message.split(" ")[0]
|
||||||
key = message[:8]
|
title = " ".join(message.split(" ")[1:])
|
||||||
val = message[9:]
|
if url.startswith("http"):
|
||||||
# action = "Updates will be sent every {} minutes.".format(action)
|
action = await datahandler.initdb(
|
||||||
action = await initdb(jid, sqlitehandler.set_settings_value, [key, val])
|
jid,
|
||||||
await self.refresh_task(jid, key, val)
|
datahandler.add_feed_no_check,
|
||||||
elif message.startswith("list"):
|
[url, title]
|
||||||
action = await initdb(jid, sqlitehandler.list_subscriptions)
|
)
|
||||||
elif message.startswith("recent "):
|
await self.send_status(jid)
|
||||||
num = message[7:]
|
else:
|
||||||
action = await initdb(jid, sqlitehandler.last_entries, num)
|
action = "Missing URL."
|
||||||
elif message.startswith("remove "):
|
case _ if message_lowercase.startswith("allow"):
|
||||||
ix = message[7:]
|
key = "filter-" + message[:5]
|
||||||
action = await initdb(jid, sqlitehandler.remove_feed, ix)
|
val = message[6:]
|
||||||
elif message.startswith("search "):
|
if val:
|
||||||
query = message[7:]
|
keywords = await datahandler.initdb(
|
||||||
action = await initdb(jid, sqlitehandler.search_entries, query)
|
jid,
|
||||||
elif message.startswith("start"):
|
sqlitehandler.get_settings_value,
|
||||||
# action = "Updates are enabled."
|
key
|
||||||
key = "enabled"
|
)
|
||||||
val = 1
|
val = await filterhandler.set_filter(
|
||||||
actiona = await initdb(jid, sqlitehandler.set_settings_value, [key, val])
|
val,
|
||||||
asyncio.create_task(self.task_jid(jid))
|
keywords
|
||||||
# print(print_time(), "task_manager[jid]")
|
)
|
||||||
# print(task_manager[jid])
|
await datahandler.initdb(
|
||||||
elif message.startswith("stats"):
|
jid,
|
||||||
action = await initdb(jid, sqlitehandler.statistics)
|
sqlitehandler.set_settings_value,
|
||||||
elif message.startswith("status "):
|
[key, val]
|
||||||
ix = message[7:]
|
)
|
||||||
action = await initdb(jid, sqlitehandler.toggle_status, ix)
|
action = (
|
||||||
elif message.startswith("stop"):
|
"Approved keywords\n"
|
||||||
|
"```\n{}\n```"
|
||||||
|
).format(val)
|
||||||
|
else:
|
||||||
|
action = "Missing keywords."
|
||||||
|
case _ if message_lowercase.startswith("deny"):
|
||||||
|
key = "filter-" + message[:4]
|
||||||
|
val = message[5:]
|
||||||
|
if val:
|
||||||
|
keywords = await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.get_settings_value,
|
||||||
|
key
|
||||||
|
)
|
||||||
|
val = await filterhandler.set_filter(
|
||||||
|
val,
|
||||||
|
keywords
|
||||||
|
)
|
||||||
|
await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.set_settings_value,
|
||||||
|
[key, val]
|
||||||
|
)
|
||||||
|
action = (
|
||||||
|
"Rejected keywords\n"
|
||||||
|
"```\n{}\n```"
|
||||||
|
).format(val)
|
||||||
|
else:
|
||||||
|
action = "Missing keywords."
|
||||||
|
case _ if message_lowercase.startswith("http"):
|
||||||
|
url = message
|
||||||
|
action = await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
datahandler.add_feed,
|
||||||
|
url
|
||||||
|
)
|
||||||
|
# action = "> " + message + "\n" + action
|
||||||
|
await self.send_status(jid)
|
||||||
|
case _ if message_lowercase.startswith("feeds"):
|
||||||
|
query = message[6:]
|
||||||
|
if query:
|
||||||
|
if len(query) > 3:
|
||||||
|
action = await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.search_feeds,
|
||||||
|
query
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
action = (
|
||||||
|
"Enter at least 4 characters to search"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
action = await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.list_feeds
|
||||||
|
)
|
||||||
|
case _ if message_lowercase.startswith("interval"):
|
||||||
|
# FIXME
|
||||||
|
# The following error occurs only upon first attempt to set interval.
|
||||||
|
# /usr/lib/python3.11/asyncio/events.py:73: RuntimeWarning: coroutine 'Slixfeed.send_update' was never awaited
|
||||||
|
# self._args = None
|
||||||
|
# RuntimeWarning: Enable tracemalloc to get the object allocation traceback
|
||||||
|
key = message[:8]
|
||||||
|
val = message[9:]
|
||||||
|
if val:
|
||||||
|
# action = (
|
||||||
|
# "Updates will be sent every {} minutes."
|
||||||
|
# ).format(action)
|
||||||
|
await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.set_settings_value,
|
||||||
|
[key, val]
|
||||||
|
)
|
||||||
|
await self.refresh_task(
|
||||||
|
jid,
|
||||||
|
self.send_update,
|
||||||
|
key,
|
||||||
|
val
|
||||||
|
)
|
||||||
|
action = (
|
||||||
|
"Updates will be sent every {} minutes."
|
||||||
|
).format(val)
|
||||||
|
else:
|
||||||
|
action = "Missing value."
|
||||||
|
case _ if message_lowercase.startswith("next"):
|
||||||
|
num = message[5:]
|
||||||
|
await self.send_update(jid, num)
|
||||||
|
await self.send_status(jid)
|
||||||
|
# await self.refresh_task(jid, key, val)
|
||||||
|
case _ if message_lowercase.startswith("quantum"):
|
||||||
|
key = message[:7]
|
||||||
|
val = message[8:]
|
||||||
|
if val:
|
||||||
|
# action = (
|
||||||
|
# "Every update will contain {} news items."
|
||||||
|
# ).format(action)
|
||||||
|
await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.set_settings_value,
|
||||||
|
[key, val]
|
||||||
|
)
|
||||||
|
action = (
|
||||||
|
"Next update will contain {} news items."
|
||||||
|
).format(val)
|
||||||
|
else:
|
||||||
|
action = "Missing value."
|
||||||
|
case _ if message_lowercase.startswith("random"):
|
||||||
|
action = "Updates will be sent randomly."
|
||||||
|
case _ if message_lowercase.startswith("recent"):
|
||||||
|
num = message[7:]
|
||||||
|
if num:
|
||||||
|
action = await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.last_entries,
|
||||||
|
num
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
action = "Missing value."
|
||||||
|
case _ if message_lowercase.startswith("remove"):
|
||||||
|
ix = message[7:]
|
||||||
|
if ix:
|
||||||
|
action = await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.remove_feed,
|
||||||
|
ix
|
||||||
|
)
|
||||||
|
await self.send_status(jid)
|
||||||
|
else:
|
||||||
|
action = "Missing feed ID."
|
||||||
|
case _ if message_lowercase.startswith("search"):
|
||||||
|
query = message[7:]
|
||||||
|
if query:
|
||||||
|
if len(query) > 1:
|
||||||
|
action = await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.search_entries,
|
||||||
|
query
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
action = (
|
||||||
|
"Enter at least 2 characters to search"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
action = "Missing search query."
|
||||||
|
case "start":
|
||||||
|
# action = "Updates are enabled."
|
||||||
|
key = "enabled"
|
||||||
|
val = 1
|
||||||
|
await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.set_settings_value,
|
||||||
|
[key, val]
|
||||||
|
)
|
||||||
|
asyncio.create_task(self.task_jid(jid))
|
||||||
|
action = "Updates are enabled."
|
||||||
|
# print(await datetimehandler.current_time(), "task_manager[jid]")
|
||||||
|
# print(task_manager[jid])
|
||||||
|
case "stats":
|
||||||
|
action = await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.statistics
|
||||||
|
)
|
||||||
|
case _ if message_lowercase.startswith("status "):
|
||||||
|
ix = message[7:]
|
||||||
|
action = await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.toggle_status,
|
||||||
|
ix
|
||||||
|
)
|
||||||
|
case "stop":
|
||||||
|
# FIXME
|
||||||
|
# The following error occurs only upon first attempt to stop.
|
||||||
|
# /usr/lib/python3.11/asyncio/events.py:73: RuntimeWarning: coroutine 'Slixfeed.send_update' was never awaited
|
||||||
|
# self._args = None
|
||||||
|
# RuntimeWarning: Enable tracemalloc to get the object allocation traceback
|
||||||
# action = "Updates are disabled."
|
# action = "Updates are disabled."
|
||||||
try:
|
# try:
|
||||||
task_manager[jid]["check"].cancel()
|
# # task_manager[jid]["check"].cancel()
|
||||||
# task_manager[jid]["status"].cancel()
|
# # task_manager[jid]["status"].cancel()
|
||||||
task_manager[jid]["interval"].cancel()
|
# task_manager[jid]["interval"].cancel()
|
||||||
|
# key = "enabled"
|
||||||
|
# val = 0
|
||||||
|
# action = await datahandler.initdb(
|
||||||
|
# jid,
|
||||||
|
# sqlitehandler.set_settings_value,
|
||||||
|
# [key, val]
|
||||||
|
# )
|
||||||
|
# except:
|
||||||
|
# action = "Updates are already disabled."
|
||||||
|
# # print("Updates are already disabled. Nothing to do.")
|
||||||
|
# # await self.send_status(jid)
|
||||||
key = "enabled"
|
key = "enabled"
|
||||||
val = 0
|
val = 0
|
||||||
actiona = await initdb(jid, sqlitehandler.set_settings_value, [key, val])
|
await datahandler.initdb(
|
||||||
await self.send_status(jid)
|
jid,
|
||||||
print(print_time(), "task_manager[jid]")
|
sqlitehandler.set_settings_value,
|
||||||
print(task_manager[jid])
|
[key, val]
|
||||||
except:
|
)
|
||||||
# action = "Updates are already disabled."
|
await self.task_jid(jid)
|
||||||
await self.send_status(jid)
|
action = "Updates are disabled."
|
||||||
else:
|
case "support":
|
||||||
action = "Unknown command. Press \"help\" for list of commands"
|
# TODO Send an invitation.
|
||||||
|
action = "xmpp:slixmpp@muc.poez.io?join"
|
||||||
|
case _:
|
||||||
|
action = (
|
||||||
|
"Unknown command. "
|
||||||
|
"Press \"help\" for list of commands"
|
||||||
|
)
|
||||||
if action: msg.reply(action).send()
|
if action: msg.reply(action).send()
|
||||||
|
|
||||||
print(print_time(), "COMMAND ACCOUNT")
|
|
||||||
print("COMMAND:", message)
|
|
||||||
print("ACCOUNT: " + str(msg["from"]))
|
|
||||||
|
|
||||||
|
|
||||||
async def select_file(self):
|
async def select_file(self):
|
||||||
"""
|
"""
|
||||||
Initiate actions by JID (Jabber ID).
|
Initiate actions by JID (Jabber ID).
|
||||||
|
|
||||||
:param self: Self
|
Parameters
|
||||||
|
----------
|
||||||
|
self : ?
|
||||||
|
Self.
|
||||||
"""
|
"""
|
||||||
while True:
|
while True:
|
||||||
db_dir = confighandler.get_default_dbdir()
|
db_dir = confighandler.get_default_dbdir()
|
||||||
if not os.path.isdir(db_dir):
|
if not os.path.isdir(db_dir):
|
||||||
msg = ("Slixfeed can not work without a database. \n"
|
msg = (
|
||||||
"To create a database, follow these steps: \n"
|
"Slixfeed can not work without a database.\n"
|
||||||
"Add Slixfeed contact to your roster \n"
|
"To create a database, follow these steps:\n"
|
||||||
"Send a feed to the bot by: \n"
|
"Add Slixfeed contact to your roster.\n"
|
||||||
"add https://reclaimthenet.org/feed/")
|
"Send a feed to the bot by URL:\n"
|
||||||
print(print_time(), msg)
|
"https://reclaimthenet.org/feed/"
|
||||||
|
)
|
||||||
|
# print(await datetimehandler.current_time(), msg)
|
||||||
print(msg)
|
print(msg)
|
||||||
else:
|
else:
|
||||||
os.chdir(db_dir)
|
os.chdir(db_dir)
|
||||||
|
@ -191,114 +409,165 @@ class Slixfeed(slixmpp.ClientXMPP):
|
||||||
# jid_tasker[jid] = asyncio.create_task(self.task_jid(jid))
|
# jid_tasker[jid] = asyncio.create_task(self.task_jid(jid))
|
||||||
# await jid_tasker[jid]
|
# await jid_tasker[jid]
|
||||||
async with asyncio.TaskGroup() as tg:
|
async with asyncio.TaskGroup() as tg:
|
||||||
print("main task")
|
|
||||||
print(print_time(), "repr(tg)")
|
|
||||||
print(repr(tg)) # <TaskGroup entered>
|
|
||||||
for file in files:
|
for file in files:
|
||||||
if file.endswith(".db") and not file.endswith(".db-jour.db"):
|
if file.endswith(".db") and not file.endswith(".db-jour.db"):
|
||||||
jid = file[:-3]
|
jid = file[:-3]
|
||||||
tg.create_task(self.task_jid(jid))
|
main_task.extend([tg.create_task(self.task_jid(jid))])
|
||||||
|
# main_task = [tg.create_task(self.task_jid(jid))]
|
||||||
# task_manager.update({jid: tg})
|
# task_manager.update({jid: tg})
|
||||||
# print(task_manager) # {}
|
|
||||||
print(print_time(), "repr(tg) id(tg)")
|
|
||||||
print(jid, repr(tg)) # sch@pimux.de <TaskGroup tasks=1 entered>
|
|
||||||
print(jid, id(tg)) # sch@pimux.de 139879835500624
|
|
||||||
# <xmpphandler.Slixfeed object at 0x7f24922124d0> <TaskGroup tasks=2 entered>
|
|
||||||
# <xmpphandler.Slixfeed object at 0x7f24922124d0> 139879835500624
|
|
||||||
|
|
||||||
|
|
||||||
async def task_jid(self, jid):
|
async def task_jid(self, jid):
|
||||||
"""
|
"""
|
||||||
JID (Jabber ID) task manager.
|
JID (Jabber ID) task manager.
|
||||||
|
|
||||||
:param self: Self
|
Parameters
|
||||||
:param jid: Jabber ID
|
----------
|
||||||
|
self : ?
|
||||||
|
Self.
|
||||||
|
jid : str
|
||||||
|
Jabber ID.
|
||||||
"""
|
"""
|
||||||
enabled = await initdb(
|
enabled = await datahandler.initdb(
|
||||||
jid,
|
jid,
|
||||||
sqlitehandler.get_settings_value,
|
sqlitehandler.get_settings_value,
|
||||||
"enabled"
|
"enabled"
|
||||||
)
|
)
|
||||||
print(print_time(), "enabled", enabled, jid)
|
# print(await datetimehandler.current_time(), "enabled", enabled, jid)
|
||||||
if enabled:
|
if enabled:
|
||||||
print("sub task")
|
|
||||||
print(print_time(), "repr(self) id(self)")
|
|
||||||
print(repr(self))
|
|
||||||
print(id(self))
|
|
||||||
task_manager[jid] = {}
|
task_manager[jid] = {}
|
||||||
task_manager[jid]["check"] = asyncio.create_task(check_updates(jid))
|
task_manager[jid]["check"] = asyncio.create_task(
|
||||||
task_manager[jid]["status"] = asyncio.create_task(self.send_status(jid))
|
check_updates(jid)
|
||||||
task_manager[jid]["interval"] = asyncio.create_task(self.send_update(jid))
|
)
|
||||||
|
task_manager[jid]["status"] = asyncio.create_task(
|
||||||
|
self.send_status(jid)
|
||||||
|
)
|
||||||
|
task_manager[jid]["interval"] = asyncio.create_task(
|
||||||
|
self.send_update(jid)
|
||||||
|
)
|
||||||
await task_manager[jid]["check"]
|
await task_manager[jid]["check"]
|
||||||
await task_manager[jid]["status"]
|
await task_manager[jid]["status"]
|
||||||
await task_manager[jid]["interval"]
|
await task_manager[jid]["interval"]
|
||||||
print(print_time(), "task_manager[jid].items()")
|
|
||||||
print(task_manager[jid].items())
|
|
||||||
print(print_time(), "task_manager[jid]")
|
|
||||||
print(task_manager[jid])
|
|
||||||
print(print_time(), "task_manager")
|
|
||||||
print(task_manager)
|
|
||||||
else:
|
else:
|
||||||
|
# FIXME
|
||||||
|
# The following error occurs only upon first attempt to stop.
|
||||||
|
# /usr/lib/python3.11/asyncio/events.py:73: RuntimeWarning: coroutine 'Slixfeed.send_update' was never awaited
|
||||||
|
# self._args = None
|
||||||
|
# RuntimeWarning: Enable tracemalloc to get the object allocation traceback
|
||||||
|
try:
|
||||||
|
task_manager[jid]["interval"].cancel()
|
||||||
|
except:
|
||||||
|
None
|
||||||
await self.send_status(jid)
|
await self.send_status(jid)
|
||||||
|
|
||||||
async def send_update(self, jid):
|
|
||||||
|
async def send_update(self, jid, num=None):
|
||||||
"""
|
"""
|
||||||
Send news items as messages.
|
Send news items as messages.
|
||||||
|
|
||||||
:param self: Self
|
Parameters
|
||||||
:param jid: Jabber ID
|
----------
|
||||||
|
self : ?
|
||||||
|
Self.
|
||||||
|
jid : str
|
||||||
|
Jabber ID.
|
||||||
|
num : str, optional
|
||||||
|
Number. The default is None.
|
||||||
"""
|
"""
|
||||||
new = await initdb(
|
# print("Starting send_update()")
|
||||||
|
# print(jid)
|
||||||
|
new = await datahandler.initdb(
|
||||||
jid,
|
jid,
|
||||||
sqlitehandler.get_entry_unread
|
sqlitehandler.get_entry_unread,
|
||||||
|
num
|
||||||
)
|
)
|
||||||
if new:
|
if new:
|
||||||
print(print_time(), "> SEND UPDATE",jid)
|
print(await datetimehandler.current_time(), "> SEND UPDATE",jid)
|
||||||
self.send_message(
|
self.send_message(
|
||||||
mto=jid,
|
mto=jid,
|
||||||
mbody=new,
|
mbody=new,
|
||||||
mtype="chat"
|
mtype="chat"
|
||||||
)
|
)
|
||||||
interval = await initdb(
|
await self.refresh_task(
|
||||||
jid,
|
jid,
|
||||||
sqlitehandler.get_settings_value,
|
self.send_update,
|
||||||
"interval"
|
"interval"
|
||||||
)
|
)
|
||||||
|
# interval = await datahandler.initdb(
|
||||||
|
# jid,
|
||||||
|
# sqlitehandler.get_settings_value,
|
||||||
|
# "interval"
|
||||||
|
# )
|
||||||
|
# task_manager[jid]["interval"] = loop.call_at(
|
||||||
|
# loop.time() + 60 * interval,
|
||||||
|
# loop.create_task,
|
||||||
|
# self.send_update(jid)
|
||||||
|
# )
|
||||||
|
|
||||||
|
# print(await datetimehandler.current_time(), "asyncio.get_event_loop().time()")
|
||||||
|
# print(await datetimehandler.current_time(), asyncio.get_event_loop().time())
|
||||||
# await asyncio.sleep(60 * interval)
|
# await asyncio.sleep(60 * interval)
|
||||||
self.loop.call_at(
|
|
||||||
self.loop.time() + 60 * interval,
|
# loop.call_later(
|
||||||
self.loop.create_task,
|
# 60 * interval,
|
||||||
self.send_update(jid)
|
# loop.create_task,
|
||||||
)
|
# self.send_update(jid)
|
||||||
|
# )
|
||||||
|
|
||||||
|
# print
|
||||||
|
# await handle_event()
|
||||||
|
|
||||||
|
|
||||||
async def send_status(self, jid):
|
async def send_status(self, jid):
|
||||||
"""
|
"""
|
||||||
Send status message.
|
Send status message.
|
||||||
|
|
||||||
:param self: Self
|
Parameters
|
||||||
:param jid: Jabber ID
|
----------
|
||||||
|
self : ?
|
||||||
|
Self.
|
||||||
|
jid : str
|
||||||
|
Jabber ID.
|
||||||
"""
|
"""
|
||||||
print(print_time(), "> SEND STATUS",jid)
|
print(await datetimehandler.current_time(), "> SEND STATUS",jid)
|
||||||
unread = await initdb(
|
enabled = await datahandler.initdb(
|
||||||
jid,
|
|
||||||
sqlitehandler.get_number_of_entries_unread
|
|
||||||
)
|
|
||||||
|
|
||||||
if unread:
|
|
||||||
status_text = "📰 News items: {}".format(str(unread))
|
|
||||||
status_mode = "chat"
|
|
||||||
else:
|
|
||||||
status_text = "🗞 No News"
|
|
||||||
status_mode = "available"
|
|
||||||
|
|
||||||
enabled = await initdb(
|
|
||||||
jid,
|
jid,
|
||||||
sqlitehandler.get_settings_value,
|
sqlitehandler.get_settings_value,
|
||||||
"enabled"
|
"enabled"
|
||||||
)
|
)
|
||||||
|
|
||||||
if not enabled:
|
if not enabled:
|
||||||
status_mode = "xa"
|
status_mode = "xa"
|
||||||
|
status_text = "Send \"Start\" to receive news."
|
||||||
|
else:
|
||||||
|
feeds = await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.get_number_of_items,
|
||||||
|
"feeds"
|
||||||
|
)
|
||||||
|
if not feeds:
|
||||||
|
status_mode = "available"
|
||||||
|
status_text = (
|
||||||
|
"📂️ Send a URL from a blog or a news website."
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
unread = await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.get_number_of_entries_unread
|
||||||
|
)
|
||||||
|
if unread:
|
||||||
|
status_mode = "chat"
|
||||||
|
status_text = (
|
||||||
|
"📰 You have {} news items to read."
|
||||||
|
).format(str(unread))
|
||||||
|
# status_text = (
|
||||||
|
# "📰 News items: {}"
|
||||||
|
# ).format(str(unread))
|
||||||
|
# status_text = (
|
||||||
|
# "📰 You have {} news items"
|
||||||
|
# ).format(str(unread))
|
||||||
|
else:
|
||||||
|
status_mode = "available"
|
||||||
|
status_text = "🗞 No news"
|
||||||
|
|
||||||
# print(status_text, "for", jid)
|
# print(status_text, "for", jid)
|
||||||
self.send_presence(
|
self.send_presence(
|
||||||
|
@ -306,37 +575,55 @@ class Slixfeed(slixmpp.ClientXMPP):
|
||||||
pstatus=status_text,
|
pstatus=status_text,
|
||||||
pto=jid,
|
pto=jid,
|
||||||
#pfrom=None
|
#pfrom=None
|
||||||
)
|
)
|
||||||
|
# await asyncio.sleep(60 * 20)
|
||||||
await asyncio.sleep(60 * 20)
|
await self.refresh_task(
|
||||||
|
jid,
|
||||||
# self.loop.call_at(
|
self.send_status,
|
||||||
# self.loop.time() + 60 * 20,
|
"status",
|
||||||
# self.loop.create_task,
|
"20"
|
||||||
|
)
|
||||||
|
# loop.call_at(
|
||||||
|
# loop.time() + 60 * 20,
|
||||||
|
# loop.create_task,
|
||||||
# self.send_status(jid)
|
# self.send_status(jid)
|
||||||
# )
|
# )
|
||||||
|
|
||||||
|
|
||||||
async def refresh_task(self, jid, key, val):
|
async def refresh_task(self, jid, callback, key, val=None):
|
||||||
"""
|
"""
|
||||||
Apply settings on runtime.
|
Apply new setting at runtime.
|
||||||
|
|
||||||
:param self: Self
|
Parameters
|
||||||
:param jid: Jabber ID
|
----------
|
||||||
:param key: Key
|
self : ?
|
||||||
:param val: Value
|
Self.
|
||||||
|
jid : str
|
||||||
|
Jabber ID.
|
||||||
|
key : str
|
||||||
|
Key.
|
||||||
|
val : str, optional
|
||||||
|
Value. The default is None.
|
||||||
"""
|
"""
|
||||||
|
if not val:
|
||||||
|
val = await datahandler.initdb(
|
||||||
|
jid,
|
||||||
|
sqlitehandler.get_settings_value,
|
||||||
|
key
|
||||||
|
)
|
||||||
if jid in task_manager:
|
if jid in task_manager:
|
||||||
task_manager[jid][key].cancel()
|
task_manager[jid][key].cancel()
|
||||||
loop = asyncio.get_event_loop()
|
|
||||||
print(print_time(), "loop")
|
|
||||||
print(loop)
|
|
||||||
print(print_time(), "loop")
|
|
||||||
task_manager[jid][key] = loop.call_at(
|
task_manager[jid][key] = loop.call_at(
|
||||||
loop.time() + 60 * float(val),
|
loop.time() + 60 * float(val),
|
||||||
loop.create_task,
|
loop.create_task,
|
||||||
self.send_update(jid)
|
callback(jid)
|
||||||
|
# self.send_update(jid)
|
||||||
)
|
)
|
||||||
|
# task_manager[jid][key] = loop.call_later(
|
||||||
|
# 60 * float(val),
|
||||||
|
# loop.create_task,
|
||||||
|
# self.send_update(jid)
|
||||||
|
# )
|
||||||
# task_manager[jid][key] = self.send_update.loop.call_at(
|
# task_manager[jid][key] = self.send_update.loop.call_at(
|
||||||
# self.send_update.loop.time() + 60 * val,
|
# self.send_update.loop.time() + 60 * val,
|
||||||
# self.send_update.loop.create_task,
|
# self.send_update.loop.create_task,
|
||||||
|
@ -350,16 +637,19 @@ async def check_updates(jid):
|
||||||
"""
|
"""
|
||||||
Start calling for update check up.
|
Start calling for update check up.
|
||||||
|
|
||||||
:param jid: Jabber ID
|
Parameters
|
||||||
|
----------
|
||||||
|
jid : str
|
||||||
|
Jabber ID.
|
||||||
"""
|
"""
|
||||||
while True:
|
while True:
|
||||||
print(print_time(), "> CHCK UPDATE",jid)
|
print(await datetimehandler.current_time(), "> CHCK UPDATE",jid)
|
||||||
await initdb(jid, datahandler.download_updates)
|
await datahandler.initdb(jid, datahandler.download_updates)
|
||||||
await asyncio.sleep(60 * 90)
|
await asyncio.sleep(60 * 90)
|
||||||
# Schedule to call this function again in 90 minutes
|
# Schedule to call this function again in 90 minutes
|
||||||
# self.loop.call_at(
|
# loop.call_at(
|
||||||
# self.loop.time() + 60 * 90,
|
# loop.time() + 60 * 90,
|
||||||
# self.loop.create_task,
|
# loop.create_task,
|
||||||
# self.check_updates(jid)
|
# self.check_updates(jid)
|
||||||
# )
|
# )
|
||||||
|
|
||||||
|
@ -367,84 +657,123 @@ async def check_updates(jid):
|
||||||
def print_help():
|
def print_help():
|
||||||
"""
|
"""
|
||||||
Print help manual.
|
Print help manual.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
msg : str
|
||||||
|
Message.
|
||||||
"""
|
"""
|
||||||
msg = ("Slixfeed - News syndication bot for Jabber/XMPP \n"
|
msg = (
|
||||||
"\n"
|
"```\n"
|
||||||
"DESCRIPTION: \n"
|
"NAME\n"
|
||||||
" Slixfeed is a news aggregator bot for online news feeds. \n"
|
"Slixfeed - News syndication bot for Jabber/XMPP\n"
|
||||||
" Supported filetypes: Atom, RDF and RSS. \n"
|
"\n"
|
||||||
"\n"
|
"DESCRIPTION\n"
|
||||||
"BASIC USAGE: \n"
|
" Slixfeed is a news aggregator bot for online news feeds.\n"
|
||||||
" start \n"
|
" This program is primarily designed for XMPP.\n"
|
||||||
" Enable bot and send updates. \n"
|
" For more information, visit https://xmpp.org/software/\n"
|
||||||
" Stop \n"
|
"\n"
|
||||||
" Disable bot and stop updates. \n"
|
"BASIC USAGE\n"
|
||||||
" batch N \n"
|
" start\n"
|
||||||
" Send N updates for each interval. \n"
|
" Enable bot and send updates.\n"
|
||||||
" interval N \n"
|
" stop\n"
|
||||||
" Send an update every N minutes. \n"
|
" Disable bot and stop updates.\n"
|
||||||
" feed list \n"
|
" feeds\n"
|
||||||
" List subscriptions. \n"
|
" List subscriptions.\n"
|
||||||
"\n"
|
" interval N\n"
|
||||||
"EDIT OPTIONS: \n"
|
" Set interval update to every N minutes.\n"
|
||||||
" add URL \n"
|
" next N\n"
|
||||||
" Add URL to subscription list. \n"
|
" Send N next updates.\n"
|
||||||
" remove ID \n"
|
" quantum N\n"
|
||||||
" Remove feed from subscription list. \n"
|
" Set N updates for each interval.\n"
|
||||||
" status ID \n"
|
"\n"
|
||||||
" Toggle update status of feed. \n"
|
"FILTER OPTIONS\n"
|
||||||
"\n"
|
" allow\n"
|
||||||
"SEARCH OPTIONS: \n"
|
" Keywords to allow (comma separates).\n"
|
||||||
" search TEXT \n"
|
" deny\n"
|
||||||
" Search news items by given keywords. \n"
|
" Keywords to block (comma separates).\n"
|
||||||
" recent N \n"
|
# " filter clear allow\n"
|
||||||
" List recent N news items (up to 50 items). \n"
|
# " Reset allow list.\n"
|
||||||
"\n"
|
# " filter clear deny\n"
|
||||||
"STATISTICS OPTIONS: \n"
|
# " Reset deny list.\n"
|
||||||
" analyses \n"
|
"\n"
|
||||||
" Show report and statistics of feeds. \n"
|
"EDIT OPTIONS\n"
|
||||||
" obsolete \n"
|
" URL\n"
|
||||||
" List feeds that are not available. \n"
|
" Add URL to subscription list.\n"
|
||||||
" unread \n"
|
" add URL TITLE\n"
|
||||||
" Print number of unread news items. \n"
|
" Add URL to subscription list (without validity check).\n"
|
||||||
"\n"
|
" remove ID\n"
|
||||||
"BACKUP OPTIONS: \n"
|
" Remove feed from subscription list.\n"
|
||||||
" export opml \n"
|
" status ID\n"
|
||||||
" Send an OPML file with your feeds. \n"
|
" Toggle update status of feed.\n"
|
||||||
" backup news html\n"
|
"\n"
|
||||||
" Send an HTML formatted file of your news items. \n"
|
"SEARCH OPTIONS\n"
|
||||||
" backup news md \n"
|
" feeds TEXT\n"
|
||||||
" Send a Markdown file of your news items. \n"
|
" Search subscriptions by given keywords.\n"
|
||||||
" backup news text \n"
|
" search TEXT\n"
|
||||||
" Send a Plain Text file of your news items. \n"
|
" Search news items by given keywords.\n"
|
||||||
"\n"
|
" recent N\n"
|
||||||
"DOCUMENTATION: \n"
|
" List recent N news items (up to 50 items).\n"
|
||||||
" Slixfeed \n"
|
"\n"
|
||||||
" https://gitgud.io/sjehuda/slixfeed \n"
|
# "STATISTICS OPTIONS\n"
|
||||||
" Slixmpp \n"
|
# " analyses\n"
|
||||||
" https://slixmpp.readthedocs.io/ \n"
|
# " Show report and statistics of feeds.\n"
|
||||||
" feedparser \n"
|
# " obsolete\n"
|
||||||
" https://pythonhosted.org/feedparser")
|
# " List feeds that are not available.\n"
|
||||||
|
# " unread\n"
|
||||||
|
# " Print number of unread news items.\n"
|
||||||
|
# "\n"
|
||||||
|
# "BACKUP OPTIONS\n"
|
||||||
|
# " export opml\n"
|
||||||
|
# " Send an OPML file with your feeds.\n"
|
||||||
|
# " backup news html\n"
|
||||||
|
# " Send an HTML formatted file of your news items.\n"
|
||||||
|
# " backup news md\n"
|
||||||
|
# " Send a Markdown file of your news items.\n"
|
||||||
|
# " backup news text\n"
|
||||||
|
# " Send a Plain Text file of your news items.\n"
|
||||||
|
# "\n"
|
||||||
|
"SUPPORT\n"
|
||||||
|
" support"
|
||||||
|
" Join xmpp:slixmpp@muc.poez.io?join\n"
|
||||||
|
"\n"
|
||||||
|
# "PROTOCOLS\n"
|
||||||
|
# " Supported prootcols are IRC, Matrix and XMPP.\n"
|
||||||
|
# " For the best experience, we recommend you to use XMPP.\n"
|
||||||
|
# "\n"
|
||||||
|
"FILETYPES\n"
|
||||||
|
" Supported filetypes are Atom, RDF and RSS.\n"
|
||||||
|
"\n"
|
||||||
|
"AUTHORS\n"
|
||||||
|
" Laura Harbinger, Schimon Zackary.\n"
|
||||||
|
"\n"
|
||||||
|
"COPYRIGHT\n"
|
||||||
|
" Slixfeed is free software; you can redistribute it and/or\n"
|
||||||
|
" modify it under the terms of the GNU General Public License\n"
|
||||||
|
" as published by the Free Software Foundation; version 3 only\n"
|
||||||
|
"\n"
|
||||||
|
" Slixfeed is distributed in the hope that it will be useful,\n"
|
||||||
|
" but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
|
||||||
|
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
|
||||||
|
" GNU General Public License for more details.\n"
|
||||||
|
"\n"
|
||||||
|
"NOTE\n"
|
||||||
|
" Make Slixfeed your own.\n"
|
||||||
|
"\n"
|
||||||
|
" You can run Slixfeed on your own computer, server, and\n"
|
||||||
|
" even on a Linux phone (i.e. Droidian, Mobian NixOS,\n"
|
||||||
|
" postmarketOS). You can also use Termux.\n"
|
||||||
|
"\n"
|
||||||
|
" All you need is one of the above and an XMPP account to\n"
|
||||||
|
" connect Slixfeed to.\n"
|
||||||
|
"\n"
|
||||||
|
"DOCUMENTATION\n"
|
||||||
|
" Slixfeed\n"
|
||||||
|
" https://gitgud.io/sjehuda/slixfeed\n"
|
||||||
|
" Slixmpp\n"
|
||||||
|
" https://slixmpp.readthedocs.io/\n"
|
||||||
|
" feedparser\n"
|
||||||
|
" https://pythonhosted.org/feedparser\n"
|
||||||
|
"\n```"
|
||||||
|
)
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
|
|
||||||
# TODO Perhaps this needs to be executed
|
|
||||||
# just once per program execution
|
|
||||||
async def initdb(jid, callback, message=None):
|
|
||||||
"""
|
|
||||||
Callback function to instantiate action on database.
|
|
||||||
|
|
||||||
:param jid: JID (Jabber ID).
|
|
||||||
:param callback: Function name.
|
|
||||||
:param massage: Optional kwarg when a message is a part or required argument.
|
|
||||||
"""
|
|
||||||
db_dir = confighandler.get_default_dbdir()
|
|
||||||
if not os.path.isdir(db_dir):
|
|
||||||
os.mkdir(db_dir)
|
|
||||||
db_file = os.path.join(db_dir, r"{}.db".format(jid))
|
|
||||||
sqlitehandler.create_tables(db_file)
|
|
||||||
# await sqlitehandler.set_default_values(db_file)
|
|
||||||
if message:
|
|
||||||
return await callback(db_file, message)
|
|
||||||
else:
|
|
||||||
return await callback(db_file)
|
|
||||||
|
|
Loading…
Reference in a new issue