{"id":13764823,"url":"https://github.com/DJF3/Webex-Message-space-archiver","last_synced_at":"2025-05-10T20:31:15.932Z","repository":{"id":49846269,"uuid":"179256162","full_name":"DJF3/Webex-Message-space-archiver","owner":"DJF3","description":"Archive Cisco Webex Teams Space messages to a single HTML file. Highly configurable (download files/images, sort order, max messages or age, avatars, etc)","archived":false,"fork":false,"pushed_at":"2025-04-07T09:33:30.000Z","size":801,"stargazers_count":66,"open_issues_count":3,"forks_count":20,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-04T16:48:22.437Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DJF3.png","metadata":{"files":{"readme":"README-oldreleasenotes.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-03T09:26:31.000Z","updated_at":"2025-04-08T06:51:05.000Z","dependencies_parsed_at":"2022-09-01T17:23:49.817Z","dependency_job_id":"e6b17b2b-f5a8-4aa4-9681-fba44611619d","html_url":"https://github.com/DJF3/Webex-Message-space-archiver","commit_stats":null,"previous_names":["djf3/webex-teams-space-archive-v2"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DJF3%2FWebex-Message-space-archiver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DJF3%2FWebex-Message-space-archiver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DJF3%2FWebex-Message-space-archiver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DJF3%2FWebex-Message-space-archiver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DJF3","download_url":"https://codeload.github.com/DJF3/Webex-Message-space-archiver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253480407,"owners_count":21915246,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T16:00:29.732Z","updated_at":"2025-05-10T20:31:11.160Z","avatar_url":"https://github.com/DJF3.png","language":"Python","funding_links":[],"categories":["Developer Tools"],"sub_categories":["Web SDK \u0026 Widgets samples"],"readme":"## These are OLD releasenotes. \n**The most recent ones are in the [README.md](https://github.com/DJF3/Webex-Message-space-archiver#releasenotes)**\n\n.\n.\n.\n\n## Enhancements in release v25 - February 10th 2022\n\n**Important Enhancements / fixes that may require your attention**\n- REQUIREMENTS: Python 3.9 - the code will check for this version. I have not tested with older versions.\n- CONFIG: Get TOKEN from _environment variable_ \"WEBEX_ARCHIVE_TOKEN\" if the .ini does not have a token. Great for batch operations\n- CONFIG: Run script with .ini filename as parameter for batch operations. Store your token in an environment variable\n- REQUEST: NEW! \"download=no\" ONLY shows the text: \"attached_file\" without filename/size. Get filename/size? \"download=info\"\n- BUG: Messages without a parent only appeared in the JSON file, not in the .txt or .html files.\n- BUG: More than 9 messages per thread were not shown in html/txt (tnx ojchase!) \n- BUG: Shared code on-screen: no wrapping but when printing: wrapping so no content goes lost.\n\n**NEW**\n- FUNCTIONAL: Table of content: YEARS are now collapsable (one click. Default: expanded)\n- FUNCTIONAL: Create some image/file SIZE stats (total image/file size, avg image/file size)\n- FUNCTIONAL: End script with 2 beeps. (1=attention, 3=error)\n- VISUAL: \"updated\" field now showing the updated date/time \n- VISUAL: in top-10 user domains also show the remaining user domain count\n- VISUAL: For txt export, prefix threaded messages in the TXT export with \"\u003e\u003e \" to visualize the thread\n- VISUAL: Space name (header) wraps if long\n- VISUAL: \"Top-10 user\" statistics, added \"# messages\" to make it clear that it's the number of msg\n- VISUAL: Month headers now have a button to navigate to the top.\n- VISUAL: remove underline from month TOC links and last/first message link\n- VISUAL: \"use this exact format: ddmmyyyy-ddmmyyyy or ddmmyyyy-\" now displays the configured dateformat.\n- VISUAL: When using a different .ini (via commandline parameter), show the filename in the HTML header\n- VISUAL: If download=no/info, add \"no downloads\" message in the top-of-the-page statistics\n- VISUAL: With a custom max_msg dateformat, the INI should use this format in the helptext \u0026 error messages\n- FILTERING: Ability to enter a startdate without enddate (assuming \"today\" is the enddate)\n- FILTERING: make the maxtotalmessages dateformat (below) configurable (in script, not the .ini)\n- FILTERING: archive msg BETWEEN 2 dates. maxtotalmessages = 28052021-28062021  (ddmmyyyy) (chriskoch99)\n\n**FIXED**\n- CODE: If a space has NO messages (because of auto-archiving or message age max) error. Now it stops with a message.\n- VISUAL: (ojchase) If last space msg = threaded -\u003e shown as a normal message. Fixed.\n- VISUAL: Message without html but only text? \"\\n\" and \"\\n\\n\"'s are ignored. (ojchase) \n- VISUAL: stats: \"...other users\" showed msg from total of top-10 domain, now it shows the # of non-top10 users.\n- VISUAL: better indication that a card message cannot be displayed.\n- VISUAL: expand icon for year on previous line, now on the same line as the year (display-inline)\n- VISUAL: if you collaps the last year in the TOC, now it doesn't hide the \"last message\" link\n- VISUAL: if sortoldnew=no, the \"last message\" link should say \"newest message\", otherwise \"oldest message\"\n- VISUAL: index table of first 'year' is wider than the next ones. now they are all 300px\n- VISUAL: with total/avg file size stats, don't round(2) for anything lower than GB \n- VISUAL: When printing, _long_ strings would not be wrapped: --\u003e 'word-break: break-word;'\n- VISUAL: When a _folder_ is configured in the 'outputFileName': throw error message\n- VISUAL: html code in \"text\" field was interpreted (changing layout/fonts/colors/etc)\n- BUG: space name with \"#\", the '#' is removed leaving a space. --\u003e also removing space \n- BUG: wrong brackets in javscript code of generated html (for expand/collapse of months)\n- BUG: created parents have a fake user id --\u003e this caused a problem downloading avatars\n- BUG: created parents (that did not exist) were not written to JSON output\n- BUG: New year detection for the month TOC was done by checking for \"Jan\". Not good for localized setups. Now checking for the month number!\n- CONFIG - (ojchase) When 'maxtotalmessages' in .ini \u003c 21: error. Fixed.\n- SEARCH - if no group or direct spaces are found, you still see the header.\n- DOC: wrong url in ini (rooms-get documentation))\n- TEST: Tested file modified date on WINDOWS! Working!\n\n**OPEN**\n- VISUAL: When retrieving messages between 2 dates, the total-message-count may not be 100% accurate. (only affects a statistic in the header)\n- TIMEZONE: Generated HTML not using DST (\"summertime\"), to be addressed in an upcoming release\n\n**NOTE**\n- CARDS: cards and buttons won't be visible in the html\n- NOTE: The code reads messages with UTC time and displays it in the local timezone without being aware of summer/winter time. In the summer msg times could be off 1 hour.\n\n\n\n\n\n\n\n## Enhancements in release v21 - September 2th 2021\n\n**NEW**\n- FILE   - !! downloaded files get the time/date as the message where they were attached to!\n- SEARCH - !! results are split in direct \u0026 group spaces (separate bots/users and group spaces)\n- SEARCH - space search has a progress indicator\n- REPORT - performance report shows nr of messages (+ msg/per second)\n- AVATAR - downloads: updated code to use the requests library --\u003e removed urllib\n- AVATAR - filenames: add \".jpg\" to downloaded avatars (because they are .jpg files)\n- VISUAL - as Webex cards are way to complex to render, a clear label is added to Cards messages\n- VISUAL - show progress bar while generating HTML (this is the most time consuming process)\n- VISUAL - show progress bar while retrieving messages (this process also takes a lot of time)\n- VISUAL - add thousands separator in statistics to make it easier to read\n- VISUAL - align message count to the right (align all stat counts to the right)\n- VISUAL - changed font to the -Light variant of HelveticaNeue\n\n**FIXED BUGS**\n- LAY-OUT - month msg count, now using class and removed align:right;\n- LAY-OUT - many small changes to increase readability and consistency\n- VISUAL  - \"#7 generating HTML\" is now showing that this includes downloading of files\n- VISUAL  - step 4c starts on the same line after step4b.\n- VISUAL  - performance report reserve more digits for time (7 instead of 3)\n- INTERACTION - In very specific scenarios cards can cause an error --\u003e help message with suggestion\n- INTERACTION - not all exit commands played 3 beeps\n- CODE   - Can't create folder if space name ends with a space. get_roomname return: includes strip()\n- CODE   - change api.ciscospark.com to the new webexapis.com\n- SEARCH - space search had a bug and is now working reliably and efficient\n- SEARCH - Search for spaces --\u003e error 504. Changed the list_rooms max from 900 to 500 and deal with errors\n- REBRANDING - change name from Webex Teams to Webex.\n- REBRANDING - change filenames to remove 'teams'\n- REBRANDING - because of the name change: check for files with the old name, give instructions and stop.\n- PROCESSING - messages with many URLs: regex replaced every single url. Now only unique urls are replaced\n- READ PEOPLE - when getting \u003e50 personIds-\u003eURL length\u003e5000 char-\u003eError. lowered chunksize from 80 to 50.\n- REPORT - performance report doesn't crash if \"generate HTML\" is \u003c1 second.\n- OUTPUT - Don't interpret TEXT like \"\u003cscript\" --\u003e change to \"\u003cpre\u003e\u0026lt;script\".\n\n\n\n## Enhancements in release v20 - February 11th 2020\n\n**NEW**\n- !! MESSAGE THREADING: Supporting message threading !!\n- MESSAGES: Changed message time format so it's easier to read\n- MESSAGES: you can see 'Edited' when a message was modified after sending.\n- MESSAGES: sender color/format different for external users (now just like in the Teams client)\n- LAYOUT: changed left border of threaded message to grey\n- IMAGES: multiple images in 1 message? Now shown as grid, not a list.\n\n**FIXED BUGS**\n- MENTIONS: code would not display \"@all\" mentions\n- ATTACHMENTS: images with uppercase extensions were not downloaded\n- SORTING: \"new-\u003eold\", all messages considered NEW because current_msg_time - prev_msg_time is never \u003e 60s\n- ATTACHMENTS: 'jpeg' file not recognized as image because it assumed the extension has 3 characters\n- ATTACHMENTS: 'jpeg' images are now embeded (like png/jpg/etc)\n- ATTACHMENTS: messages without text (only attachments/images) --\u003e files won't download\n- THREADED MESSAGE: with threading, the message order is messed up --\u003e now a msg index is created first\n- THREADED MESSAGE: with a # of messages limit, you could run into messages that belong to a previous thread. --\u003e IGNORE those\n- THREADED MESSAGE: threaded messages + avatars should be indented\n- THREADED MESSAGE: When sorted new-old, threaded messages should be sorted old-new\n- THREADED MESSAGE: crossing a month? --\u003e thread reply in Nov on Thread in Oct: showing new month header. --\u003e FIXED\n- THREADED MESSAGE: these messages should have grey bar like \"\u003e\" before it --\u003e border-left!\n- MESSAGES: When adds the same URL in a msg multiple times it would only appear once\n- INDEX/STATS: index + stats not vertically aligned to top\n- ATTACHMENTS with no name / just spaces as a name cause an error.\n\n\n\n## Enhancements in release v19a - May 27th 2019\n**IMPORTANT**\n- PRINT: A printed (to PDF) version of the generated file looks like the screen    (27may2019-v19a)\n         *Firefox* tip: File, Print, check \"print background colors and images\", then print/save to PDF\n         \n**NEW**\n- STATISTICS: add number of different users who have written messages   (24may2019-v19a)\n- STATISTICS: add total number of members   (24may2019-v19a)\n- ERROR: Avatar download errors are not reported if retries were successful   (22may2019-v19a)\n\n**Fixed bugs**\n- LAYOUT: Header is not resizing with browser width: better lay-out/print    (27may2019-v19a)\n- LAYOUT: TOC + statistics now have a minimum size: better lay-out/print    (27may2019-v19a)\n- PRINT: removed \"back to top\" arrow from printing    (27may2019-v19a)\n- HEADER: 'avatar' setting missing    (27may2019-v19a)\n- BUG: remove \"back to top\" text from month headers?   (27may2019-v19a)\n\n\n\n## Enhancements in release v17h-v19 - May 22nd 2019\n**IMPORTANT**\n- TIME: Messages are stored in UTC. Your timezone is detected and time/dates are converted  (v18b9)\n- FILES: HTML files are always stored in a folder.       (v18b)\n- FILES: images/files/avatars are stored in their own folder (/images, /files, /avatars)    (v18b)\n- OUTPUT: export message data as .txt (besides .html \u0026 .json)   (v18b8)\n- OUTPUT: export message data as a .json file (default: no)   (v18b2)\n- OUTPUT: ability to restrict number of messages by nr. of days: '60d' = 60 days  (v18b7)\n- AVATAR: Config item 'useravatar' now has the option 'download' to download avatar images  (v18)\n- AVATAR: download: Only downloads Avatars of the people who actually wrote a message    (v18b7)\n- AVATAR: empty? Show circle with first 2 initials    (v17h)\n- FIND SPACE ID: Find space ID by running the script with a search argument as parameter. (v17h)\n\n**NEW**\n- TIME: add time-zone detection in script    (v18b9)\n- TIME: add 'generation' time-zone to header    (v18b9)\n- REQUIREMENT: for Python 3.6 or higher is checked (because of print(f\"{blah}\"))   (v18b8)\n- FONT: easier to read: removed: HelveticaNeue-Light/Helvetica Neue Light from CSS    (v18b9)\n- ERROR: print certain errors when the script finishes (toggle: by setting in the script)   (v18b8)\n- PRIVACY: change filename for avatars to userId   (v18b8)\n- PERFORMANCE: report displayed based on variable printPerformanceReport=False in script  (v18b7)\n- NAVIGATE: add floating \"back to top\" button   (v18b3)\n- STATS: When not downloading files, it will provide stats for files AND images. (v18b3)\n- NOTIFY: spaceId not set: explain what they can do: run with search parameter!   (v19)\n- NOTIFY: When the script is ready, it beeps once    (v18b3)\n- FOLDERS: will be created AFTER messages/members have been retrieved. ERROR? No folders created.   (v18b8)\n- FOLDER: If a folder exists, it will add a number '-01', '-02' instead of '-1', '-2'    (v18b3)\n- INI: .txt and/or .json file: configurable in .ini    (v18b8)\n- INI: Renamed config key 'myroom' to 'myspaceid' - but you can use both     (v18b4)\n- INI: Updated the .ini file lay-out to make it more compact and easier to read.    (v18b3)\n- INI: change downloadfiles key to 'download'      (v18a2)\n- MESSAGE: Removed gray bubble (v18a2)\n- ATTACHMENTS: added base64 encoded paperclip icon (v18a2)\n- ATTACHMENTS: show file size and filename underneath image   (v18a1)\n- ATTACHMENTS: when not downloading files or images, still display the filename \u0026 size.     (v18a1)\n- IMAGES: Simplified CSS in code for images    (v18b3)\n- IMAGES: Decreased space between multiple images in the same message    (v18b3)\n- IMAGES: Image popup: added \"escape\" key to close the image    (v17h)\n\n**Fixed bugs**\n- CODE: steps appeared twice: #7, #7, #8. NOW have #7, #8, #9   (v19)\n- SEARCH: if you haven't set your space ID, the search function doesn't work!    (v19)\n- DOWNLOAD: could cause a KeyError: 'content-disposition'. Code now deals with this situation.   (v18b9)\n- HTML: header height wrong (66px) - changed to 76px because of 2nd line with space info    (v19)\n- HTML: code still contained: \u003cspark-mention\u003e tags - they do nothing - removed.   (v18b9)\n- AVATAR: step 4 had a wrong reference to members.personId that should have been members['personId']   (v18b5)\n- AVATAR: Display user avatar+msg when the same user writes a msg \u003e60 seconds after the prev message   (v18b4)\n- AVATAR: download: store failed downloads in a list and re-process these items! (try max 3x)   (v18b7)\n- ATTACHMENTS: more than 1 attachment in a single messsage? They are processed twice. Fixed   (v18b9)\n- ATTACHMENTS: 0 byte file: don't download the file, only show the filename/size    (v18b3)\n- EXPORT: set outputjson to \"json\"-\u003e the outputToText variable is not set.     (v18b9)\n- EXPORT: to .txt file: full of HTML tags for mentions + divs: strip!  (v18b8)\n- HTML: Unnessecary spaces after filename in img link      (v18b)\n- HYPERLINKS: Markdown ('embedded') hyperlinks are not working (no link)    (v18b8)\n- HYPERLINKS: Markdown hyperlinks did not open in a new window:    (v18b8)\n- INI: Outputfilename (when configured in the .ini) is not being used!     (v18b)\n- INI: If maxmessages is not set it will use the default: 1000    (v18b3)\n- IMAGES: If a filename/image contains a colon (':'), the image linking doesn't work     (v18a2)\n- IMAGES: Depending on the size (very wide, very high) images are not resized correctly.      (v18a2)\n- MAX MSG when limiting max messages by days, it would not show at the top of the screen.    (v18b7)\n- MAX MSG maxMessages not displayed in HTML header (setting)   (v18b7)\n- MAX MSG: if you set the max age to 10 days and no messages are \u003c10 days old: error.   (v18b8)\n- NOTIFY: Beep function printed 3 empty lines. fixed with end/flush in print      (v18a2)\n\n\n## Limitations in v19\n* If _HTML code_ is written as TEXT (without marking it as code using  ```), the message may not be displayed or it could mess up the lay-out for remaining messages\n* ~~PRINTing the HTML page to PDF (for example) will mess up lay-out (fixed in v0.19a)~~\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDJF3%2FWebex-Message-space-archiver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDJF3%2FWebex-Message-space-archiver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDJF3%2FWebex-Message-space-archiver/lists"}