List of commits:
Subject Hash Author Date (UTC)
feedtree: prepare custom curl handling 70eb6c5f40d698b4ad017752f54daed1a09647d5 Alex 2022-07-26 02:01:24
feedtree: explicitly mark when GroupFetch is ready and show time spent 83fe01fb883fcc66849da02eecbdc61f6ea52b99 Alex 2022-07-25 01:18:47
feedtree: rework fetcher to not rely on guids 760fc788f0297847469290a5c75e3df95da3cfe8 Alex 2022-07-24 22:25:26
IvoRSS: change version to 1.1 It's time to release! 8f883741fce50dc3e9c869c2e41e1fb8b67b0048 Alex 2022-07-24 04:19:12
feeds: add even more Amiga related feeds b19a07dcdd1f198e6fff88f13c16962e6ab73084 Alex 2022-07-24 04:18:08
feedtree: reload rss channel whenever user decides to fetch 52c6dde8b832490b873b02d2157da3bc81b73e54 Alex 2022-07-24 04:10:09
lurk: seru na to, parser spouštím pro každej link zvlášť 5b0a792527510716e36da04e36689765907500c2 Alex 2022-07-24 02:06:56
do not let text labels to explode eeec1ccb6b0c3c90e2e0803021817a07489c1093 Alex 2022-07-24 01:36:32
IvoR: use title and guid as unique identificators. Hash them to avoid numerous issues with serializer 5a6fe4419c9cfdd0a03e18dfb45cf6fb47fff582 Alex 2022-07-24 01:16:36
lurk: use raw encoding where is possible. Use italic font style for possible rss channels 102d33ee8611a392b048d4c640bf27d9ad93d6a8 Alex 2022-07-23 23:34:34
feedtree: bacha na mezery v indexech d286760ac19d7b5cf4c3b591a2818f37f2ece3d7 Alex 2022-07-23 23:32:34
textfiled: malinkatá puntičkářská změna 4dc5b68943d1b28fa4f83bd4289e3887668b668f Alex 2022-07-23 21:58:13
feedtree: guid-less channels workaround 99e7e725b1e5ec6a3682b2fbd670f3a719d5727c Alex 2022-07-23 02:14:23
lurk: rework links parsing 27d2aa01be8796427acc9753918a25ca336a523f Alex 2022-07-23 01:50:51
lurk: accept more possible MIME types 851689d4324eea12e0c2ecca65557a130006d253 Alex 2022-07-22 23:58:37
pridat mezeru 9e6e85bc191e313bbe842052bd92671bfece74c1 Alex 2022-07-21 02:18:44
add Readme file 0a25299e82fc60cd3d4f2b1fdc0c7047b299bf78 Alex 2022-07-20 01:54:53
add LICENSE file f073c68dbdfd517bdf39f2700369ecfb37f74a2d Alex 2022-07-19 10:12:47
IvoRSS: fix version number 8488a8ae206d0ed23ed9a434e25db373168e36ed Alex 2022-07-19 10:09:34
clean up feeds f53c9a65d7439041b12d204d1127026935baedf9 Alex 2022-07-19 09:59:11
Commit 70eb6c5f40d698b4ad017752f54daed1a09647d5 - feedtree: prepare custom curl handling
Author: Alex
Author date (UTC): 2022-07-26 02:01
Committer name: Alex
Committer date (UTC): 2022-07-26 02:01
Parent(s): 83fe01fb883fcc66849da02eecbdc61f6ea52b99
Signer:
Signing key:
Signing status: N
Tree: df60a63cb013b471d082cf956946f468b6dac539
File Lines added Lines deleted
feedtree.hws 47 17
File feedtree.hws changed (mode: 100755) (index 4bd0448..0211706)
... ... Function p_FetchCurrent()
74 74 If t.Node If t.Node
75 75 p_TimeFetch(t.muiid) p_TimeFetch(t.muiid)
76 76 Else Else
77 Local status = p_Fetch(t.id)
77 Local status = p_Fetch(t.id, False)
78 78 If status = #FEED_STATUS_NEW If status = #FEED_STATUS_NEW
79 79 p_MarkFeed(t.id, #FEED_STATUS_READ) p_MarkFeed(t.id, #FEED_STATUS_READ)
80 80 Ivor:Load(t.id) Ivor:Load(t.id)
 
... ... EndFunction
123 123 ;č označit buď jako nové, nebo jako přečtené ;č označit buď jako nové, nebo jako přečtené
124 124 ;č smí se posílat JENOM fidy, nikoliv skupiny ;č smí se posílat JENOM fidy, nikoliv skupiny
125 125 Function p_FetchFeed(feedid$) Function p_FetchFeed(feedid$)
126 Local status = p_Fetch(feedid$)
126 Local status = p_Fetch(feedid$, True)
127 127 If status = #FEED_STATUS_SUCCESS If status = #FEED_STATUS_SUCCESS
128 128 If fd_Get(feedid$, "status") = #FEED_STATUS_NEW Then Return() If fd_Get(feedid$, "status") = #FEED_STATUS_NEW Then Return()
129 129 status = #FEED_STATUS_READ status = #FEED_STATUS_READ
 
... ... EndFunction
274 274 #FEED_STATUS_INTERRUPTED #FEED_STATUS_INTERRUPTED
275 275 #FEED_STATUS_ERROR #FEED_STATUS_ERROR
276 276 */ */
277 Function p_Fetch(url$)
278 /*e = hurl.Easy({URL = url$, FollowLocation = True})
279 ;e:SetOpt_Accept_Encoding("")
280 ;e:SetOpt_AutoReferer(1)
281 e:SetOpt_FileTime(1)
282 e:SetOpt_Nobody(1)
283 Local err_code = ?e:Perform()
284 p_Replay(err_code, "Performed!")
277 Function p_Fetch(url$, fast)
278 ;č Já se bojím. Co kdyby nějaký server posílal blbosti?
279 ;č Uživatel bude cvakat Fetch a mu jen "Download skipped"?
280 Local timestamp = -2
281 ;č objevilo, že TCP handshake je šíleně dlouhá záležitost
282 ;č tohle, jako, skoro dvojnásobně prodlužuje stahování
283 ;č Na druhou stranu, psát v Hollywoodu něco jako kólbeky,
284 ;č které by alokovaly buffery je pěkný nesmysl
285 If fast And fd_Get(url$, "timestamp") > -1
286 e = hurl.Easy({URL = url$, FollowLocation = True})
287 ;e:SetOpt_Accept_Encoding("")
288 ;e:SetOpt_AutoReferer(1)
289 e:SetOpt_FileTime(1)
290 e:SetOpt_FailOnError(1)
291 e:SetOpt_Forbid_Reuse(1)
292 ;e:SetOpt_SSL_FalseStart(1)
293 ;e:SetOpt_TCP_FastOpen(1)
294 Function p_WriteData(data$)
295 DebugPrint("Data: ", data$)
296 EndFunction
297 e:SetOpt_WriteFunction(p_WriteData)
298 e:SetOpt_Nobody(1)
299 Local err_code = ?e:Perform()
300 timestamp = e:GetInfo_FileTime()
301 ; destroy easy object
302 e:Close()
303 DebugPrint(timestamp, fd_Get(url$, "timestamp"), url$)
304
305 If timestamp > 0 And fd_Get(url$, "timestamp") = timestamp
306 mui.Set("status", "Contents", "Skipped downloading from " ..url$)
307 Return(#FEED_STATUS_SUCCESS)
308 ;č Když server nechce dát čas změny, tak si to zapíšeme
309 ;č a příště už na něj nebudeme utrácet čas
310 ElseIf timestamp < 0
311 fd_Set(url$, "timestamp", timestamp)
312 EndIf
313 EndIf
285 314
286 Local timep = e:GetInfo_FileTime()
287 ; destroy easy object
288 e:Close()
289 DebugPrint(timep)
290 */
291 315 ;č zjednodušená kontrola, pokud řetězec obsahuje procenta, ;č zjednodušená kontrola, pokud řetězec obsahuje procenta,
292 316 ;č považujeme ho za "eskejpnutý". ;č považujeme ho za "eskejpnutý".
293 317 ;č Na případ, kdy uživatel strčí do URLu osamělý znak procenta vysereme ;č Na případ, kdy uživatel strčí do URLu osamělý znak procenta vysereme
 
... ... Function p_Fetch(url$)
308 332 p_Replay(err_code, "Updated XML file from " ..url$ .." saved") p_Replay(err_code, "Updated XML file from " ..url$ .." saved")
309 333 If err_code <> #ERR_NONE If err_code <> #ERR_NONE
310 334 ;č Aha... Tak zpětně vynulujeme čeksumu, aby příště zkusil to uložit znovu ;č Aha... Tak zpětně vynulujeme čeksumu, aby příště zkusil to uložit znovu
311 ;fd_Set(url$, "timestamp", 0)
312 335 fd_Set(url$, "checksum", False) fd_Set(url$, "checksum", False)
313 336 Return(#FEED_STATUS_ERROR) Return(#FEED_STATUS_ERROR)
314 337 EndIf EndIf
315 338
339 ;č teprve zde uložíme otisk času
340 ;č Pěkně si uvědomuji, že případná chyba v tomto kódu zablokuje
341 ;č uživateli normální stahování
342 If fast Then fd_Set(url$, "timestamp", timestamp)
343
344
345
316 346 ;č kolikrát weby dodají do RSS nějaký BuildDate, ;č kolikrát weby dodají do RSS nějaký BuildDate,
317 347 ;č kterým se RSS formálně změní. ;č kterým se RSS formálně změní.
318 348 ;č Takže zde, na místě, když ještě máme xml v ruce, ;č Takže zde, na místě, když ještě máme xml v ruce,
 
... ... Function p_Fetch(url$)
349 379 If fd_isEqualOrSet(url$, "guidsum", guidsum) If fd_isEqualOrSet(url$, "guidsum", guidsum)
350 380 Return(#FEED_STATUS_SUCCESS) Return(#FEED_STATUS_SUCCESS)
351 381 EndIf EndIf
352
382 DebugPrint(url$, guidsum)
353 383 mui.Set("status", "Contents", "\27".."5\27b" .. url$ .. " Updated!") mui.Set("status", "Contents", "\27".."5\27b" .. url$ .. " Updated!")
354 384 Return(#FEED_STATUS_NEW) Return(#FEED_STATUS_NEW)
355 385 EndFunction EndFunction
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/iam-git/IvoRSS

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/iam-git/IvoRSS

Clone this repository using git:
git clone git://git.rocketgit.com/user/iam-git/IvoRSS

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main