Kennen Sie für iPhone- und iPad-Benutzer eine App namens Pythonista3, mit der Sie Python auf iOS-Geräten entwickeln können? Wenn Sie nur Python ausführen möchten, empfehle ich persönlich Carnets --Jupyter. Mit Pythonista3 können Sie auch Funktionen entwickeln, die von außerhalb von Abri verwendet werden können, z. B. verschiedene Verknüpfungen und Widgets, und Spiele erstellen.
Diesmal mit einem solchen Pythonista 3 ** Ein Widget, das Qiita-Trends anzeigt und die Seite in Safari öffnet, wenn Sie darauf klicken ** Ich habe erstellt, also möchte ich es vorstellen.
Im Fall dieses Widgets kann der Inhalt von "Launcher.py" unter "Beispiel / Widget" fast so verwendet werden, wie er ist.
・ Möglichkeit, Trendtitel und URLs von der Qiita-Startseite abzurufen ・ Eine Funktion zum vorübergehenden Speichern der erfassten Informationen ・ Eine Funktion zum erneuten Zugriff auf Qiita und zum Aktualisieren der Informationen, wenn seit dem Erfassen der vorherigen Informationen eine bestimmte Zeit vergangen ist.
Hinzugefügt.
Die Anzahl der Spalten, die Anzahl der Zeilen im gefalteten Zustand und die Schriftgrößenvariablen werden nach der Importanweisung zusammengefasst, sodass Sie das Layout nach Ihren Wünschen anpassen können. Es ist eng und schwer zu drücken, aber wenn Sie die Anzahl der Zeilen auf 5 oder mehr einstellen, können Sie alle täglichen Trends anzeigen (30 Fälle).
qiita_trends_widget.py
import re
import requests
import appex, ui
import os
from math import ceil, floor
import webbrowser
import pickle
import time
COLS = 1
ROWS = 3
fontsize = 12
def get_trend():
trends = []
text = requests.get( 'https://qiita.com/').text
titles = re.findall('title":".{10,100}?",',text)
urls = re.findall('uuid":".{10,50}?",',text)
for i in range(30):
trends.append({'title':'', 'url':''})
trends[i]['title'] = titles[i][18:-7]
trends[i]['url'] = 'https://qiita.com/items/'+urls[i][17:-7]
trends.append({'lastUpdate':time.time()})
with open("trends.pickle", "wb") as f:
pickle.dump(trends, f)
return trends
class LauncherView (ui.View):
def __init__(self, shortcuts, *args, **kwargs):
row_height = 110 / ROWS
super().__init__(self, frame=(0, 0, 300, ceil(len(shortcuts[:-1]) / COLS) * row_height), *args, **kwargs)
self.buttons = []
for s in shortcuts[:-1]:
btn = ui.Button(title=' ' + s['title'], name=s['url'], action=self.button_action, bg_color='#73c239', tint_color='#fff', corner_radius=7, font=('<System-Bold>',fontsize))
self.add_subview(btn)
self.buttons.append(btn)
def layout(self):
bw = (self.width - 10) / COLS
bh = floor(self.height / ROWS) if self.height <= 130 else floor(110 / ROWS)
for i, btn in enumerate(self.buttons):
btn.frame = ui.Rect(i%COLS * bw + 5, i//COLS * bh, bw, bh).inset(2, 2)
btn.alpha = 1 if btn.frame.max_y < self.height else 0
def button_action(self, sender):
webbrowser.open(sender.name)
def main():
widget_name = __file__ + str(os.stat(__file__).st_mtime)
v = appex.get_widget_view()
if v is None or v.name != widget_name:
try:
with open("trends.pickle", "rb") as f:
SHORTCUT = pickle.load(f)
except:
SHORTCUT = [{'lastUpdate':time.time() - 86400}]
with open("trends.pickle", "wb") as f:
pickle.dump(SHORTCUT, f)
SHORTCUTS = get_trend() if time.time() - SHORTCUT[-1]['lastUpdate'] > 1800 else SHORTCUT #1800 Sekunden vom letzten Mal(Ein halbe Stunde)Update nach dem oben genannten
v = LauncherView(SHORTCUTS)
v.name = widget_name
appex.set_widget_view(v)
if __name__ == '__main__':
main()
** Pythonista3 ist gut ** (Ich hoffe, es können mehr Pakete verwendet werden ...)
Recommended Posts