11# -*- coding: utf-8 -*-
2- # Copyright (c) 2022-2023 Manuel Schneider
32
4- from albert import *
3+ import json
4+ from pathlib import Path
55from time import sleep
66from urllib import request , parse
7- import json
8- import os
97
10- md_iid = '1.0'
11- md_version = "1.3"
8+ from albert import *
9+
10+ md_iid = '2.0'
11+ md_version = "1.4"
1212md_name = "ArchLinux Wiki"
1313md_description = "Search ArchLinux Wiki articles"
1414md_license = "BSD-3"
1515md_url = "https://github.com/albertlauncher/python/tree/master/awiki"
16- md_maintainers = "@manuelschneid3r"
1716
1817
19- class Plugin (TriggerQueryHandler ):
18+ class Plugin (PluginInstance , TriggerQueryHandler ):
2019
21- icon = [os .path .dirname (__file__ ) + "/ArchWiki.svg" ]
2220 baseurl = 'https://wiki.archlinux.org/api.php'
2321 search_url = "https://wiki.archlinux.org/index.php?search=%s"
2422 user_agent = "org.albert.extension.python.archwiki"
2523
26- def id (self ):
27- return md_id
28-
29- def name (self ):
30- return md_name
31-
32- def description (self ):
33- return md_description
34-
35- def defaultTrigger (self ):
36- return "awiki "
24+ def __init__ (self ):
25+ TriggerQueryHandler .__init__ (self ,
26+ id = md_id ,
27+ name = md_name ,
28+ description = md_description ,
29+ defaultTrigger = 'awiki ' )
30+ PluginInstance .__init__ (self , extensions = [self ])
31+ self .iconUrls = [f"file:{ Path (__file__ ).parent } /arch.svg" ]
3732
3833 def handleTriggerQuery (self , query ):
3934 stripped = query .string .strip ()
4035 if stripped :
4136
4237 # avoid rate limiting
43- for number in range (50 ):
38+ for _ in range (50 ):
4439 sleep (0.01 )
4540 if not query .isValid :
46- return ;
41+ return
4742
4843 results = []
4944
@@ -65,25 +60,25 @@ def handleTriggerQuery(self, query):
6560 summary = data [2 ][i ]
6661 url = data [3 ][i ]
6762
68- results .append (Item (id = md_id ,
69- text = title ,
70- subtext = summary if summary else url ,
71- icon = self .icon ,
72- actions = [
73- Action ("open" , "Open article" , lambda u = url : openUrl (u )),
74- Action ("copy" , "Copy URL" , lambda u = url : setClipboardText (u ))
75- ]))
63+ results .append (StandardItem (id = md_id ,
64+ text = title ,
65+ subtext = summary if summary else url ,
66+ iconUrls = self .iconUrls ,
67+ actions = [
68+ Action ("open" , "Open article" , lambda u = url : openUrl (u )),
69+ Action ("copy" , "Copy URL" , lambda u = url : setClipboardText (u ))
70+ ]))
7671 if results :
7772 query .add (results )
7873 else :
79- query .add (Item (id = md_id ,
80- text = "Search '%s'" % query .string ,
81- subtext = "No results. Start online search on Arch Wiki" ,
82- icon = self .icon ,
83- actions = [Action ("search" , "Open search" , lambda s = query .string : self .search_url % s )]))
74+ query .add (StandardItem (id = md_id ,
75+ text = "Search '%s'" % query .string ,
76+ subtext = "No results. Start online search on Arch Wiki" ,
77+ iconUrls = self .iconUrls ,
78+ actions = [Action ("search" , "Open search" , lambda s = query .string : self .search_url % s )]))
8479
8580 else :
86- query .add (Item (id = md_id ,
87- text = md_name ,
88- icon = self .icon ,
89- subtext = "Enter a query to search on the Arch Wiki" ))
81+ query .add (StandardItem (id = md_id ,
82+ text = md_name ,
83+ iconUrls = self .iconUrls ,
84+ subtext = "Enter a query to search on the Arch Wiki" ))
0 commit comments